Hi,

Recently we found out that the .interp section starts to show up in
ARM executables compiled with "-shared -static" and the gold linker
from binutils 2.22. We tracked down the origin of the dynamic linker
commands and they are always explicitly specified in
config/arm/linux-elf.h. We tested the following simple patch to
suppress the dynamic linker options for statically linked programs on
Android's AOSP tree. Everything builds fine and the unneeded .interp
section is gone.

Thanks,
-Ben

==

gcc/ChangeLog
2012-09-14 Ben Cheng <bcch...@google.com>
    * config/arm/linux-elf.h: Suppress the dynamic linker commands for
    statically linked programs.

Index: config/arm/linux-elf.h
===================================================================
--- config/arm/linux-elf.h      (revision 191198)
+++ config/arm/linux-elf.h      (working copy)
@@ -65,8 +65,9 @@
    %{static:-Bstatic} \
    %{shared:-shared} \
    %{symbolic:-Bsymbolic} \
-   %{rdynamic:-export-dynamic} \
-   -dynamic-linker " GNU_USER_DYNAMIC_LINKER " \
+   %{!static: \
+     %{rdynamic:-export-dynamic} \
+     -dynamic-linker " GNU_USER_DYNAMIC_LINKER "} \
    -X \
    %{mbig-endian:-EB} %{mlittle-endian:-EL}" \
    SUBTARGET_EXTRA_LINK_SPEC

Reply via email to