about summary refs log tree commit diff
path: root/sysdeps/powerpc/powerpc64/Makefile
diff options
context:
space:
mode:
authorRogerio Alves <rcardoso@linux.vnet.ibm.com>2018-07-16 15:07:10 -0300
committerTulio Magno Quites Machado Filho <tuliom@linux.ibm.com>2018-07-16 16:08:41 -0300
commit52b2a80fae89d2a99ac3d1866a73c8bbf7b608ff (patch)
treec861930d393bdd30c0cbdc7346aa388cee7eebf2 /sysdeps/powerpc/powerpc64/Makefile
parent3ae725dfb6d7f61447d27d00ed83e573bd5454f4 (diff)
downloadglibc-52b2a80fae89d2a99ac3d1866a73c8bbf7b608ff.tar.gz
glibc-52b2a80fae89d2a99ac3d1866a73c8bbf7b608ff.tar.xz
glibc-52b2a80fae89d2a99ac3d1866a73c8bbf7b608ff.zip
powerpc64: Always restore TOC on longjmp [BZ #21895]
This patch changes longjmp to always restore the TOC pointer (r2 register)
to the caller frame on powerpc64 and powerpc64le.  This is related to bug
21895 that reports a situation where you have a static longjmp to a
shared object file.

	[BZ #21895]
	* sysdeps/powerpc/powerpc64/__longjmp-common.S: Remove condition code for
	restoring r2 in longjmp.
	* sysdeps/powerpc/powerpc64/Makefile: Added tst-setjmp-bug21895-static to
	test list.
	Added rules to build test tst-setjmp-bug21895-static.
	Added module setjmp-bug21895 and rules to build a shared object from it.
	* sysdeps/powerpc/powerpc64/setjmp-bug21895.c: New test file.
	* sysdeps/powerpc/powerpc64/tst-setjmp-bug21895-static.c: New test file.

Reviewed-by: Tulio Magno Quites Machado Filho <tuliom@linux.ibm.com>
Diffstat (limited to 'sysdeps/powerpc/powerpc64/Makefile')
-rw-r--r--sysdeps/powerpc/powerpc64/Makefile12
1 files changed, 12 insertions, 0 deletions
diff --git a/sysdeps/powerpc/powerpc64/Makefile b/sysdeps/powerpc/powerpc64/Makefile
index 9d15db0328..a0bd0c9504 100644
--- a/sysdeps/powerpc/powerpc64/Makefile
+++ b/sysdeps/powerpc/powerpc64/Makefile
@@ -47,3 +47,15 @@ ifeq ($(subdir),gmon)
 CFLAGS-mcount.c += $(no-special-regs)
 sysdep_routines += ppc-mcount
 endif
+
+ifeq ($(subdir),setjmp)
+tests += tst-setjmp-bug21895-static
+tests-static += tst-setjmp-bug21895-static
+modules-names += setjmp-bug21895
+
+$(objpfx)tst-setjmp-bug21895-static: $(common-objpfx)dlfcn/libdl.a
+$(objpfx)tst-setjmp-bug21895-static.out: $(objpfx)setjmp-bug21895.so
+
+tst-setjmp-bug21895-static-ENV = \
+	LD_LIBRARY_PATH=$(objpfx):$(common-objpfx):$(common-objpfx)setjmp:$(common-objpfx)elf
+endif