summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSiddhesh Poyarekar <siddhesh@redhat.com>2014-09-16 22:20:45 +0530
committerSiddhesh Poyarekar <siddhesh@redhat.com>2014-09-16 22:20:45 +0530
commitd330b980e9ee2349492087a279a9c7bf294f6b47 (patch)
treeeb1abe30122a1f47f9968b7e576e6a822884570d
parent02657da2cf4457804ed938ee08b8316249126444 (diff)
Remove CFLAGS for interp.c
Replace it with including an auto-generated linker-runtime.h. Build-tested on x86_64 and found that there was no change in the generated code. * elf/Makefile (CFLAGS-interp.c): Remove. ($(elf-objpfx)runtime-linker.h): Generate header with linker path string. * elf/interp.c: Include generated runtime-linker.h
-rw-r--r--ChangeLog5
-rw-r--r--elf/Makefile13
-rw-r--r--elf/interp.c2
3 files changed, 17 insertions, 3 deletions
diff --git a/ChangeLog b/ChangeLog
index 45b8cde92c..37907ea248 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,10 @@
2014-09-16 Siddhesh Poyarekar <siddhesh@redhat.com>
+ * elf/Makefile (CFLAGS-interp.c): Remove.
+ ($(elf-objpfx)runtime-linker.h): Generate header with linker
+ path string.
+ * elf/interp.c: Include generated runtime-linker.h
+
* Makerules (lib%.so): Don't include $(+interp) in
prerequisites.
* elf/Makefile (CFLAGS-interp.c): Don't define NOT_IN_libc.
diff --git a/elf/Makefile b/elf/Makefile
index e3bd69223a..94074f3e34 100644
--- a/elf/Makefile
+++ b/elf/Makefile
@@ -353,9 +353,16 @@ $(objpfx)ld.so: $(objpfx)librtld.os $(ld-map)
| $(AWK) '($$7 ~ /^UND(|EF)$$/ && $$1 != "0:" && $$4 != "REGISTER") { print; p=1 } END { exit p != 0 }'
mv -f $@.new $@
-# interp.c exists just to get this string into the libraries.
-CFLAGS-interp.c = -D'RUNTIME_LINKER="$(rtlddir)/$(rtld-installed-name)"'
-$(objpfx)interp.os: $(common-objpfx)config.make
+# interp.c exists just to get the runtime linker path into libc.so.
+$(objpfx)interp.os: $(elf-objpfx)runtime-linker.h
+
+$(elf-objpfx)runtime-linker.h: $(elf-objpfx)runtime-linker.st; @:
+$(elf-objpfx)runtime-linker.st: $(common-objpfx)config.make
+ $(name-target-directory)
+ echo '#define RUNTIME_LINKER "$(rtlddir)/$(rtld-installed-name)"' \
+ > ${@:st=T}
+ $(move-if-change) ${@:st=T} ${@:st=h}
+ touch $@
ifneq (ld.so,$(rtld-installed-name))
# Make sure ld.so.1 exists in the build directory so we can link
diff --git a/elf/interp.c b/elf/interp.c
index 49c92f59dc..a2492bffba 100644
--- a/elf/interp.c
+++ b/elf/interp.c
@@ -16,5 +16,7 @@
License along with the GNU C Library; if not, see
<http://www.gnu.org/licenses/>. */
+#include <elf/runtime-linker.h>
+
const char __invoke_dynamic_linker__[] __attribute__ ((section (".interp")))
= RUNTIME_LINKER;