Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
nptl: restore .interp section in libpthread.so
In commit 02657da, .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.
  • Loading branch information
Gleb Fotengauer-Malinovskiy authored and Dmitry V. Levin committed Jun 10, 2015
1 parent ac63a07 commit 78ad175
Show file tree
Hide file tree
Showing 4 changed files with 16 additions and 3 deletions.
9 changes: 9 additions & 0 deletions 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.
Expand Down
2 changes: 1 addition & 1 deletion NEWS
Expand Up @@ -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.
Expand Down
7 changes: 5 additions & 2 deletions nptl/Makefile
Expand Up @@ -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 \
Expand Down Expand Up @@ -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
Expand Down Expand Up @@ -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)
Expand Down
1 change: 1 addition & 0 deletions nptl/pt-interp.c
@@ -0,0 +1 @@
#include <elf/interp.c>

0 comments on commit 78ad175

Please sign in to comment.