Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 10 Dec 2011 07:48:50 +0000 (UTC)
From:      Andrew Turner <andrew@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-projects@freebsd.org
Subject:   svn commit: r228389 - in projects/arm_eabi: contrib/gcc/config/arm gnu/lib/libgcc gnu/usr.bin/cc/cc_tools
Message-ID:  <201112100748.pBA7moiw072544@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: andrew
Date: Sat Dec 10 07:48:50 2011
New Revision: 228389
URL: http://svn.freebsd.org/changeset/base/228389

Log:
  Get GCC producing what appears to be ARM EABI binaries.
  
  Currently we are required to explicitly link against libgcc_s to get the
  __aeabi_* symbols. ld should be performing this, however its --as-needed
  argument appears to not be working.

Modified:
  projects/arm_eabi/contrib/gcc/config/arm/freebsd.h
  projects/arm_eabi/gnu/lib/libgcc/Makefile
  projects/arm_eabi/gnu/usr.bin/cc/cc_tools/Makefile

Modified: projects/arm_eabi/contrib/gcc/config/arm/freebsd.h
==============================================================================
--- projects/arm_eabi/contrib/gcc/config/arm/freebsd.h	Sat Dec 10 07:29:06 2011	(r228388)
+++ projects/arm_eabi/contrib/gcc/config/arm/freebsd.h	Sat Dec 10 07:48:50 2011	(r228389)
@@ -30,7 +30,7 @@
 
 #undef SUBTARGET_EXTRA_ASM_SPEC
 #define SUBTARGET_EXTRA_ASM_SPEC	\
-  "-matpcs %{fpic|fpie:-k} %{fPIC|fPIE:-k}"
+  "%{mabi=apcs-gnu|mabi=atpcs:-meabi=gnu;:-meabi=4} %{fpic|fpie:-k} %{fPIC|fPIE:-k}"
 
 /* Default to full FPA if -mhard-float is specified. */
 #undef SUBTARGET_ASM_FLOAT_SPEC
@@ -56,20 +56,28 @@
 /************************[  Target stuff  ]***********************************/
 
 #undef  TARGET_VERSION
-#define TARGET_VERSION fprintf (stderr, " (FreeBSD/StrongARM ELF)");
+#define TARGET_VERSION fprintf (stderr, " (FreeBSD/ARM ELF)");
 
 #ifndef TARGET_ENDIAN_DEFAULT
 #define TARGET_ENDIAN_DEFAULT 0
 #endif
 
-/* Default it to use ATPCS with soft-VFP.  */
-#undef TARGET_DEFAULT
-#define TARGET_DEFAULT			\
-  (MASK_APCS_FRAME			\
-   | TARGET_ENDIAN_DEFAULT)
+/* We default to a soft-float ABI so that binaries can run on all
+   target hardware.  */
+#undef TARGET_DEFAULT_FLOAT_ABI
+#define TARGET_DEFAULT_FLOAT_ABI ARM_FLOAT_ABI_SOFT
 
 #undef ARM_DEFAULT_ABI
-#define ARM_DEFAULT_ABI ARM_ABI_ATPCS
+#define ARM_DEFAULT_ABI ARM_ABI_AAPCS_LINUX
+
+#undef  TARGET_OS_CPP_BUILTINS
+#define TARGET_OS_CPP_BUILTINS() 		\
+  do						\
+    {						\
+      FBSD_TARGET_OS_CPP_BUILTINS();		\
+      TARGET_BPABI_CPP_BUILTINS();		\
+    }						\
+  while (false)
 
 /* Define the actual types of some ANSI-mandated types.
    Needs to agree with <machine/ansi.h>.  GCC defaults come from c-decl.c,
@@ -87,7 +95,7 @@
 #undef WCHAR_TYPE
 
 #undef  SUBTARGET_CPU_DEFAULT
-#define SUBTARGET_CPU_DEFAULT	TARGET_CPU_strongarm
+#define SUBTARGET_CPU_DEFAULT	TARGET_CPU_arm9
 
 /* FreeBSD does its profiling differently to the Acorn compiler. We
    don't need a word following the mcount call; and to skip it
@@ -121,5 +129,3 @@ do									\
   }									\
 while (0)
 
-#undef FPUTYPE_DEFAULT
-#define FPUTYPE_DEFAULT FPUTYPE_VFP

Modified: projects/arm_eabi/gnu/lib/libgcc/Makefile
==============================================================================
--- projects/arm_eabi/gnu/lib/libgcc/Makefile	Sat Dec 10 07:29:06 2011	(r228388)
+++ projects/arm_eabi/gnu/lib/libgcc/Makefile	Sat Dec 10 07:48:50 2011	(r228389)
@@ -54,7 +54,9 @@ LIB2FUNCS+= _fixuns${mode}si
 # Likewise double-word routines.
 .for mode in sf df xf tf
 LIB2FUNCS+= _fix${mode}di _fixuns${mode}di
+.if ${TARGET_CPUARCH} != "arm"
 LIB2FUNCS+= _floatdi${mode} _floatundi${mode}
+.endif
 .endfor
 
 LIB2ADD = $(LIB2FUNCS_EXTRA)
@@ -108,15 +110,18 @@ LIB2_DIVMOD_FUNCS = _divdi3 _moddi3 _udi
 CFLAGS+=	-Dinhibit_libc -fno-inline
 LIB1ASMSRC =	lib1funcs.asm
 LIB1ASMFUNCS =  _dvmd_tls _bb_init_func
-LIB2FUNCS_EXTRA = floatunsidf.c floatunsisf.c
+LIB1ASMFUNCS+=	_udivsi3 _divsi3 _umodsi3 _modsi3\
+	_call_via_rX _interwork_call_via_rX \
+	_lshrdi3 _ashrdi3 _ashldi3 \
+	_negdf2 _addsubdf3 _muldivdf3 _cmpdf2 _unorddf2 _fixdfsi _fixunsdfsi \
+	_truncdfsf2 _negsf2 _addsubsf3 _muldivsf3 _cmpsf2 _unordsf2 \
+	_fixsfsi _fixunssfsi _floatdidf _floatdisf \
+	 _aeabi_ulcmp _aeabi_ldivmod _aeabi_uldivmod
+LIB2ADDEH = unwind-arm.c libunwind.S pr-support.c unwind-c.c
+LIB2FUNCS_EXTRA = bpabi.c
 
-# Not now
-#LIB1ASMFUNCS =  _udivsi3 _divsi3 _umodsi3 _modsi3 _dvmd_tls _bb_init_func
-#LIB1ASMFUNCS+=	_call_via_rX _interwork_call_via_rX \
-#	_lshrdi3 _ashrdi3 _ashldi3 \
-#	_negdf2 _addsubdf3 _muldivdf3 _cmpdf2 _unorddf2 _fixdfsi _fixunsdfsi \
-#	_truncdfsf2 _negsf2 _addsubsf3 _muldivsf3 _cmpsf2 _unordsf2 \
-#	_fixsfsi _fixunssfsi _floatdidf _floatdisf
+# Make bpabi.So depend on bpabi.c and not bpabi.S
+bpabi.So: bpabi.c
 .endif
 
 .if ${TARGET_CPUARCH} == mips
@@ -322,6 +327,9 @@ CLEANFILES += cs-*.h option*
 SHLIB_MKMAP      = ${GCCDIR}/mkmap-symver.awk
 SHLIB_MKMAP_OPTS =
 SHLIB_MAPFILES   = ${GCCDIR}/libgcc-std.ver
+.if ${TARGET_CPUARCH} == "arm"
+SHLIB_MAPFILES  += ${GCCDIR}/config/arm/libgcc-bpabi.ver
+.endif
 VERSION_MAP      = libgcc.map
 
 libgcc.map: ${SHLIB_MKMAP} ${SHLIB_MAPFILES} ${SOBJS} ${OBJS:R:S/$/.So/}

Modified: projects/arm_eabi/gnu/usr.bin/cc/cc_tools/Makefile
==============================================================================
--- projects/arm_eabi/gnu/usr.bin/cc/cc_tools/Makefile	Sat Dec 10 07:29:06 2011	(r228388)
+++ projects/arm_eabi/gnu/usr.bin/cc/cc_tools/Makefile	Sat Dec 10 07:48:50 2011	(r228389)
@@ -51,6 +51,7 @@ TARGET_INC+=	${GCC_CPU}/elf.h
 .endif
 .if ${TARGET_CPUARCH} == "arm"
 TARGET_INC+=	${GCC_CPU}/aout.h
+TARGET_INC+=	${GCC_CPU}/bpabi.h
 .endif
 .if ${TARGET_ARCH} == "powerpc64"
 TARGET_INC+=	${GCC_CPU}/biarch64.h
@@ -358,7 +359,13 @@ gthr-default.h: ${GCCDIR}/gthr-posix.h
 
 GENSRCS+=	gthr-default.h
 
+.if ${TARGET_CPUARCH} == "arm"
+unwind.h: ${GCCDIR}/config/arm/unwind-arm.h
+.else
 unwind.h: ${GCCDIR}/unwind-generic.h
+.endif
+
+unwind.h:
 	ln -sf ${.ALLSRC} ${.TARGET}
 
 GENSRCS+=	unwind.h



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201112100748.pBA7moiw072544>