41 Commits

Author SHA1 Message Date
emaste
2d91a0833d rename ARM's libunwind.S to to avoid conflict with llvm libunwind
llvm libunwind includes a libunwind.cpp, but on ARM libunwind.S is found
first in .PATH. Rename the latter one, since it is not going to be
updated again.

Reviewed by:	andrew
MFC after:	3 days
Sponsored by:	The FreeBSD Foundation
Differential Revision:	https://reviews.freebsd.org/D7162
2016-07-27 16:34:19 +00:00
kib
2b6ac44d5d Annotate arm userspace assembler sources stating their tolerance to
the non-executable stack.

Reviewed by:	andrew
Sponsored by:	The FreeBSD Foundation
2015-09-29 16:09:58 +00:00
andrew
8dbe499117 Use a spelling of .thumb clang understands. 2015-05-31 07:28:34 +00:00
andrew
1a44efb220 FreeBSD expects _Unwind_GetGR, _Unwind_SetGR, and _Unwind_SetIP to be
symbols and not macros. Make this so. This fixes a few ports that try to
link against these functions but fail as they previously didn't exist.
2015-02-01 09:50:33 +00:00
ian
b2b5ecce72 Allow -march=armv7a on the gcc command line, for compatibility with clang.
This will result in __ARM_ARCH_7A__ being defined during the compile.

When compiling with gcc, it will still only generate armv6 opcodes itself,
but should pass the arch to gas so that inline asm can use v7 opcodes.
2014-12-21 23:45:13 +00:00
andrew
93293fc1c4 Use the floating-point instruction on ARMv7 as the clang 3.5 integrated
assembler doesn't allow these two instructions to use co-processor 11.

MFC after:	1 Week
Sponsored by:	ABT Systems Ltd
2014-12-01 21:13:47 +00:00
andrew
1083c14349 There is no need to use FUNC_END with aeabi_ldiv0 or aeabi_idiv0 as they
are aliases.

Sponsored by:	ABT Systems Ltd
2014-11-30 17:29:49 +00:00
ian
c29056c2b7 Add FreeBSD to the list of environments that needs to handle R_ARM_TARGET2
relocations in unwind data as pc-relative indirect references.

MFC after:	1 week
2014-07-22 20:49:58 +00:00
andrew
5cac9c644a Fix gcc with EABI on big-endian ARM by setting the endian correctly.
Without this gcc would generate byte loads for a little-endian core.

MFC after:	1 week
2014-01-12 15:35:03 +00:00
pfg
e2a7b55743 gcc: small enhancements for the arm support.
Very small updates: fixes GCC-PR target/31152

Tested by building the cross-compiler.

Obtained from:	gcc 4.3 (rev. r118461, 125973: GPLv2)
MFC after:	2 weeks
2013-12-25 16:01:48 +00:00
andrew
59c30969f9 On ARM EABI double precision floating point values are stored in the
endian the CPU is in, i.e. little-endian on most ARM cores.

This allows ARMv4 and ARMv5 boards to boot with the ARM EABI.
2013-09-07 14:04:10 +00:00
andrew
6c258edb19 Implement _Unwind_GetIP and _Unwind_GetIPInfo as functions as that is what
we expect on FreeBSD. The implementation is based on the existing macros.
2013-08-31 14:56:09 +00:00
andrew
722b98a4e4 Bring in gcc r128087 to add support for _Unwind_Backtrace on ARM. This is
prior to the licence change so is under the GPLv2.
2013-08-31 14:53:19 +00:00
andrew
190be65c14 Add #undef TARGET_DEFAULT back as it shouldn't have been removed in r245539 2013-02-04 09:42:12 +00:00
andrew
897e2fb505 Allow the unwind functions int libgcc_s to interact correctly with libthr.
_Unwind_ForcedUnwind in libgcc_s takes as one of it's parameters a stop
function to tell it when to stop unwinding. One of the stop function's
parameters is a _Unwind_Exception_Class. On most architectures this is an
int64_t, however on ARM EABI the gcc developers have made this a char array
with 8 items. While both of these take the same space they are passed into
the stop function differently, an int64_t is passed in in registers r2 and
r3, while the char[8] is passed in as a pointer to the first item in
register r2.

Because libthr expects the value to be an int64_t we would get incorrect
results when it passes a function that take an int64_t but libgcc passes in
a pointer to a char array including crashing.

The fix is to update libgcc_s to make it pass an int64_t to the stop
function and to libstdc++ as it expects _Unwind_Exception_Class to be an
array.
2013-02-04 09:28:36 +00:00
andrew
9b858bb6f0 Add compiler support for the ARM EABI.
ARM EABI support is disabled by default and can be enabled by setting
WITH_ARM_EABI when building, however only the kernel-toolchain target will
work with this flag until the rest of the support is added.
2013-01-17 05:56:28 +00:00
andrew
37972b84c0 Switch the default CPU to an arm9. This removes compiler support for the
unsupported 26-bit addressing mode. This change is required for moving to
the ARM EABI.
2013-01-14 08:39:48 +00:00
andrew
ebd063486f Don't define CTORS_SECTION_ASM_OP and DTORS_SECTION_ASM_OP on arm when
built with clang. When these are defined the lists are defined similar to:

asm(".section .ctors");
STATIC func_ptr __CTOR_LIST__[1] = { (func_ptr) (-1) };
asm(".section .dtors");
STATIC func_ptr __DTOR_LIST__[1] = { (func_ptr) (-1) };

The problem is clang will move the two arrays out of the .ctors and .dtors
sections causing these sections to contain a single null address. By not
defining these macros we use the version of the code that places the arrays
is their sections by using __attribute__((section(".ctors"))) and similar
for .dtors.

Submitted by:	Daisuke Aoyama <aoyama AT peach.ne.jp>
2012-12-15 21:24:31 +00:00
gonzo
b501ab9dc9 Merging of projects/armv6, part 3
r238211:
Support TARGET_ARCH=armv6 and TARGET_ARCH=armv6eb

This adds a new TARGET_ARCH for building on ARM
processors that support the ARMv6K multiprocessor
extensions.  In particular, these processors have
better support for TLS and mutex operations.

This mostly touches a lot of Makefiles to extend
existing patterns for inferring CPUARCH from ARCH.
It also configures:
 * GCC to default to arm1176jz-s
 * GCC to predefine __FreeBSD_ARCH_armv6__
 * gas to default to ARM_ARCH_V6K
 * uname -p to return 'armv6'
 * make so that MACHINE_ARCH defaults to 'armv6'
It also changes a number of headers to use
the compiler __ARM_ARCH_XXX__ macros to configure
processor-specific support routines.

Submitted by:	Tim Kientzle <kientzle@freebsd.org>
2012-08-15 03:21:56 +00:00
kib
7b143adfa2 Pass --enable-new-dtags to the linker invocation by default. If
desired, one can turn off the generation of post-ELF standard dtags by
overriding it with --disable-new-dtags after the default switch.

Immediate effect of the change is that -rpath path is now stored both
in DT_RPATH and DT_RUNPATH tags, which is the right way to provide
rpath for dynamic linker supporting DT_RUNPATH per specification.

Reviewed by:	kan
MFC after:	1 month
2012-07-15 10:54:10 +00:00
marius
48e8b1fad6 Merge r236137 from x86:
Enable GNU hash generation for dynamic ELF binaries.
2012-06-14 20:29:49 +00:00
fabient
3fcd15923b Import gcc fix for -fstack-protector that produces segfaulting
binaries on arm/armel.

Related gcc bug:
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=35965

PR: 161128
MFC after: 1 week
2011-11-09 15:59:02 +00:00
obrien
5bde7108b7 If arm.h is going to define WCHAR_TYPE, don't assume WCHAR_TYPE_SIZE
doesn't already have a definition.

Reported by:	imp
2008-09-10 15:47:31 +00:00
kan
f3fdf8c006 This commit was generated by cvs2svn to compensate for changes in r171825,
which included commits to RCS files with non-trunk default branches.
2007-08-14 02:45:23 +00:00
kan
d2ff90cc58 GCC 4.2.1 release. 2007-08-14 02:45:23 +00:00
cognet
ae26a6fdf6 FreeBSD expects VFP, so use that as the default FPU.
Reviewed by:	kan
2007-05-21 08:38:42 +00:00
kan
cd1d71d72c Merge arm-freebsd.h.diff directly into the target file. Maintaining
separate patch is much more painful than taking this file off the
vendor branch.
2007-05-19 03:11:26 +00:00
kan
1f9ea4d0a4 GCC 4.2.0 release. 2007-05-19 01:19:51 +00:00
kan
ab6c6e434e Gcc 3.4.6 as of 2006/08/25 #116475. 2006-08-26 21:29:10 +00:00
kan
2156e40a83 Gcc 3.4.4 release. 2005-06-03 03:28:44 +00:00
kan
d42790ccc0 Remove files that are not part of GCC 3.4.x from the vendor branch. 2004-08-12 16:41:42 +00:00
kan
5e00ec74d8 Gcc 3.4.2 20040728. 2004-07-28 03:11:36 +00:00
kan
79bbe23c4a Remove files not part of GCC 3.3.x. 2004-01-05 20:27:51 +00:00
kan
b09448931a Gcc 3.3.3 20031106. 2003-11-07 02:43:04 +00:00
kan
b2a8872fbe Gcc 3.3.1-pre as of 2003-07-11. 2003-07-11 03:40:53 +00:00
kan
793833d7a7 Gcc 3.2.2-release. 2003-02-10 05:41:50 +00:00
obrien
7a1080fa5c Gcc 3.2.1 release virgin vendor import. (19-Nov-2002) 2002-12-04 15:42:16 +00:00
kan
92318bc515 Gcc 3.2.1-prerelease from the FSF anoncvs repo gcc-3_2-branch on October 9th 2002 20:15 EST. 2002-10-10 04:40:18 +00:00
kan
2e25f3a6c5 Gcc 3.2.1-prerelease from the FSF anoncvs repo gcc-3_2-branch on 1-Sep-2002 00:00:01 EDT. 2002-09-01 20:38:57 +00:00
obrien
c8f5fc7032 Gcc 3.1.0 pre-release from the FSF anoncvs repo on 9-May-2002 15:57:15 EDT. 2002-05-09 20:02:13 +00:00
obrien
c9ab9ae440 Enlist the FreeBSD-CURRENT users as testers of what is to become Gcc 3.1.0.
These bits are taken from the FSF anoncvs repo on 1-Feb-2002 08:20 PST.
2002-02-01 18:16:02 +00:00