diff options
author | Dmitry Chestnykh <dm.chestnykh@gmail.com> | 2024-02-11 09:29:54 +0300 |
---|---|---|
committer | Waldemar Brodkorb <wbx@openadk.org> | 2024-02-18 05:56:22 +0100 |
commit | ed6a9513157f54894629d8dfa8890df0245505ec (patch) | |
tree | 2b990ec9cac83bdc3f5fb0b45e4cfe4a382b8888 | |
parent | 750a3fc91dec0e522b5fac57a75a9fe0047648bf (diff) |
Add extra `-shared` to link.so command.
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.chestnykh@gmail.com>
-rw-r--r-- | Makerules | 2 |
1 files changed, 1 insertions, 1 deletions
@@ -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) $@ |