This is the mail archive of the
binutils@sourceware.org
mailing list for the binutils project.
PATCH: Why does elf32.em check DT_BIND_NOW?
- From: "H.J. Lu" <hjl at lucon dot org>
- To: Jakub Jelinek <jakub at redhat dot com>
- Cc: binutils at sources dot redhat dot com
- Date: Sun, 16 Sep 2007 11:54:08 -0700
- Subject: PATCH: Why does elf32.em check DT_BIND_NOW?
- References: <20070916171712.GA18744@lucon.org> <20070916173351.GE7129@devserv.devel.redhat.com>
On Sun, Sep 16, 2007 at 01:33:51PM -0400, Jakub Jelinek wrote:
> On Sun, Sep 16, 2007 at 10:17:12AM -0700, H.J. Lu wrote:
> > As I understand, -z now should just add the DF_BIND_NOW entry
> > and no special linker script is needed.
>
> Incorrect. The different linker script is necessary.
> For -z now -z relro we want the whole .got.plt in the PT_GNU_RELRO
> segment, for -z relro it needs to be writable.
>
I am checking in this patch an obvious fix.
H.J.
---
2007-09-16 H.J. Lu <hongjiu.lu@intel.com>
* emultempl/elf32.em: Check DF_BIND_NOW instead of DT_BIND_NOW.
--- ld/emultempl/elf32.em.script 2007-09-16 07:50:45.000000000 -0700
+++ ld/emultempl/elf32.em 2007-09-16 11:50:47.000000000 -0700
@@ -1869,7 +1869,7 @@ if test -n "$GENERATE_PIE_SCRIPT" ; then
if test -n "$GENERATE_COMBRELOC_SCRIPT" ; then
echo ' ; else if (link_info.pie && link_info.combreloc' >> e${EMULATION_NAME}.c
echo ' && link_info.relro' >> e${EMULATION_NAME}.c
-echo ' && (link_info.flags & DT_BIND_NOW)) return' >> e${EMULATION_NAME}.c
+echo ' && (link_info.flags & DF_BIND_NOW)) return' >> e${EMULATION_NAME}.c
sed $sc ldscripts/${EMULATION_NAME}.xdw >> e${EMULATION_NAME}.c
echo ' ; else if (link_info.pie && link_info.combreloc) return' >> e${EMULATION_NAME}.c
sed $sc ldscripts/${EMULATION_NAME}.xdc >> e${EMULATION_NAME}.c
@@ -1881,7 +1881,7 @@ if test -n "$GENERATE_SHLIB_SCRIPT" ; th
if test -n "$GENERATE_COMBRELOC_SCRIPT" ; then
echo ' ; else if (link_info.shared && link_info.combreloc' >> e${EMULATION_NAME}.c
echo ' && link_info.relro' >> e${EMULATION_NAME}.c
-echo ' && (link_info.flags & DT_BIND_NOW)) return' >> e${EMULATION_NAME}.c
+echo ' && (link_info.flags & DF_BIND_NOW)) return' >> e${EMULATION_NAME}.c
sed $sc ldscripts/${EMULATION_NAME}.xsw >> e${EMULATION_NAME}.c
echo ' ; else if (link_info.shared && link_info.combreloc) return' >> e${EMULATION_NAME}.c
sed $sc ldscripts/${EMULATION_NAME}.xsc >> e${EMULATION_NAME}.c
@@ -1891,7 +1891,7 @@ sed $sc ldscripts/${EMULATION_NAME}.xs
fi
if test -n "$GENERATE_COMBRELOC_SCRIPT" ; then
echo ' ; else if (link_info.combreloc && link_info.relro' >> e${EMULATION_NAME}.c
-echo ' && (link_info.flags & DT_BIND_NOW)) return' >> e${EMULATION_NAME}.c
+echo ' && (link_info.flags & DF_BIND_NOW)) return' >> e${EMULATION_NAME}.c
sed $sc ldscripts/${EMULATION_NAME}.xw >> e${EMULATION_NAME}.c
echo ' ; else if (link_info.combreloc) return' >> e${EMULATION_NAME}.c
sed $sc ldscripts/${EMULATION_NAME}.xc >> e${EMULATION_NAME}.c
@@ -1925,7 +1925,7 @@ if test -n "$GENERATE_PIE_SCRIPT" ; then
if test -n "$GENERATE_COMBRELOC_SCRIPT" ; then
fragment <<EOF
else if (link_info.pie && link_info.combreloc
- && link_info.relro && (link_info.flags & DT_BIND_NOW))
+ && link_info.relro && (link_info.flags & DF_BIND_NOW))
return "ldscripts/${EMULATION_NAME}.xdw";
else if (link_info.pie && link_info.combreloc)
return "ldscripts/${EMULATION_NAME}.xdc";
@@ -1940,7 +1940,7 @@ if test -n "$GENERATE_SHLIB_SCRIPT" ; th
if test -n "$GENERATE_COMBRELOC_SCRIPT" ; then
fragment <<EOF
else if (link_info.shared && link_info.combreloc
- && link_info.relro && (link_info.flags & DT_BIND_NOW))
+ && link_info.relro && (link_info.flags & DF_BIND_NOW))
return "ldscripts/${EMULATION_NAME}.xsw";
else if (link_info.shared && link_info.combreloc)
return "ldscripts/${EMULATION_NAME}.xsc";
@@ -1954,7 +1954,7 @@ fi
if test -n "$GENERATE_COMBRELOC_SCRIPT" ; then
fragment <<EOF
else if (link_info.combreloc && link_info.relro
- && (link_info.flags & DT_BIND_NOW))
+ && (link_info.flags & DF_BIND_NOW))
return "ldscripts/${EMULATION_NAME}.xw";
else if (link_info.combreloc)
return "ldscripts/${EMULATION_NAME}.xc";