Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
Prepare for restoration of .interp section in libpthread.so
Make runtime-linker.h available outside $(elf-objpfx) by moving
the file to $(common-objpfx) and the rules for it to Makerules.

Tested for x86_64 and x86 (testsuite, and that no compiled code
changed by the patch).

* Makeconfig (+interp): Remove unused variable.
* elf/Makefile ($(objpfx)interp.os): Define for [$(build-shared) = yes]
only.  Depend on $(common-objpfx)runtime-linker.h instead of
$(elf-objpfx)runtime-linker.h.
($(elf-objpfx)runtime-linker.h): Rename to
$(common-objpfx)runtime-linker.h and move ...
* Makerules [$(build-shared) = yes]: ... here.
* elf/interp.c: Include <runtime-linker.h> instead of
<elf/runtime-linker.h>.
  • Loading branch information
Dmitry V. Levin committed Jun 10, 2015
1 parent 7cbeaba commit ac63a07
Show file tree
Hide file tree
Showing 5 changed files with 26 additions and 11 deletions.
12 changes: 12 additions & 0 deletions ChangeLog
@@ -1,3 +1,15 @@
2015-06-10 Dmitry V. Levin <ldv@altlinux.org>

* Makeconfig (+interp): Remove unused variable.
* elf/Makefile ($(objpfx)interp.os): Define for [$(build-shared) = yes]
only. Depend on $(common-objpfx)runtime-linker.h instead of
$(elf-objpfx)runtime-linker.h.
($(elf-objpfx)runtime-linker.h): Rename to
$(common-objpfx)runtime-linker.h and move ...
* Makerules [$(build-shared) = yes]: ... here.
* elf/interp.c: Include <runtime-linker.h> instead of
<elf/runtime-linker.h>.

2015-06-09 Adhemerval Zanella <adhemerval.zanella@linaro.org>

* sysdeps/unix/sysv/linux/i386/gettimeofday.c
Expand Down
1 change: 0 additions & 1 deletion Makeconfig
Expand Up @@ -596,7 +596,6 @@ endif
# Variants of the two previous definitions for statically linking programs.
+prectorT = `$(CC) $(sysdep-LDFLAGS) --print-file-name=crtbeginT.o`
+postctorT = `$(CC) $(sysdep-LDFLAGS) --print-file-name=crtend.o`
+interp = $(addprefix $(elf-objpfx),interp.os)
csu-objpfx = $(common-objpfx)csu/
elf-objpfx = $(common-objpfx)elf/

Expand Down
10 changes: 10 additions & 0 deletions Makerules
Expand Up @@ -123,6 +123,16 @@ $(common-objpfx)libc-abis.stamp: $(..)scripts/gen-libc-abis \
common-generated += $(common-objpfx)libc-abis.h
endif # avoid-generated

ifeq (yes,$(build-shared))
$(common-objpfx)runtime-linker.h: $(common-objpfx)runtime-linker.stamp; @:
$(common-objpfx)runtime-linker.stamp: $(common-objpfx)config.make
$(make-target-directory)
echo '#define RUNTIME_LINKER "$(rtlddir)/$(rtld-installed-name)"' \
> ${@:stamp=T}
$(move-if-change) ${@:stamp=T} ${@:stamp=h}
touch $@
endif

# Make sure the subdirectory for object files gets created.
ifdef objpfx
ifeq (,$(wildcard $(objpfx).))
Expand Down
12 changes: 3 additions & 9 deletions elf/Makefile
Expand Up @@ -365,16 +365,10 @@ $(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 $@

ifeq (yes,$(build-shared))
# 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
$(make-target-directory)
echo '#define RUNTIME_LINKER "$(rtlddir)/$(rtld-installed-name)"' \
> ${@:st=T}
$(move-if-change) ${@:st=T} ${@:st=h}
touch $@
$(objpfx)interp.os: $(common-objpfx)runtime-linker.h
endif

ifneq (ld.so,$(rtld-installed-name))
# Make sure ld.so.1 exists in the build directory so we can link
Expand Down
2 changes: 1 addition & 1 deletion elf/interp.c
Expand Up @@ -16,7 +16,7 @@
License along with the GNU C Library; if not, see
<http://www.gnu.org/licenses/>. */

#include <elf/runtime-linker.h>
#include <runtime-linker.h>

const char __invoke_dynamic_linker__[] __attribute__ ((section (".interp")))
= RUNTIME_LINKER;

0 comments on commit ac63a07

Please sign in to comment.