]> sourceware.org Git - glibc.git/commitdiff
nptl: restore .interp section in libpthread.so
authorGleb Fotengauer-Malinovskiy <glebfm@altlinux.org>
Tue, 2 Jun 2015 18:04:06 +0000 (21:04 +0300)
committerDmitry V. Levin <ldv@altlinux.org>
Wed, 10 Jun 2015 10:18:12 +0000 (10:18 +0000)
In commit 02657da2cf4457804ed938ee08b8316249126444, .interp section
was removed from libpthread.so.  This led to an error:

  $ /lib64/libpthread.so.0
  Native POSIX Threads Library by Ulrich Drepper et al
  Copyright (C) 2015 Free Software Foundation, Inc.
  This is free software; see the source for copying conditions.
  There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A
  PARTICULAR PURPOSE.
  Forced unwind support included.
  Segmentation fault

  (gdb) bt
  #0  0x00000000000055a6 in _exit@plt ()

Unfortunately, there is no way to add a regression test for the bug
because .interp specifies the path to dynamic linker of the target
system.

[BZ #18479]
* nptl/pt-interp.c: New file.
* nptl/Makefile (libpthread-routines, libpthread-shared-only-routines):
Add pt-interp.
[$(build-shared) = yes] ($(objpfx)pt-interp.os): Depend on
$(common-objpfx)runtime-linker.h.

ChangeLog
NEWS
nptl/Makefile
nptl/pt-interp.c [new file with mode: 0644]

index ca22729f747d3529158fe87ad6a79896c0cf4486..80afbb18e39d1c83a7727a35f2b0c90a2bb52fab 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,12 @@
+2015-06-10  Gleb Fotengauer-Malinovskiy  <glebfm@altlinux.org>
+
+       [BZ #18479]
+       * nptl/pt-interp.c: New file.
+       * nptl/Makefile (libpthread-routines, libpthread-shared-only-routines):
+       Add pt-interp.
+       [[$(build-shared) = yes] ($(objpfx)pt-interp.os): Depend on
+       $(common-objpfx)runtime-linker.h.
+
 2015-06-10  Dmitry V. Levin  <ldv@altlinux.org>
 
        * Makeconfig (+interp): Remove unused variable.
diff --git a/NEWS b/NEWS
index 221ec2f8c214b604e5e1bc5ca0bd1dd028c29c84..218bf3aea9c1e065b66e42f4738e0dbb6b6e83ab 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -20,7 +20,7 @@ Version 2.22
   18111, 18116, 18125, 18128, 18138, 18185, 18196, 18197, 18206, 18210,
   18211, 18217, 18220, 18221, 18234, 18244, 18247, 18287, 18319, 18324,
   18333, 18346, 18397, 18409, 18410, 18412, 18418, 18422, 18434, 18444,
-  18468, 18469, 18470, 18483, 18495, 18496, 18497, 18498, 18507.
+  18468, 18469, 18470, 18479, 18483, 18495, 18496, 18497, 18498, 18507.
 
 * Cache information can be queried via sysconf() function on s390 e.g. with
   _SC_LEVEL1_ICACHE_SIZE as argument.
index d58324d5907539f8356041cac09370f15423c99e..530d14b9d476b7071d14096f7782ff23333bcbcf 100644 (file)
@@ -33,7 +33,7 @@ routines = alloca_cutoff forward libc-lowlevellock libc-cancellation \
           register-atfork unregister-atfork
 shared-only-routines = forward
 
-libpthread-routines = nptl-init vars events version \
+libpthread-routines = nptl-init vars events version pt-interp \
                      pthread_create pthread_exit pthread_detach \
                      pthread_join pthread_tryjoin pthread_timedjoin \
                      pthread_self pthread_equal pthread_yield \
@@ -138,7 +138,8 @@ libpthread-routines = nptl-init vars events version \
 #                    pthread_setgid pthread_setegid pthread_setregid \
 #                    pthread_setresgid
 
-libpthread-shared-only-routines = version pt-allocrtsig unwind-forcedunwind
+libpthread-shared-only-routines = version pt-interp pt-allocrtsig \
+                                 unwind-forcedunwind
 libpthread-static-only-routines = pthread_atfork
 
 # Since cancellation handling is in large parts handled using exceptions
@@ -608,6 +609,8 @@ $(objpfx)banner.h: Banner
 generated += banner.h
 # Give libpthread.so an entry point and make it directly runnable itself.
 LDFLAGS-pthread.so += -e __nptl_main
+# pt-interp.c exists just to get the runtime linker path into libpthread.so.
+$(objpfx)pt-interp.os: $(common-objpfx)runtime-linker.h
 endif
 
 ifeq ($(run-built-tests),yes)
diff --git a/nptl/pt-interp.c b/nptl/pt-interp.c
new file mode 100644 (file)
index 0000000..ecf1fe7
--- /dev/null
@@ -0,0 +1 @@
+#include <elf/interp.c>
This page took 0.137363 seconds and 5 git commands to generate.