While compiling OpenADK I discovered that
there may be a case where UCLIBC_EXTRA_LDFLAGS
contains `-fpie -pie`. Linker ignores `-shared`
if `-pie` flag is passed after and produces
an executable binary instead of shared object.
This leads to linking failure because `ld-uClibc.so.1`
becomes executable instead of shared object.
`ld-uClibc.so.1` is used as one of the inputs
when linking of libc.so.1 and linking proccess fails.
To prevent this issue we need to pass extra `-shared` flag
in `link.so` target command after all other flags to overwrite
`-pie` effect.

Signed-off-by: Dmitry Chestnykh <dm.chestn...@gmail.com>
---
 Makerules | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/Makerules b/Makerules
index 1a7443c39..fe8a7916e 100644
--- a/Makerules
+++ b/Makerules
@@ -334,7 +334,7 @@ define link.so
                -Wl,-soname=$(notdir $@).$(2) \
                $(CFLAG_-nostdlib) $(CFLAG_-nostartfiles) \
                -o $(dir $@)$(1) $(START_FILE-$(notdir $@)) \
-               -Wl,--whole-archive $(firstword $^) -Wl,--no-whole-archive \
+               -Wl,--whole-archive $(firstword $^) -Wl,--no-whole-archive 
-shared \
                $(LIBS-$(notdir $@)) $(LIBGCC) $(END_FILE-$(notdir $@))
        $(Q)$(LN) -sf $(1) $@.$(2)
        $(Q)$(LN) -sf $(1) $@
-- 
2.43.0

_______________________________________________
devel mailing list -- devel@uclibc-ng.org
To unsubscribe send an email to devel-le...@uclibc-ng.org

Reply via email to