diff options
author | Eric Andersen <andersen@codepoet.org> | 2002-11-08 09:14:02 +0000 |
---|---|---|
committer | Eric Andersen <andersen@codepoet.org> | 2002-11-08 09:14:02 +0000 |
commit | 8406059b605392719761400ecfecf08f274a978a (patch) | |
tree | d62a5d888343decd07b7063900226637431c92fe | |
parent | 1826a77bb87aee9d858cfe4f46b9d8eedb98c3fe (diff) |
Patch from Stefan Allius for libgcc multilib support
this is the last patch, we need to make the support of multitarget libgcc
complete.
---------------------------------
In ldso/ldso/Makefile
I added the CPU_LDFLAGS-y to the LDFLAGS
---------------------------------
In libc/Makefile
I set the LDFLAGS for the script get-needed-objects.sh with CPU_LDFLAGS-y
---------------------------------
In extra/scripts/get-needed-object.sh
we now use the LIBGCC from Rules.mak and call LD with LDFLAGS
(==CPU_LDFLAGS-y). Addtionally I grep the NM output, to fix the unresolved
external __GLOBAL_OFFSET_TABLE__ on SuperH targets.
---------------------------------
-rwxr-xr-x | extra/scripts/get-needed-libgcc-objects.sh | 8 | ||||
-rw-r--r-- | ldso/ldso/Makefile | 2 | ||||
-rw-r--r-- | libc/Makefile | 2 |
3 files changed, 5 insertions, 7 deletions
diff --git a/extra/scripts/get-needed-libgcc-objects.sh b/extra/scripts/get-needed-libgcc-objects.sh index f8d2da4d2..588634c8d 100755 --- a/extra/scripts/get-needed-libgcc-objects.sh +++ b/extra/scripts/get-needed-libgcc-objects.sh @@ -15,12 +15,10 @@ #Enable this when debugging #set -x -LIBGCC=`$CC -print-libgcc-file-name` - echo Finding missing symbols in libc.a ... echo " partial linking..." rm -f libc.ldr -$LD -r -o libc.ldr ../../lib/crt0.o ../../lib/crti.o ../../lib/crtn.o --whole-archive ../libc.a +$LD $LDFLAGS -r -o libc.ldr ../../lib/crt0.o ../../lib/crti.o ../../lib/crtn.o --whole-archive ../libc.a if $NM --undefined-only libc.ldr 2>&1 | grep -v "^main$" | grep -v "^_GLOBAL_OFFSET_TABLE_$" | grep -v "_gp_disp" > sym.need ; then EXIT_WITH_ERROR=0 @@ -54,9 +52,9 @@ touch obj.need.0 cmp -s obj.need obj.need.0 ; state=$? while [ -s obj.need ] && [ $state -ne 0 ] ; do - (cd tmp-gcc && cat ../obj.need | sort | uniq | xargs $LD -r -o ../libgcc.ldr) + (cd tmp-gcc && cat ../obj.need | sort | uniq | xargs $LD $LDFLAGS -r -o ../libgcc.ldr) cp obj.need obj.need.0 - if $NM --undefined-only libgcc.ldr > sym.need 2>&1 ; then + if $NM --undefined-only libgcc.ldr | grep -v "^_GLOBAL_OFFSET_TABLE_$" > sym.need 2>&1 ; then for SYM in `cat sym.need | sed -e 's/ U //g'` ; do if $NM -s $LIBGCC 2>&1 | grep -q $SYM" in " ; then $NM -s $LIBGCC 2>&1 | grep $SYM" in " | cut -d' ' -f3 >> obj.need diff --git a/ldso/ldso/Makefile b/ldso/ldso/Makefile index e3c03c003..53c3c6385 100644 --- a/ldso/ldso/Makefile +++ b/ldso/ldso/Makefile @@ -31,7 +31,7 @@ LDSO_FULLNAME=ld-uClibc-$(MAJOR_VERSION).$(MINOR_VERSION).$(SUBLEVEL).so XXFLAGS+=-DUCLIBC_TARGET_PREFIX=\"$(TARGET_PREFIX)\" \ -DUCLIBC_DEVEL_PREFIX=\"$(DEVEL_PREFIX)\" \ -DUCLIBC_BUILD_DIR=\"$(shell cd $(TOPDIR) && pwd)\" -LDFLAGS=-shared --warn-common --export-dynamic --sort-common \ +LDFLAGS=$(CPU_LDFLAGS-y) -shared --warn-common --export-dynamic --sort-common \ -z combreloc --discard-locals --discard-all CSRC= ldso.c #hash.c readelflib1.c $(TARGET_ARCH)/elfinterp.c COBJS=$(patsubst %.c,%.o, $(CSRC)) diff --git a/libc/Makefile b/libc/Makefile index f5ee035fa..595f69e4a 100644 --- a/libc/Makefile +++ b/libc/Makefile @@ -49,7 +49,7 @@ shared: $(TOPDIR)lib/$(LIBNAME) @rm -rf tmp @mkdir tmp $(AR) rv ./tmp/libgcc-need.a - @(cd tmp && CC=$(CC) LD=$(LD) NM=$(NM) AR=$(AR) LIBGCC=$(LIBGCC) \ + @(cd tmp && CC=$(CC) LD=$(LD) LDFLAGS=$(CPU_LDFLAGS-y) NM=$(NM) AR=$(AR) LIBGCC=$(LIBGCC) \ /bin/sh $(TOPDIR)../extra/scripts/get-needed-libgcc-objects.sh) $(LD) $(LDFLAGS) $(VERSION_SCRIPT) -soname=$(SHARED_MAJORNAME) -o $(SHARED_FULLNAME) \ --whole-archive ./tmp/libgcc-need.a $(LIBNAME) --no-whole-archive \ |