summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authordrow <drow@138bc75d-0d04-0410-961f-82ee72b054a4>2005-11-04 14:51:20 +0000
committerdrow <drow@138bc75d-0d04-0410-961f-82ee72b054a4>2005-11-04 14:51:20 +0000
commitae515cebd6a707ca34bc39e89094b7838bbc3a2e (patch)
treea28603023ec39ac71341399247a92265c0d9be8d
parentdffc85a4962f06496b64a5c15053dc0ae3398b61 (diff)
downloadgcc-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/ChangeLog9
-rw-r--r--gcc/config/arm/lib1funcs.asm1
-rw-r--r--gcc/config/arm/libunwind.S8
-rw-r--r--gcc/config/arm/t-bpabi6
-rw-r--r--gcc/mklibgcc.in77
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