From 52b2a80fae89d2a99ac3d1866a73c8bbf7b608ff Mon Sep 17 00:00:00 2001 From: Rogerio Alves Date: Mon, 16 Jul 2018 15:07:10 -0300 Subject: 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 --- sysdeps/powerpc/powerpc64/Makefile | 12 ++++++++++++ 1 file changed, 12 insertions(+) (limited to 'sysdeps/powerpc/powerpc64/Makefile') 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 -- cgit v1.2.3