about summary refs log tree commit diff
diff options
context:
space:
mode:
authorCarlos O'Donell <carlos@redhat.com>2014-04-11 12:43:58 -0400
committerCarlos O'Donell <carlos@redhat.com>2014-04-14 15:45:40 -0400
commitf737dfd071f12584316ef90f2c71e33c2dc9801e (patch)
tree8f08cbfde6974b06755df5d4392a356ae491be88
parent0699f766b10c86912b75f35bef697106b70c1cf6 (diff)
downloadglibc-f737dfd071f12584316ef90f2c71e33c2dc9801e.tar.gz
glibc-f737dfd071f12584316ef90f2c71e33c2dc9801e.tar.xz
glibc-f737dfd071f12584316ef90f2c71e33c2dc9801e.zip
Support _r_debug for static binaries.
We initialize _r_debug for static binaries to allows debug
agents to treat static binaries a little more like dyanmic
ones. This simplifies the work a debug agent has to do to
access TLS in a static binary via libthread_db.

Tested on x86_64.

See:
https://sourceware.org/ml/libc-alpha/2014-04/msg00183.html

	[BZ #16831]
	* csu/libc-start.c (LIBC_START_MAIN) [!SHARED]: Call
	_dl_debug_initialize.
-rw-r--r--ChangeLog6
-rw-r--r--NEWS2
-rw-r--r--csu/libc-start.c3
3 files changed, 10 insertions, 1 deletions
diff --git a/ChangeLog b/ChangeLog
index 77fc36e4ec..d16da4ea10 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,11 @@
 2014-04-14  Carlos O'Donell  <carlos@redhat.com>
 
+	[BZ #16831]
+	* csu/libc-start.c (LIBC_START_MAIN) [!SHARED]: Call
+	_dl_debug_initialize.
+
+2014-04-14  Carlos O'Donell  <carlos@redhat.com>
+
 	* configure.ac: Remove SELinux header check.
 	* configure: Regenerate.
 	* nscd/selinux.c (perms): Array of const char* to permission names.
diff --git a/NEWS b/NEWS
index bbcc2232b0..a63b425691 100644
--- a/NEWS
+++ b/NEWS
@@ -14,7 +14,7 @@ Version 2.20
   16610, 16611, 16613, 16623, 16632, 16634, 16639, 16642, 16648, 16649,
   16670, 16674, 16677, 16680, 16683, 16689, 16695, 16701, 16706, 16707,
   16712, 16713, 16714, 16731, 16739, 16743, 16758, 16759, 16760, 16770,
-  16786, 16789, 16799, 16800, 16815, 16838.
+  16786, 16789, 16799, 16800, 16815, 16831, 16838.
 
 * Running the testsuite no longer terminates as soon as a test fails.
   Instead, a file tests.sum (xtests.sum from "make xcheck") is generated,
diff --git a/csu/libc-start.c b/csu/libc-start.c
index 3b7092b359..d571a1aca9 100644
--- a/csu/libc-start.c
+++ b/csu/libc-start.c
@@ -264,6 +264,9 @@ LIBC_START_MAIN (int (*main) (int, char **, char ** MAIN_AUXVEC_DECL),
     GLRO(dl_debug_printf) ("\ntransferring control: %s\n\n", argv[0]);
 #endif
 
+#ifndef SHARED
+  _dl_debug_initialize (0, LM_ID_BASE);
+#endif
 #ifdef HAVE_CLEANUP_JMP_BUF
   /* Memory for the cancellation buffer.  */
   struct pthread_unwind_buf unwind_buf;