This is the mail archive of the glibc-cvs@sourceware.org mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

GNU C Library master sources branch master updated. glibc-2.28.9000-160-g6ca8284


This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "GNU C Library master sources".

The branch, master has been updated
       via  6ca8284e7a522ce3cdc9fdd2e73795c753890634 (commit)
      from  61d8b5feeed36e242a043befe9b11f7f8c294f58 (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
http://sourceware.org/git/gitweb.cgi?p=glibc.git;a=commitdiff;h=6ca8284e7a522ce3cdc9fdd2e73795c753890634

commit 6ca8284e7a522ce3cdc9fdd2e73795c753890634
Author: Andreas Schwab <schwab@suse.de>
Date:   Tue Sep 25 01:22:22 2018 +0200

    Add missing unwind information to ld.so on powerpc32 (bug 23707)

diff --git a/ChangeLog b/ChangeLog
index b757651..85f8e09 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,12 @@
+2018-09-26  Andreas Schwab  <schwab@suse.de>
+
+	[BZ #23707]
+	* sysdeps/powerpc/powerpc32/dl-start.S: Add unwind information.
+	* elf/Makefile (tests): Add tst-unwind-ctor.
+	(modules-names): Add tst-unwind-ctor-lib.
+	($(objpfx)tst-unwind-ctor): Depend on
+	$(objpfx)tst-unwind-ctor-lib.so.
+
 2018-09-26  Joseph Myers  <joseph@codesourcery.com>
 
 	* sysdeps/unix/sysv/linux/bits/mman-map-flags-generic.h: New
diff --git a/elf/Makefile b/elf/Makefile
index 037f681..455ec73 100644
--- a/elf/Makefile
+++ b/elf/Makefile
@@ -186,7 +186,8 @@ tests += restest1 preloadtest loadfail multiload origtest resolvfail \
 	 tst-tlsalign tst-tlsalign-extern tst-nodelete-opened \
 	 tst-nodelete2 tst-audit11 tst-audit12 tst-dlsym-error tst-noload \
 	 tst-latepthread tst-tls-manydynamic tst-nodelete-dlclose \
-	 tst-debug1 tst-main1 tst-absolute-sym tst-absolute-zero tst-big-note
+	 tst-debug1 tst-main1 tst-absolute-sym tst-absolute-zero tst-big-note \
+	 tst-unwind-ctor
 #	 reldep9
 tests-internal += loadtest unload unload2 circleload1 \
 	 neededtest neededtest2 neededtest3 neededtest4 \
@@ -273,7 +274,7 @@ modules-names = testobj1 testobj2 testobj3 testobj4 testobj5 testobj6 \
 		tst-latepthreadmod $(tst-tls-many-dynamic-modules) \
 		tst-nodelete-dlclose-dso tst-nodelete-dlclose-plugin \
 		tst-main1mod tst-libc_dlvsym-dso tst-absolute-sym-lib \
-		tst-absolute-zero-lib tst-big-note-lib
+		tst-absolute-zero-lib tst-big-note-lib tst-unwind-ctor-lib
 # Most modules build with _ISOMAC defined, but those filtered out
 # depend on internal headers.
 modules-names-tests = $(filter-out ifuncmod% tst-libc_dlvsym-dso tst-tlsmod%,\
@@ -1492,3 +1493,5 @@ tst-libc_dlvsym-static-ENV = \
 $(objpfx)tst-libc_dlvsym-static.out: $(objpfx)tst-libc_dlvsym-dso.so
 
 $(objpfx)tst-big-note: $(objpfx)tst-big-note-lib.so
+
+$(objpfx)tst-unwind-ctor: $(objpfx)tst-unwind-ctor-lib.so
diff --git a/elf/tst-unwind-ctor-lib.c b/elf/tst-unwind-ctor-lib.c
new file mode 100644
index 0000000..ebcc2e7
--- /dev/null
+++ b/elf/tst-unwind-ctor-lib.c
@@ -0,0 +1,42 @@
+/* Unit test for _Unwind_Backtrace in a shared object constructor.
+   Copyright (C) 2018 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <http://www.gnu.org/licenses/>.  */
+
+#include <unwind.h>
+#include <unistd.h>
+
+static _Unwind_Reason_Code
+callback (struct _Unwind_Context *ctx, void *arg)
+{
+  return _URC_NO_REASON;
+}
+
+static void
+__attribute__ ((constructor))
+do_unwind (void)
+{
+  /* Arrange for this test to be killed if _Unwind_Backtrace runs into an
+     endless loop.  We cannot use the test driver since the test needs to
+     run in a constructor.  */
+  alarm (20);
+  _Unwind_Backtrace (callback, 0);
+}
+
+void
+dummy (void)
+{
+}
diff --git a/elf/tst-unwind-ctor.c b/elf/tst-unwind-ctor.c
new file mode 100644
index 0000000..b87fbab
--- /dev/null
+++ b/elf/tst-unwind-ctor.c
@@ -0,0 +1,27 @@
+/* Unit test for _Unwind_Backtrace in a shared object constructor.
+   Copyright (C) 2018 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <http://www.gnu.org/licenses/>.  */
+
+extern void dummy (void);
+
+int
+main (void)
+{
+  /* Just call a dummy function in the shared library.  The actual test
+     runs in its constructor.  */
+  dummy ();
+}
diff --git a/sysdeps/powerpc/powerpc32/dl-start.S b/sysdeps/powerpc/powerpc32/dl-start.S
index 244d87f..243fb83 100644
--- a/sysdeps/powerpc/powerpc32/dl-start.S
+++ b/sysdeps/powerpc/powerpc32/dl-start.S
@@ -34,6 +34,9 @@ ENTRY(_start)
    _dl_start to save the link register).  */
 	li	r4,0
 	addi	r1,r1,-16
+	cfi_adjust_cfa_offset (16)
+/* Mark lr as undefined to stop unwinding.  */
+	cfi_undefined (lr)
 	stw	r4,0(r1)
 	bl	_dl_start@local
 

-----------------------------------------------------------------------

Summary of changes:
 ChangeLog                                         |    9 +++++++
 elf/Makefile                                      |    7 ++++-
 support/xsymlink.c => elf/tst-unwind-ctor-lib.c   |   27 +++++++++++++++-----
 support/true-container.c => elf/tst-unwind-ctor.c |    9 ++++---
 sysdeps/powerpc/powerpc32/dl-start.S              |    3 ++
 5 files changed, 42 insertions(+), 13 deletions(-)
 copy support/xsymlink.c => elf/tst-unwind-ctor-lib.c (62%)
 copy support/true-container.c => elf/tst-unwind-ctor.c (79%)


hooks/post-receive
-- 
GNU C Library master sources


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]