diff options
author | drow <drow@138bc75d-0d04-0410-961f-82ee72b054a4> | 2005-11-04 14:51:20 +0000 |
---|---|---|
committer | drow <drow@138bc75d-0d04-0410-961f-82ee72b054a4> | 2005-11-04 14:51:20 +0000 |
commit | ae515cebd6a707ca34bc39e89094b7838bbc3a2e (patch) | |
tree | a28603023ec39ac71341399247a92265c0d9be8d | |
parent | dffc85a4962f06496b64a5c15053dc0ae3398b61 (diff) | |
download | gcc-ae515cebd6a707ca34bc39e89094b7838bbc3a2e.tar.gz |
* config/arm/lib1funcs.asm: Don't include "libunwind.S".
* config/arm/libunwind.S: Include "lib1funcs.asm".
* config/arm/t-bpabi (LIB1ASMFUNCS): Remove _unwind.
(LIB2ADDEH): Add libunwind.S.
(LIB2ADDEHDEP): Add lib1funcs.asm.
* mklibgcc.in: Handle asm files in libgcc_eh.a.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@106488 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r-- | gcc/ChangeLog | 9 | ||||
-rw-r--r-- | gcc/config/arm/lib1funcs.asm | 1 | ||||
-rw-r--r-- | gcc/config/arm/libunwind.S | 8 | ||||
-rw-r--r-- | gcc/config/arm/t-bpabi | 6 | ||||
-rw-r--r-- | gcc/mklibgcc.in | 77 |
5 files changed, 68 insertions, 33 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index fcb4ce4a870..f24cb989195 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,12 @@ +2005-11-04 Daniel Jacobowitz <dan@codesourcery.com> + + * config/arm/lib1funcs.asm: Don't include "libunwind.S". + * config/arm/libunwind.S: Include "lib1funcs.asm". + * config/arm/t-bpabi (LIB1ASMFUNCS): Remove _unwind. + (LIB2ADDEH): Add libunwind.S. + (LIB2ADDEHDEP): Add lib1funcs.asm. + * mklibgcc.in: Handle asm files in libgcc_eh.a. + 2005-11-04 Francois-Xavier Coudert <coudert@clipper.ens.fr> PR fortran/18452 diff --git a/gcc/config/arm/lib1funcs.asm b/gcc/config/arm/lib1funcs.asm index 952eb562a92..364d9fea804 100644 --- a/gcc/config/arm/lib1funcs.asm +++ b/gcc/config/arm/lib1funcs.asm @@ -1315,5 +1315,4 @@ LSYM(Lchange_\register): #include "ieee754-df.S" #include "ieee754-sf.S" #include "bpabi.S" -#include "libunwind.S" #endif /* __symbian__ */ diff --git a/gcc/config/arm/libunwind.S b/gcc/config/arm/libunwind.S index 96044f85853..8d226df3fd2 100644 --- a/gcc/config/arm/libunwind.S +++ b/gcc/config/arm/libunwind.S @@ -1,5 +1,5 @@ /* Support functions for the unwinder. - Copyright (C) 2003, 2004 Free Software Foundation, Inc. + Copyright (C) 2003, 2004, 2005 Free Software Foundation, Inc. Contributed by Paul Brook This file is free software; you can redistribute it and/or modify it @@ -26,7 +26,9 @@ the Free Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ -#ifdef L_unwind +#ifndef __symbian__ + +#include "lib1funcs.asm" .macro UNPREFIX name .global SYM (\name) @@ -113,4 +115,4 @@ ARM_FUNC_START gnu_Unwind_Save_VFP UNWIND_WRAPPER _Unwind_RaiseException UNWIND_WRAPPER _Unwind_Resume -#endif /* L_unwind */ +#endif /* __symbian__ */ diff --git a/gcc/config/arm/t-bpabi b/gcc/config/arm/t-bpabi index 34981078e0e..b5c6a0b6171 100644 --- a/gcc/config/arm/t-bpabi +++ b/gcc/config/arm/t-bpabi @@ -1,6 +1,5 @@ # Add the bpabi.S functions. -LIB1ASMFUNCS += _aeabi_lcmp _aeabi_ulcmp _aeabi_ldivmod _aeabi_uldivmod \ - _unwind +LIB1ASMFUNCS += _aeabi_lcmp _aeabi_ulcmp _aeabi_ldivmod _aeabi_uldivmod # Add the BPABI C functions. LIB2FUNCS_EXTRA = $(srcdir)/config/arm/bpabi.c \ @@ -8,8 +7,9 @@ LIB2FUNCS_EXTRA = $(srcdir)/config/arm/bpabi.c \ UNWIND_H = $(srcdir)/config/arm/unwind-arm.h LIB2ADDEH = $(srcdir)/config/arm/unwind-arm.c \ + $(srcdir)/config/arm/libunwind.S \ $(srcdir)/config/arm/pr-support.c $(srcdir)/unwind-c.c -LIB2ADDEHDEP = $(UNWIND_H) +LIB2ADDEHDEP = $(UNWIND_H) $(srcdir)/config/$(LIB1ASMSRC) # Add the BPABI names. SHLIB_MAPFILES += $(srcdir)/config/arm/libgcc-bpabi.ver diff --git a/gcc/mklibgcc.in b/gcc/mklibgcc.in index aa61d41f433..b36d31ef511 100644 --- a/gcc/mklibgcc.in +++ b/gcc/mklibgcc.in @@ -510,36 +510,55 @@ for ml in $MULTILIBS; do # If we don't have libgcc_eh.a, only LIB2ADDEH matters. If we do, only # LIB2ADDEHSTATIC and LIB2ADDEHSHARED matter. (Usually all three are - # identical.) We do _not_ handle assembly files in this context. + # identical.) if [ "$libgcc_eh_a" ]; then for file in $LIB2ADDEHSTATIC; do - case $file in - *.c) ;; - *) echo "Unhandled extension: $file">&2; exit 1 ;; - esac - - name=`echo $file | sed -e 's/[.]c$//'` + name=`echo $file | sed -e 's/[.][cSo]$//' -e 's/[.]asm$//'` oname=`echo $name | sed -e 's,.*/,,'` out="libgcc/${dir}/${oname}${objext}" - echo $out: stmp-dirs $file $LIB2ADDEHDEP $libgcc_dep - echo " $gcc_compile" $flags '$(vis_hide)' -fexceptions -c $file -o $out + case $file in + *.c) + echo $out: stmp-dirs $file $LIB2ADDEHDEP $libgcc_dep + echo " $gcc_compile" $flags -fexceptions '$(vis_hide)' -c $file -o $out + ;; + *.asm | *.S) + # We have to compile it twice in order to establish the list + # of symbols to be marked hidden. + outV="libgcc/${dir}/${oname}.vis" + outT="libgcc/${dir}/${oname}_t${objext}" + echo ${outT}: stmp-dirs $file $LIB2ADDEHDEP $libgcc_dep + echo " $gcc_compile" $flags -xassembler-with-cpp \ + -c $file -o ${outT} + echo $out: stmp-dirs $file $LIB2ADDEHDEP $libgcc_dep $outV + echo " $gcc_compile" $flags -xassembler-with-cpp \ + -include $outV -c $file -o $out + echo "${outV}: ${outT}; \$(gen-hide-list)" + ;; + *) echo "Unhandled extension: $file">&2; exit 1 ;; + esac + echo $libgcc_eh_a: $out done for file in $LIB2ADDEHSHARED; do - case $file in - *.c) ;; - *) echo "Unhandled extension: $file">&2; exit 1 ;; - esac - - name=`echo $file | sed -e 's/[.]c$//'` + name=`echo $file | sed -e 's/[.][cSo]$//' -e 's/[.]asm$//'` oname=`echo $name | sed -e 's,.*/,,'` outS="libgcc/${dir}/${oname}_s${objext}" - echo $outS: stmp-dirs $file $LIB2ADDEHDEP $libgcc_dep - echo " $gcc_s_compile" $flags -fexceptions -c $file -o $outS + case $file in + *.c) + echo $outS: stmp-dirs $file $LIB2ADDEHDEP $libgcc_dep + echo " $gcc_s_compile" $flags -fexceptions -c $file -o $outS + ;; + *.asm | *.S) + echo $outS: stmp-dirs $file $LIB2ADDEHDEP $libgcc_dep + echo " $gcc_s_compile" $flags -xassembler-with-cpp -c $file -o $outS + ;; + *) echo "Unhandled extension: $file">&2; exit 1 ;; + esac + echo $libgcc_s_so: $outS if [ "$SHLIB_MKMAP" ]; then echo libgcc/${dir}/libgcc.map: $outS @@ -561,22 +580,28 @@ for ml in $MULTILIBS; do else # no libgcc_eh.a for file in $LIB2ADDEH; do - case $file in - *.c) ;; - *) echo "Unhandled extension: $file">&2; exit 1 ;; - esac - - name=`echo $file | sed -e 's/[.]c$//'` + name=`echo $file | sed -e 's/[.][cSo]$//' -e 's/[.]asm$//'` oname=`echo $name | sed -e 's,.*/,,'` out="libgcc/${dir}/${oname}${objext}" - echo $out: stmp-dirs $file $LIB2ADDEHDEP $libgcc_dep - echo " $gcc_compile" $flags -fexceptions '$(vis_hide)' -c $file -o $out + case $file in + *.c) + echo $out: stmp-dirs $file $LIB2ADDEHDEP $libgcc_dep + echo " $gcc_compile" $flags '$(vis_hide)' -fexceptions -c $file -o $out + ;; + *.asm | *.S) + echo $out: stmp-dirs $file $LIB2ADDEHDEP $libgcc_dep + echo " $gcc_compile" $flags -xassembler-with-cpp \ + -c $file -o $out + ;; + *) echo "Unhandled extension: $file">&2; exit 1 ;; + esac + echo $libgcc_a: $out done fi - # Again, this does not handle assembly. + # We do _not_ handle assembly files in this context. if [ "$LIBUNWIND" ]; then for file in $LIBUNWIND; do case $file in |