diff options
author | Bernhard Reutner-Fischer <rep.dot.nop@gmail.com> | 2009-01-22 09:47:09 +0000 |
---|---|---|
committer | Bernhard Reutner-Fischer <rep.dot.nop@gmail.com> | 2009-01-22 09:47:09 +0000 |
commit | db5c5752566147689063340a87531ca4ac626a98 (patch) | |
tree | c1dcf4d95d5a3768b9cbf144e499202d9a6123b0 | |
parent | c5edfea211a5bc72002f027f82dba8c9d86c95e8 (diff) |
- also link librt with --as-needed and do so unconditionally to work around
bugs in gentoo's QA.
Just add UCLIBC_HAS_SSP to the "and" of link.asneeded to properly take SSP
into account, if you prefer.
-rw-r--r-- | Rules.mak | 24 | ||||
-rw-r--r-- | libnsl/Makefile.in | 7 | ||||
-rw-r--r-- | libresolv/Makefile.in | 7 | ||||
-rw-r--r-- | librt/Makefile.in | 2 |
4 files changed, 27 insertions, 13 deletions
@@ -433,6 +433,30 @@ ifndef LDPIEFLAG export LDPIEFLAG:=$(shell $(LD) --help 2>/dev/null | grep -q -- -pie && echo "-pie") endif +# Check for --as-needed support in linker +ifndef LD_FLAG_ASNEEDED +_LD_FLAG_ASNEEDED:=$(shell $(LD) --help 2>/dev/null | grep -- --as-needed) +ifneq ($(_LD_FLAG_ASNEEDED),) +export LD_FLAG_ASNEEDED:=--as-needed +endif +endif +ifndef LD_FLAG_NO_ASNEEDED +ifdef LD_FLAG_ASNEEDED +export LD_FLAG_NO_ASNEEDED:=--no-as-needed +endif +endif +ifndef CC_FLAG_ASNEEDED +ifdef LD_FLAG_ASNEEDED +export CC_FLAG_ASNEEDED:=-Wl,$(LD_FLAG_ASNEEDED) +endif +endif +ifndef CC_FLAG_NO_ASNEEDED +ifdef LD_FLAG_NO_ASNEEDED +export CC_FLAG_NO_ASNEEDED:=-Wl,$(LD_FLAG_NO_ASNEEDED) +endif +endif +link.asneeded = $(if $(and $(CC_FLAG_ASNEEDED),$(CC_FLAG_NO_ASNEEDED)),$(CC_FLAG_ASNEEDED) $(1) $(CC_FLAG_NO_ASNEEDED)) + # Check for AS_NEEDED support in linker script (binutils>=2.16.1 has it) ifndef ASNEEDED export ASNEEDED:=$(shell $(LD) --help 2>/dev/null | grep -q -- --as-needed && echo "AS_NEEDED ( $(UCLIBC_LDSO) )" || echo "$(UCLIBC_LDSO)") diff --git a/libnsl/Makefile.in b/libnsl/Makefile.in index 0995b3c4f..03a7703f2 100644 --- a/libnsl/Makefile.in +++ b/libnsl/Makefile.in @@ -7,12 +7,7 @@ CFLAGS-libnsl := -DNOT_IN_libc -DIS_IN_libnsl $(SSP_ALL_CFLAGS) -LDFLAGS-libnsl.so := $(LDFLAGS) -ifdef ASNEEDED -ifeq ($(UCLIBC_HAS_SSP),y) -LDFLAGS-libnsl.so += -Wl,--no-as-needed -lc -Wl,--as-needed -endif -endif +LDFLAGS-libnsl.so := $(LDFLAGS) $(call link.asneeded,-lc) LIBS-libnsl.so := $(LIBS) diff --git a/libresolv/Makefile.in b/libresolv/Makefile.in index 4b4d781c1..5ccfeebbf 100644 --- a/libresolv/Makefile.in +++ b/libresolv/Makefile.in @@ -7,12 +7,7 @@ CFLAGS-libresolv := -DNOT_IN_libc -DIS_IN_libresolv $(SSP_ALL_CFLAGS) -LDFLAGS-libresolv.so := $(LDFLAGS) -ifdef ASNEEDED -ifeq ($(UCLIBC_HAS_SSP),y) -LDFLAGS-libresolv.so += -Wl,--no-as-needed -lc -Wl,--as-needed -endif -endif +LDFLAGS-libresolv.so := $(LDFLAGS) $(call link.asneeded,-lc) LIBS-libresolv.so := $(LIBS) diff --git a/librt/Makefile.in b/librt/Makefile.in index 5c47960d5..1def9003d 100644 --- a/librt/Makefile.in +++ b/librt/Makefile.in @@ -7,7 +7,7 @@ CFLAGS-librt := -DNOT_IN_libc -DIS_IN_librt $(SSP_ALL_CFLAGS) -LDFLAGS-librt.so := $(LDFLAGS) +LDFLAGS-librt.so := $(LDFLAGS) $(call link.asneeded,-lc) LIBS-librt.so := $(LIBS) |