Accepting request 213760 from home:michel_mno:branches:devel:tools
- add support of ppc64le architecture - added patches: * valgrind-3.9.0-merge.patches.from.Paul.McKenney.patch * valgrind-3.9.0-ppc64le-abiv2.patch - This is a request for devel:tools project but will need also to enable openSUSE:Factory:PowerPC ppc64le build. OBS-URL: https://build.opensuse.org/request/show/213760 OBS-URL: https://build.opensuse.org/package/show/devel:tools/valgrind?expand=0&rev=100
This commit is contained in:
parent
fd7ca92df0
commit
18c6c09d2d
3794
valgrind-3.9.0-merge.patches.from.Paul.McKenney.patch
Normal file
3794
valgrind-3.9.0-merge.patches.from.Paul.McKenney.patch
Normal file
File diff suppressed because it is too large
Load Diff
438
valgrind-3.9.0-ppc64le-abiv2.patch
Normal file
438
valgrind-3.9.0-ppc64le-abiv2.patch
Normal file
@ -0,0 +1,438 @@
|
|||||||
|
Subject: valgrind 3.9.0 ppc64le abiv2
|
||||||
|
From: Guy Menanteau <menantea@linux.vnet.ibm.com>
|
||||||
|
|
||||||
|
more changes for ppc64le arch now that ABI V2 is supported.
|
||||||
|
This is a complement of previous valgrind-3.9.0-merge.patches.from.Paul.McKenney.patch
|
||||||
|
|
||||||
|
Signed-off-by: Guy Menanteau <menantea@linux.vnet.ibm.com>
|
||||||
|
Signed-off-by: Michel Normand <normand@linux.vnet.ibm.com>
|
||||||
|
---
|
||||||
|
coregrind/m_dispatch/dispatch-ppc64-linux.S | 57 +++++++++++++++++++++++++++-
|
||||||
|
coregrind/m_libcsetjmp.c | 13 ++++++
|
||||||
|
coregrind/m_main.c | 40 +++++++++++++++++++
|
||||||
|
coregrind/m_signals.c | 2
|
||||||
|
coregrind/m_syscall.c | 6 ++
|
||||||
|
coregrind/m_syswrap/syscall-ppc64-linux.S | 6 ++
|
||||||
|
coregrind/m_syswrap/syswrap-ppc64-linux.c | 12 +++++
|
||||||
|
coregrind/m_trampoline.S | 16 +++++++
|
||||||
|
8 files changed, 149 insertions(+), 3 deletions(-)
|
||||||
|
|
||||||
|
Index: valgrind-3.9.0/coregrind/m_main.c
|
||||||
|
===================================================================
|
||||||
|
--- valgrind-3.9.0.orig/coregrind/m_main.c
|
||||||
|
+++ valgrind-3.9.0/coregrind/m_main.c
|
||||||
|
@@ -2800,7 +2800,7 @@ asm("\n"
|
||||||
|
"\ttrap\n"
|
||||||
|
".previous\n"
|
||||||
|
);
|
||||||
|
-#elif defined(VGP_ppc64_linux) || defined(VGP_ppc64le_linux)
|
||||||
|
+#elif defined(VGP_ppc64_linux) || (defined(VGP_ppc64le_linux) && _CALL_ELF != 2)
|
||||||
|
asm("\n"
|
||||||
|
/* PPC64 ELF ABI says '_start' points to a function descriptor.
|
||||||
|
So we must have one, and that is what goes into the .opd section. */
|
||||||
|
@@ -2819,6 +2819,44 @@ asm("\n"
|
||||||
|
"\tori 16,16,vgPlain_interim_stack@higher\n"
|
||||||
|
"\tsldi 16,16,32\n"
|
||||||
|
"\toris 16,16,vgPlain_interim_stack@h\n"
|
||||||
|
+ "\tori 16,16,vgPlain_interim_stack@l\n"
|
||||||
|
+ "\txor 17,17,17\n"
|
||||||
|
+ "\tlis 17,("VG_STRINGIFY(VG_STACK_GUARD_SZB)" >> 16)\n"
|
||||||
|
+ "\tori 17,17,("VG_STRINGIFY(VG_STACK_GUARD_SZB)" & 0xFFFF)\n"
|
||||||
|
+ "\txor 18,18,18\n"
|
||||||
|
+ "\tlis 18,("VG_STRINGIFY(VG_STACK_ACTIVE_SZB)" >> 16)\n"
|
||||||
|
+ "\tori 18,18,("VG_STRINGIFY(VG_STACK_ACTIVE_SZB)" & 0xFFFF)\n"
|
||||||
|
+ "\tadd 16,17,16\n"
|
||||||
|
+ "\tadd 16,18,16\n"
|
||||||
|
+ "\trldicr 16,16,0,59\n"
|
||||||
|
+ /* now r16 = &vgPlain_interim_stack + VG_STACK_GUARD_SZB +
|
||||||
|
+ VG_STACK_ACTIVE_SZB rounded down to the nearest 16-byte
|
||||||
|
+ boundary. And r1 is the original SP. Set the SP to r16 and
|
||||||
|
+ call _start_in_C_linux, passing it the initial SP. */
|
||||||
|
+ "\tmr 3,1\n"
|
||||||
|
+ "\tmr 1,16\n"
|
||||||
|
+ "\tlis 14, _start_in_C_linux@highest\n"
|
||||||
|
+ "\tori 14,14,_start_in_C_linux@higher\n"
|
||||||
|
+ "\tsldi 14,14,32\n"
|
||||||
|
+ "\toris 14,14,_start_in_C_linux@h\n"
|
||||||
|
+ "\tori 14,14,_start_in_C_linux@l\n"
|
||||||
|
+ "\tld 14,0(14)\n"
|
||||||
|
+ "\tmtctr 14\n"
|
||||||
|
+ "\tbctrl\n"
|
||||||
|
+ "\tnop\n"
|
||||||
|
+ "\ttrap\n"
|
||||||
|
+);
|
||||||
|
+#elif defined(VGP_ppc64le_linux) && _CALL_ELF == 2
|
||||||
|
+asm("\n"
|
||||||
|
+ ".text\n"
|
||||||
|
+ "\t.globl _start\n"
|
||||||
|
+ "\t.type _start,@function\n"
|
||||||
|
+ "_start:\n"
|
||||||
|
+ /* set up the new stack in r16 */
|
||||||
|
+ "\tlis 16,vgPlain_interim_stack@ha\n"
|
||||||
|
+ "\tori 16,16,vgPlain_interim_stack@higher\n"
|
||||||
|
+ "\tsldi 16,16,32\n"
|
||||||
|
+ "\toris 16,16,vgPlain_interim_stack@h\n"
|
||||||
|
"\tori 16,16,vgPlain_interim_stack@l\n"
|
||||||
|
"\txor 17,17,17\n"
|
||||||
|
"\tlis 17,("VG_STRINGIFY(VG_STACK_GUARD_SZB)" >> 16)\n"
|
||||||
|
Index: valgrind-3.9.0/coregrind/m_signals.c
|
||||||
|
===================================================================
|
||||||
|
--- valgrind-3.9.0.orig/coregrind/m_signals.c
|
||||||
|
+++ valgrind-3.9.0/coregrind/m_signals.c
|
||||||
|
@@ -829,7 +829,7 @@ extern void my_sigreturn(void);
|
||||||
|
" syscall\n" \
|
||||||
|
".previous\n"
|
||||||
|
|
||||||
|
-#elif defined(VGP_ppc32_linux)
|
||||||
|
+#elif defined(VGP_ppc32_linux) || (defined(VGP_ppc64le_linux) && _CALL_ELF == 2)
|
||||||
|
# define _MY_SIGRETURN(name) \
|
||||||
|
".text\n" \
|
||||||
|
".globl my_sigreturn\n" \
|
||||||
|
Index: valgrind-3.9.0/coregrind/m_libcsetjmp.c
|
||||||
|
===================================================================
|
||||||
|
--- valgrind-3.9.0.orig/coregrind/m_libcsetjmp.c
|
||||||
|
+++ valgrind-3.9.0/coregrind/m_libcsetjmp.c
|
||||||
|
@@ -152,6 +152,7 @@ __asm__(
|
||||||
|
#if defined(VGP_ppc64_linux) || defined(VGP_ppc64le_linux)
|
||||||
|
|
||||||
|
__asm__(
|
||||||
|
+#if _CALL_ELF != 2
|
||||||
|
".section \".toc\",\"aw\"" "\n"
|
||||||
|
|
||||||
|
".section \".text\"" "\n"
|
||||||
|
@@ -167,6 +168,13 @@ __asm__(
|
||||||
|
|
||||||
|
".type VG_MINIMAL_SETJMP, @function" "\n"
|
||||||
|
".L.VG_MINIMAL_SETJMP:" "\n"
|
||||||
|
+#else
|
||||||
|
+".text" "\n"
|
||||||
|
+"" "\n"
|
||||||
|
+".global VG_MINIMAL_SETJMP" "\n" // r3 = jmp_buf
|
||||||
|
+".type VG_MINIMAL_SETJMP, @function" "\n"
|
||||||
|
+"VG_MINIMAL_SETJMP:" "\n"
|
||||||
|
+#endif
|
||||||
|
" std 0, 0(3)" "\n"
|
||||||
|
" std 1, 8(3)" "\n"
|
||||||
|
" std 2, 16(3)" "\n"
|
||||||
|
@@ -211,6 +219,7 @@ __asm__(
|
||||||
|
|
||||||
|
".globl VG_MINIMAL_LONGJMP" "\n"
|
||||||
|
|
||||||
|
+#if _CALL_ELF != 2
|
||||||
|
".section \".opd\",\"aw\"" "\n"
|
||||||
|
".align 3" "\n"
|
||||||
|
"VG_MINIMAL_LONGJMP:" "\n"
|
||||||
|
@@ -219,6 +228,10 @@ __asm__(
|
||||||
|
|
||||||
|
".type VG_MINIMAL_LONGJMP, @function" "\n"
|
||||||
|
".L.VG_MINIMAL_LONGJMP:" "\n"
|
||||||
|
+#else
|
||||||
|
+".type VG_MINIMAL_LONGJMP, @function" "\n"
|
||||||
|
+"VG_MINIMAL_LONGJMP:" "\n"
|
||||||
|
+#endif
|
||||||
|
// do r4 = 1
|
||||||
|
// and park it in the restore slot for r3 (the ret reg)
|
||||||
|
" li 4, 1" "\n"
|
||||||
|
Index: valgrind-3.9.0/coregrind/m_syscall.c
|
||||||
|
===================================================================
|
||||||
|
--- valgrind-3.9.0.orig/coregrind/m_syscall.c
|
||||||
|
+++ valgrind-3.9.0/coregrind/m_syscall.c
|
||||||
|
@@ -382,6 +382,7 @@ asm(
|
||||||
|
bottom bit of [1]. */
|
||||||
|
extern void do_syscall_WRK ( ULong* argblock );
|
||||||
|
asm(
|
||||||
|
+#if _CALL_ELF != 2
|
||||||
|
".align 2\n"
|
||||||
|
".globl do_syscall_WRK\n"
|
||||||
|
".section \".opd\",\"aw\"\n"
|
||||||
|
@@ -392,6 +393,11 @@ asm(
|
||||||
|
".type .do_syscall_WRK,@function\n"
|
||||||
|
".globl .do_syscall_WRK\n"
|
||||||
|
".do_syscall_WRK:\n"
|
||||||
|
+#else
|
||||||
|
+".globl do_syscall_WRK\n"
|
||||||
|
+".type do_syscall_WRK,@function\n"
|
||||||
|
+"do_syscall_WRK:\n"
|
||||||
|
+#endif
|
||||||
|
" std 3,-16(1)\n" /* stash arg */
|
||||||
|
" ld 8, 48(3)\n" /* sc arg 6 */
|
||||||
|
" ld 7, 40(3)\n" /* sc arg 5 */
|
||||||
|
Index: valgrind-3.9.0/coregrind/m_trampoline.S
|
||||||
|
===================================================================
|
||||||
|
--- valgrind-3.9.0.orig/coregrind/m_trampoline.S
|
||||||
|
+++ valgrind-3.9.0/coregrind/m_trampoline.S
|
||||||
|
@@ -441,6 +441,13 @@ VG_(ppc64_linux_SUBST_FOR_rt_sigreturn):
|
||||||
|
VG_(ppctoc_magic_redirect_return_stub):
|
||||||
|
trap
|
||||||
|
|
||||||
|
+#if _CALL_ELF == 2
|
||||||
|
+ .globl VG_(ppc64_linux_REDIR_FOR_strlen)
|
||||||
|
+ .size VG_(ppc64_linux_REDIR_FOR_strlen), \
|
||||||
|
+ .L0end-VG_(ppc64_linux_REDIR_FOR_strlen)
|
||||||
|
+ .type VG_(ppc64_linux_REDIR_FOR_strlen), @function
|
||||||
|
+VG_(ppc64_linux_REDIR_FOR_strlen):
|
||||||
|
+#else
|
||||||
|
/* this function is written using the "dotless" ABI convention */
|
||||||
|
.align 2
|
||||||
|
.globl VG_(ppc64_linux_REDIR_FOR_strlen)
|
||||||
|
@@ -454,6 +461,7 @@ VG_(ppc64_linux_REDIR_FOR_strlen):
|
||||||
|
.type VG_(ppc64_linux_REDIR_FOR_strlen), @function
|
||||||
|
|
||||||
|
.L.VG_(ppc64_linux_REDIR_FOR_strlen):
|
||||||
|
+#endif
|
||||||
|
mr 9,3
|
||||||
|
lbz 0,0(3)
|
||||||
|
li 3,0
|
||||||
|
@@ -471,6 +479,13 @@ VG_(ppc64_linux_REDIR_FOR_strlen):
|
||||||
|
.byte 0,0,0,0,0,0,0,0
|
||||||
|
.L0end:
|
||||||
|
|
||||||
|
+#if _CALL_ELF == 2
|
||||||
|
+ .globl VG_(ppc64_linux_REDIR_FOR_strchr)
|
||||||
|
+ .size VG_(ppc64_linux_REDIR_FOR_strchr), \
|
||||||
|
+ .L1end-VG_(ppc64_linux_REDIR_FOR_strchr)
|
||||||
|
+ .type VG_(ppc64_linux_REDIR_FOR_strchr),@function
|
||||||
|
+VG_(ppc64_linux_REDIR_FOR_strchr):
|
||||||
|
+#else
|
||||||
|
/* this function is written using the "dotless" ABI convention */
|
||||||
|
.align 2
|
||||||
|
.globl VG_(ppc64_linux_REDIR_FOR_strchr)
|
||||||
|
@@ -484,6 +499,7 @@ VG_(ppc64_linux_REDIR_FOR_strchr):
|
||||||
|
.type VG_(ppc64_linux_REDIR_FOR_strchr),@function
|
||||||
|
|
||||||
|
.L.VG_(ppc64_linux_REDIR_FOR_strchr):
|
||||||
|
+#endif
|
||||||
|
lbz 0,0(3)
|
||||||
|
rldicl 4,4,0,56
|
||||||
|
cmpw 7,4,0
|
||||||
|
Index: valgrind-3.9.0/coregrind/m_dispatch/dispatch-ppc64-linux.S
|
||||||
|
===================================================================
|
||||||
|
--- valgrind-3.9.0.orig/coregrind/m_dispatch/dispatch-ppc64-linux.S
|
||||||
|
+++ valgrind-3.9.0/coregrind/m_dispatch/dispatch-ppc64-linux.S
|
||||||
|
@@ -72,6 +72,11 @@ void VG_(disp_run_translations)( UWord*
|
||||||
|
*/
|
||||||
|
|
||||||
|
.section ".text"
|
||||||
|
+#if _CALL_ELF == 2
|
||||||
|
+.globl VG_(disp_run_translations)
|
||||||
|
+.type VG_(disp_run_translations),@function
|
||||||
|
+VG_(disp_run_translations):
|
||||||
|
+#else
|
||||||
|
.align 2
|
||||||
|
.globl VG_(disp_run_translations)
|
||||||
|
.section ".opd","aw"
|
||||||
|
@@ -82,12 +87,27 @@ VG_(disp_run_translations):
|
||||||
|
.type .VG_(disp_run_translations),@function
|
||||||
|
.globl .VG_(disp_run_translations)
|
||||||
|
.VG_(disp_run_translations):
|
||||||
|
+#endif
|
||||||
|
/* r3 holds two_words */
|
||||||
|
/* r4 holds guest_state */
|
||||||
|
/* r5 holds host_addr */
|
||||||
|
|
||||||
|
+#if _CALL_ELF != 2
|
||||||
|
+ /* ----- entry point to VG_(disp_run_translations) ----- */
|
||||||
|
+ /* PPC64 ABIv1 saves LR->16(prt_sp), CR->8(prt_sp)) */
|
||||||
|
+
|
||||||
|
+ /* Save lr, cr */
|
||||||
|
+ mflr 6
|
||||||
|
+ std 6,16(1)
|
||||||
|
+ mfcr 6
|
||||||
|
+ std 6,8(1)
|
||||||
|
+
|
||||||
|
+ /* New stack frame */
|
||||||
|
+ stdu 1,-624(1) /* sp should maintain 16-byte alignment */
|
||||||
|
+#else
|
||||||
|
+/* FIXME !!!!!!!!! */
|
||||||
|
/* ----- entry point to VG_(disp_run_translations) ----- */
|
||||||
|
- /* PPC64 ABI saves LR->16(prt_sp), CR->8(prt_sp)) */
|
||||||
|
+ /* PPC64 ABIv2 saves LR->16(prt_sp), CR->8(prt_sp)) */
|
||||||
|
|
||||||
|
/* Save lr, cr */
|
||||||
|
mflr 6
|
||||||
|
@@ -97,6 +117,7 @@ VG_(disp_run_translations):
|
||||||
|
|
||||||
|
/* New stack frame */
|
||||||
|
stdu 1,-624(1) /* sp should maintain 16-byte alignment */
|
||||||
|
+#endif
|
||||||
|
|
||||||
|
/* General reg save area : 152 bytes */
|
||||||
|
std 31,472(1)
|
||||||
|
@@ -392,6 +413,11 @@ VG_(disp_run_translations):
|
||||||
|
|
||||||
|
/* ------ Chain me to slow entry point ------ */
|
||||||
|
.section ".text"
|
||||||
|
+#if _CALL_ELF == 2
|
||||||
|
+ .globl VG_(disp_cp_chain_me_to_slowEP)
|
||||||
|
+ .type VG_(disp_cp_chain_me_to_slowEP),@function
|
||||||
|
+VG_(disp_cp_chain_me_to_slowEP):
|
||||||
|
+#else
|
||||||
|
.align 2
|
||||||
|
.globl VG_(disp_cp_chain_me_to_slowEP)
|
||||||
|
.section ".opd","aw"
|
||||||
|
@@ -402,6 +428,7 @@ VG_(disp_cp_chain_me_to_slowEP):
|
||||||
|
.type .VG_(disp_cp_chain_me_to_slowEP),@function
|
||||||
|
.globl .VG_(disp_cp_chain_me_to_slowEP)
|
||||||
|
.VG_(disp_cp_chain_me_to_slowEP):
|
||||||
|
+#endif
|
||||||
|
/* We got called. The return address indicates
|
||||||
|
where the patching needs to happen. Collect
|
||||||
|
the return address and, exit back to C land,
|
||||||
|
@@ -417,6 +444,11 @@ VG_(disp_cp_chain_me_to_slowEP):
|
||||||
|
|
||||||
|
/* ------ Chain me to fast entry point ------ */
|
||||||
|
.section ".text"
|
||||||
|
+#if _CALL_ELF == 2
|
||||||
|
+ .globl VG_(disp_cp_chain_me_to_fastEP)
|
||||||
|
+ .type VG_(disp_cp_chain_me_to_fastEP),@function
|
||||||
|
+VG_(disp_cp_chain_me_to_fastEP):
|
||||||
|
+#else
|
||||||
|
.align 2
|
||||||
|
.globl VG_(disp_cp_chain_me_to_fastEP)
|
||||||
|
.section ".opd","aw"
|
||||||
|
@@ -427,6 +459,7 @@ VG_(disp_cp_chain_me_to_fastEP):
|
||||||
|
.type .VG_(disp_cp_chain_me_to_fastEP),@function
|
||||||
|
.globl .VG_(disp_cp_chain_me_to_fastEP)
|
||||||
|
.VG_(disp_cp_chain_me_to_fastEP):
|
||||||
|
+#endif
|
||||||
|
/* We got called. The return address indicates
|
||||||
|
where the patching needs to happen. Collect
|
||||||
|
the return address and, exit back to C land,
|
||||||
|
@@ -442,6 +475,11 @@ VG_(disp_cp_chain_me_to_fastEP):
|
||||||
|
|
||||||
|
/* ------ Indirect but boring jump ------ */
|
||||||
|
.section ".text"
|
||||||
|
+#if _CALL_ELF == 2
|
||||||
|
+ .globl VG_(disp_cp_xindir)
|
||||||
|
+ .type VG_(disp_cp_xindir),@function
|
||||||
|
+VG_(disp_cp_xindir):
|
||||||
|
+#else
|
||||||
|
.align 2
|
||||||
|
.globl VG_(disp_cp_xindir)
|
||||||
|
.section ".opd","aw"
|
||||||
|
@@ -452,6 +490,7 @@ VG_(disp_cp_xindir):
|
||||||
|
.type .VG_(disp_cp_xindir),@function
|
||||||
|
.globl .VG_(disp_cp_xindir)
|
||||||
|
.VG_(disp_cp_xindir):
|
||||||
|
+#endif
|
||||||
|
/* Where are we going? */
|
||||||
|
ld 3,OFFSET_ppc64_CIA(31)
|
||||||
|
|
||||||
|
@@ -493,6 +532,11 @@ VG_(disp_cp_xindir):
|
||||||
|
|
||||||
|
/* ------ Assisted jump ------ */
|
||||||
|
.section ".text"
|
||||||
|
+#if _CALL_ELF == 2
|
||||||
|
+ .globl VG_(disp_cp_xassisted)
|
||||||
|
+ .type VG_(disp_cp_xassisted),@function
|
||||||
|
+VG_(disp_cp_xassisted):
|
||||||
|
+#else
|
||||||
|
.align 2
|
||||||
|
.globl VG_(disp_cp_xassisted)
|
||||||
|
.section ".opd","aw"
|
||||||
|
@@ -503,6 +547,7 @@ VG_(disp_cp_xassisted):
|
||||||
|
.type .VG_(disp_cp_xassisted),@function
|
||||||
|
.globl .VG_(disp_cp_xassisted)
|
||||||
|
.VG_(disp_cp_xassisted):
|
||||||
|
+#endif
|
||||||
|
/* r31 contains the TRC */
|
||||||
|
mr 6,31
|
||||||
|
li 7,0
|
||||||
|
@@ -510,6 +555,11 @@ VG_(disp_cp_xassisted):
|
||||||
|
|
||||||
|
/* ------ Event check failed ------ */
|
||||||
|
.section ".text"
|
||||||
|
+#if _CALL_ELF == 2
|
||||||
|
+ .globl VG_(disp_cp_evcheck_fail)
|
||||||
|
+ .type VG_(disp_cp_evcheck_fail),@function
|
||||||
|
+VG_(disp_cp_evcheck_fail):
|
||||||
|
+#else
|
||||||
|
.align 2
|
||||||
|
.globl VG_(disp_cp_evcheck_fail)
|
||||||
|
.section ".opd","aw"
|
||||||
|
@@ -520,12 +570,17 @@ VG_(disp_cp_evcheck_fail):
|
||||||
|
.type .VG_(disp_cp_evcheck_fail),@function
|
||||||
|
.globl .VG_(disp_cp_evcheck_fail)
|
||||||
|
.VG_(disp_cp_evcheck_fail):
|
||||||
|
+#endif
|
||||||
|
li 6,VG_TRC_INNER_COUNTERZERO
|
||||||
|
li 7,0
|
||||||
|
b .postamble
|
||||||
|
|
||||||
|
|
||||||
|
+#if _CALL_ELF == 2
|
||||||
|
+.size .VG_(disp_run_translations), .-VG_(disp_run_translations)
|
||||||
|
+#else
|
||||||
|
.size .VG_(disp_run_translations), .-.VG_(disp_run_translations)
|
||||||
|
+#endif
|
||||||
|
|
||||||
|
/* Let the linker know we don't need an executable stack */
|
||||||
|
.section .note.GNU-stack,"",@progbits
|
||||||
|
Index: valgrind-3.9.0/coregrind/m_syswrap/syswrap-ppc64-linux.c
|
||||||
|
===================================================================
|
||||||
|
--- valgrind-3.9.0.orig/coregrind/m_syswrap/syswrap-ppc64-linux.c
|
||||||
|
+++ valgrind-3.9.0/coregrind/m_syswrap/syswrap-ppc64-linux.c
|
||||||
|
@@ -78,6 +78,11 @@ void ML_(call_on_new_stack_0_1) ( Addr s
|
||||||
|
address, the second word is the TOC ptr (r2), and the third word is
|
||||||
|
the static chain value. */
|
||||||
|
asm(
|
||||||
|
+#if _CALL_ELF == 2
|
||||||
|
+" .globl vgModuleLocal_call_on_new_stack_0_1\n"
|
||||||
|
+" .type vgModuleLocal_call_on_new_stack_0_1,@function\n"
|
||||||
|
+"vgModuleLocal_call_on_new_stack_0_1:\n"
|
||||||
|
+#else
|
||||||
|
" .align 2\n"
|
||||||
|
" .globl vgModuleLocal_call_on_new_stack_0_1\n"
|
||||||
|
" .section \".opd\",\"aw\"\n"
|
||||||
|
@@ -88,6 +93,7 @@ asm(
|
||||||
|
" .type .vgModuleLocal_call_on_new_stack_0_1,@function\n"
|
||||||
|
" .globl .vgModuleLocal_call_on_new_stack_0_1\n"
|
||||||
|
".vgModuleLocal_call_on_new_stack_0_1:\n"
|
||||||
|
+#endif
|
||||||
|
" mr %r1,%r3\n\t" // stack to %sp
|
||||||
|
" mtlr %r4\n\t" // retaddr to %lr
|
||||||
|
" ld 5,0(5)\n\t" // load f_ptr from f_desc[0]
|
||||||
|
@@ -170,6 +176,11 @@ ULong do_syscall_clone_ppc64_linux ( Wor
|
||||||
|
Int* parent_tid,
|
||||||
|
void/*vki_modify_ldt_t*/ * );
|
||||||
|
asm(
|
||||||
|
+#if _CALL_ELF == 2
|
||||||
|
+" .globl do_syscall_clone_ppc64_linux\n"
|
||||||
|
+" .type do_syscall_clone_ppc64_linux,@function\n"
|
||||||
|
+"do_syscall_clone_ppc64_linux:\n"
|
||||||
|
+#else
|
||||||
|
" .align 2\n"
|
||||||
|
" .globl do_syscall_clone_ppc64_linux\n"
|
||||||
|
" .section \".opd\",\"aw\"\n"
|
||||||
|
@@ -180,6 +191,7 @@ asm(
|
||||||
|
" .type .do_syscall_clone_ppc64_linux,@function\n"
|
||||||
|
" .globl .do_syscall_clone_ppc64_linux\n"
|
||||||
|
".do_syscall_clone_ppc64_linux:\n"
|
||||||
|
+#endif
|
||||||
|
" stdu 1,-64(1)\n"
|
||||||
|
" std 29,40(1)\n"
|
||||||
|
" std 30,48(1)\n"
|
||||||
|
Index: valgrind-3.9.0/coregrind/m_syswrap/syscall-ppc64-linux.S
|
||||||
|
===================================================================
|
||||||
|
--- valgrind-3.9.0.orig/coregrind/m_syswrap/syscall-ppc64-linux.S
|
||||||
|
+++ valgrind-3.9.0/coregrind/m_syswrap/syscall-ppc64-linux.S
|
||||||
|
@@ -73,6 +73,11 @@
|
||||||
|
/* from vki_arch.h */
|
||||||
|
#define VKI_SIG_SETMASK 2
|
||||||
|
|
||||||
|
+#if _CALL_ELF == 2
|
||||||
|
+.globl ML_(do_syscall_for_client_WRK)
|
||||||
|
+.type ML_(do_syscall_for_client_WRK),@function
|
||||||
|
+ML_(do_syscall_for_client_WRK):
|
||||||
|
+#else
|
||||||
|
.align 2
|
||||||
|
.globl ML_(do_syscall_for_client_WRK)
|
||||||
|
.section ".opd","aw"
|
||||||
|
@@ -83,6 +88,7 @@ ML_(do_syscall_for_client_WRK):
|
||||||
|
.type .ML_(do_syscall_for_client_WRK),@function
|
||||||
|
.globl .ML_(do_syscall_for_client_WRK)
|
||||||
|
.ML_(do_syscall_for_client_WRK):
|
||||||
|
+#endif
|
||||||
|
/* make a stack frame */
|
||||||
|
stdu 1,-80(1)
|
||||||
|
std 31,72(1)
|
@ -1,4 +1,12 @@
|
|||||||
-------------------------------------------------------------------
|
-------------------------------------------------------------------
|
||||||
|
Mon Jan 13 09:12:21 UTC 2014 - normand@linux.vnet.ibm.com
|
||||||
|
|
||||||
|
- add support of ppc64le architecture
|
||||||
|
|
||||||
|
- added patches:
|
||||||
|
* valgrind-3.9.0-merge.patches.from.Paul.McKenney.patch
|
||||||
|
* valgrind-3.9.0-ppc64le-abiv2.patch
|
||||||
|
-------------------------------------------------------------------
|
||||||
Fri Jan 3 19:26:23 UTC 2014 - dmueller@suse.com
|
Fri Jan 3 19:26:23 UTC 2014 - dmueller@suse.com
|
||||||
|
|
||||||
- add armv6-support.diff: Add support for armv6hl
|
- add armv6-support.diff: Add support for armv6hl
|
||||||
|
@ -40,6 +40,8 @@ Source0: http://valgrind.org/downloads/%{name}-%{version}.tar.bz2
|
|||||||
# svn di svn://svn.valgrind.org/vex/tags/VEX_3_5_0 svn://svn.valgrind.org/vex/branches/VEX_3_5_BRANCH > VEX_3_5_BRANCH.diff
|
# svn di svn://svn.valgrind.org/vex/tags/VEX_3_5_0 svn://svn.valgrind.org/vex/branches/VEX_3_5_BRANCH > VEX_3_5_BRANCH.diff
|
||||||
Patch1: jit-register-unregister.diff
|
Patch1: jit-register-unregister.diff
|
||||||
Patch2: armv6-support.diff
|
Patch2: armv6-support.diff
|
||||||
|
Patch3: valgrind-3.9.0-merge.patches.from.Paul.McKenney.patch
|
||||||
|
Patch4: valgrind-3.9.0-ppc64le-abiv2.patch
|
||||||
# during building the major version of glibc is built into the suppression file
|
# during building the major version of glibc is built into the suppression file
|
||||||
%define glibc_main_version %(getconf GNU_LIBC_VERSION | cut -d' ' -f2 | cut -d. -f1)
|
%define glibc_main_version %(getconf GNU_LIBC_VERSION | cut -d' ' -f2 | cut -d. -f1)
|
||||||
%define glibc_major_version %(getconf GNU_LIBC_VERSION | cut -d' ' -f2 | cut -d. -f2)
|
%define glibc_major_version %(getconf GNU_LIBC_VERSION | cut -d' ' -f2 | cut -d. -f2)
|
||||||
@ -50,7 +52,7 @@ Provides: valgrind-devel = %version
|
|||||||
%endif
|
%endif
|
||||||
Provides: callgrind = %version
|
Provides: callgrind = %version
|
||||||
Obsoletes: callgrind < %version
|
Obsoletes: callgrind < %version
|
||||||
ExclusiveArch: %ix86 x86_64 ppc ppc64 s390x armv7l armv7hl armv6l armv6hl
|
ExclusiveArch: %ix86 x86_64 ppc ppc64 ppc64le s390x armv7l armv7hl armv6l armv6hl
|
||||||
%if %suse_version > 1100
|
%if %suse_version > 1100
|
||||||
%define building_docs 1
|
%define building_docs 1
|
||||||
%else
|
%else
|
||||||
@ -138,6 +140,8 @@ cd VEX
|
|||||||
cd ..
|
cd ..
|
||||||
%patch1
|
%patch1
|
||||||
%patch2
|
%patch2
|
||||||
|
%patch3 -p1
|
||||||
|
%patch4 -p1
|
||||||
|
|
||||||
%build
|
%build
|
||||||
%ifarch %arm
|
%ifarch %arm
|
||||||
@ -190,6 +194,9 @@ cp -a README* NEWS AUTHORS COPYING COPYING.DOCS $RPM_BUILD_ROOT/%_defaultdocdir/
|
|||||||
%ifarch ppc64
|
%ifarch ppc64
|
||||||
%_libdir/valgrind/*-ppc64-linux
|
%_libdir/valgrind/*-ppc64-linux
|
||||||
%endif
|
%endif
|
||||||
|
%ifarch ppc64le
|
||||||
|
%_libdir/valgrind/*-ppc64le-linux
|
||||||
|
%endif
|
||||||
%ifarch s390x
|
%ifarch s390x
|
||||||
%_libdir/valgrind/*-s390x-linux
|
%_libdir/valgrind/*-s390x-linux
|
||||||
%endif
|
%endif
|
||||||
|
Loading…
Reference in New Issue
Block a user