diff options
author | H.J. Lu <hjl.tools@gmail.com> | 2012-11-20 22:16:05 +0000 |
---|---|---|
committer | H.J. Lu <hjl.tools@gmail.com> | 2012-11-20 22:16:05 +0000 |
commit | b039ef04574106adbac611394b008109967d2a73 (patch) | |
tree | 4a43b619abbc3c62b8d267a0797003717c5d77e9 | |
parent | ace21957447369d273622e8869f1183549cded3d (diff) | |
download | gdb-b039ef04574106adbac611394b008109967d2a73.zip gdb-b039ef04574106adbac611394b008109967d2a73.tar.gz gdb-b039ef04574106adbac611394b008109967d2a73.tar.bz2 |
Implement ELF linker -z global option
ld/
* ld.texinfo: Document "-z global".
* emultempl/elf32.em (gld${EMULATION_NAME}_handle_option): Support
"-z global".
(gld${EMULATION_NAME}_list_options): Likewise.
ld/testsuite/
* ld-elf/global1.d: New file.
-rw-r--r-- | ld/ChangeLog | 8 | ||||
-rw-r--r-- | ld/emultempl/elf32.em | 5 | ||||
-rw-r--r-- | ld/ld.texinfo | 5 | ||||
-rw-r--r-- | ld/testsuite/ChangeLog | 4 | ||||
-rw-r--r-- | ld/testsuite/ld-elf/global1.d | 8 |
5 files changed, 30 insertions, 0 deletions
diff --git a/ld/ChangeLog b/ld/ChangeLog index 4478030..7996b23 100644 --- a/ld/ChangeLog +++ b/ld/ChangeLog @@ -1,3 +1,11 @@ +2012-11-20 H.J. Lu <hongjiu.lu@intel.com> + + * ld.texinfo: Document "-z global". + + * emultempl/elf32.em (gld${EMULATION_NAME}_handle_option): Support + "-z global". + (gld${EMULATION_NAME}_list_options): Likewise. + 2012-11-15 Maxim Kuvyrkov <maxim@codesourcery.com> Port lib32 arrangement from Debian. diff --git a/ld/emultempl/elf32.em b/ld/emultempl/elf32.em index 9e263a9..acb01e5 100644 --- a/ld/emultempl/elf32.em +++ b/ld/emultempl/elf32.em @@ -2300,6 +2300,8 @@ fragment <<EOF EOF if test x"$GENERATE_SHLIB_SCRIPT" = xyes; then fragment <<EOF + else if (strcmp (optarg, "global") == 0) + link_info.flags_1 |= (bfd_vma) DF_1_GLOBAL; else if (strcmp (optarg, "initfirst") == 0) link_info.flags_1 |= (bfd_vma) DF_1_INITFIRST; else if (strcmp (optarg, "interpose") == 0) @@ -2419,6 +2421,9 @@ EOF if test x"$GENERATE_SHLIB_SCRIPT" = xyes; then fragment <<EOF fprintf (file, _("\ + -z global Make symbols in DSO available for subsequently\n\ + loaded objects\n")); + fprintf (file, _("\ -z initfirst Mark DSO to be initialized first at runtime\n")); fprintf (file, _("\ -z interpose Mark object to interpose all DSOs but executable\n")); diff --git a/ld/ld.texinfo b/ld/ld.texinfo index 4a8118f..7670e96 100644 --- a/ld/ld.texinfo +++ b/ld/ld.texinfo @@ -1024,6 +1024,11 @@ shared libraries are still allowed. @item execstack Marks the object as requiring executable stack. +@item global +This option is only meaningful when building a shared object. It makes +the symbols defined by this shared object available for symbol resolution +of subsequently loaded libraries. + @item initfirst This option is only meaningful when building a shared object. It marks the object so that its runtime initialization will occur diff --git a/ld/testsuite/ChangeLog b/ld/testsuite/ChangeLog index 0e79548..81ec67c 100644 --- a/ld/testsuite/ChangeLog +++ b/ld/testsuite/ChangeLog @@ -1,3 +1,7 @@ +2012-11-20 H.J. Lu <hongjiu.lu@intel.com> + + * ld-elf/global1.d: New file. + 2012-11-07 James Murray <jsm@jsm-net.demon.co.uk> * ld-m68hc11/movw.d: New test for 16bit relocate. diff --git a/ld/testsuite/ld-elf/global1.d b/ld/testsuite/ld-elf/global1.d new file mode 100644 index 0000000..eae7f0d --- /dev/null +++ b/ld/testsuite/ld-elf/global1.d @@ -0,0 +1,8 @@ +#source: start.s +#ld: -shared -z global +#readelf: -d +#target: *-*-linux* *-*-gnu* + +#... + 0x0*6ffffffb \(FLAGS_1\) *Flags: GLOBAL +#pass |