about summary refs log tree commit diff
path: root/elf/Makefile
diff options
context:
space:
mode:
authorFlorian Weimer <fweimer@redhat.com>2021-12-05 11:28:34 +0100
committerFlorian Weimer <fweimer@redhat.com>2021-12-05 11:28:34 +0100
commitc1cb2deeca1a85c6fc5bd41b90816d48a95bc434 (patch)
treeb8adcf18e06480c47d65f991739788f0f99ccd4d /elf/Makefile
parentbada2e312a8b94c5fc2f5571b249c71cb466a640 (diff)
downloadglibc-c1cb2deeca1a85c6fc5bd41b90816d48a95bc434.tar.gz
glibc-c1cb2deeca1a85c6fc5bd41b90816d48a95bc434.tar.xz
glibc-c1cb2deeca1a85c6fc5bd41b90816d48a95bc434.zip
elf: execve statically linked programs instead of crashing [BZ #28648]
Programs without dynamic dependencies and without a program
interpreter are now run via execve.

Previously, the dynamic linker either crashed while attempting to
read a non-existing dynamic segment (looking for DT_AUDIT/DT_DEPAUDIT
data), or the self-relocated in the static PIE executable crashed
because the outer dynamic linker had already applied RELRO protection.

<dl-execve.h> is needed because execve is not available in the
dynamic loader on Hurd.

Reviewed-by: H.J. Lu <hjl.tools@gmail.com>
Diffstat (limited to 'elf/Makefile')
-rw-r--r--elf/Makefile3
1 files changed, 3 insertions, 0 deletions
diff --git a/elf/Makefile b/elf/Makefile
index 4723c159cb..ef36008673 100644
--- a/elf/Makefile
+++ b/elf/Makefile
@@ -231,6 +231,7 @@ tests += restest1 preloadtest loadfail multiload origtest resolvfail \
 	 tst-tls20 tst-tls21 tst-dlmopen-dlerror tst-dlmopen-gethostbyname \
 	 tst-dl-is_dso tst-ro-dynamic \
 	 tst-audit18 \
+	 tst-rtld-run-static \
 #	 reldep9
 tests-internal += loadtest unload unload2 circleload1 \
 	 neededtest neededtest2 neededtest3 neededtest4 \
@@ -1977,3 +1978,5 @@ $(objpfx)tst-ro-dynamic-mod.so: $(objpfx)tst-ro-dynamic-mod.os \
 	$(LINK.o) -nostdlib -nostartfiles -shared -o $@ \
 		-Wl,--script=tst-ro-dynamic-mod.map \
 		$(objpfx)tst-ro-dynamic-mod.os
+
+$(objpfx)tst-rtld-run-static.out: $(objpfx)/ldconfig