From 1f061d15346a4cbc63ef71005ec40f1f46139dce Mon Sep 17 00:00:00 2001 From: CentOS Sources Date: Aug 01 2017 03:39:12 +0000 Subject: import valgrind-3.12.0-8.el7 --- diff --git a/.gitignore b/.gitignore index 025b731..4177c02 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1 @@ -SOURCES/valgrind-3.11.0.tar.bz2 +SOURCES/valgrind-3.12.0.tar.bz2 diff --git a/.valgrind.metadata b/.valgrind.metadata index d7087b5..6b371bb 100644 --- a/.valgrind.metadata +++ b/.valgrind.metadata @@ -1 +1 @@ -340757e91d9e83591158fe8bb985c6b11bc53de5 SOURCES/valgrind-3.11.0.tar.bz2 +7a6878bf998c60d1e377a4f22ebece8d9305bda4 SOURCES/valgrind-3.12.0.tar.bz2 diff --git a/SOURCES/valgrind-3.11.0-amd64-fcom.patch b/SOURCES/valgrind-3.11.0-amd64-fcom.patch deleted file mode 100644 index 0458258..0000000 --- a/SOURCES/valgrind-3.11.0-amd64-fcom.patch +++ /dev/null @@ -1,49 +0,0 @@ -commit 6f472ff11be7fa4a1114b2e3d321609717325311 -Author: tom -Date: Wed Feb 3 10:14:18 2016 +0000 - - Handle missing FCOM case on amd64. - - Patch from Mark Harris on BZ#212352. - - - git-svn-id: svn://svn.valgrind.org/vex/trunk@3207 8f6e269a-dfd6-0310-a8e1-e2731360e62c - -diff --git a/VEX/priv/guest_amd64_toIR.c b/VEX/priv/guest_amd64_toIR.c -index af4817f..936d16f 100644 ---- a/VEX/priv/guest_amd64_toIR.c -+++ b/VEX/priv/guest_amd64_toIR.c -@@ -6401,19 +6401,20 @@ ULong dis_FPU ( /*OUT*/Bool* decode_ok, - fp_do_op_mem_ST_0 ( addr, "mul", dis_buf, Iop_MulF64, True ); - break; - --//.. case 2: /* FCOM double-real */ --//.. DIP("fcoml %s\n", dis_buf); --//.. /* This forces C1 to zero, which isn't right. */ --//.. put_C3210( --//.. binop( Iop_And32, --//.. binop(Iop_Shl32, --//.. binop(Iop_CmpF64, --//.. get_ST(0), --//.. loadLE(Ity_F64,mkexpr(addr))), --//.. mkU8(8)), --//.. mkU32(0x4500) --//.. )); --//.. break; -+ case 2: /* FCOM double-real */ -+ DIP("fcoml %s\n", dis_buf); -+ /* This forces C1 to zero, which isn't right. */ -+ put_C3210( -+ unop(Iop_32Uto64, -+ binop( Iop_And32, -+ binop(Iop_Shl32, -+ binop(Iop_CmpF64, -+ get_ST(0), -+ loadLE(Ity_F64,mkexpr(addr))), -+ mkU8(8)), -+ mkU32(0x4500) -+ ))); -+ break; - - case 3: /* FCOMP double-real */ - DIP("fcompl %s\n", dis_buf); diff --git a/SOURCES/valgrind-3.11.0-amd64-ld-index.patch b/SOURCES/valgrind-3.11.0-amd64-ld-index.patch deleted file mode 100644 index 7d6e336..0000000 --- a/SOURCES/valgrind-3.11.0-amd64-ld-index.patch +++ /dev/null @@ -1,92 +0,0 @@ -commit b39a5966a9e64d343b65d7678e4759aed6860bec -Author: mjw -Date: Wed Feb 24 11:12:01 2016 +0000 - - Bug 359733 amd64 implement ld.so strchr/index override like x86 - - The suppression and redirection for ld.so strchr/index isn't needed for - x86. When testing a newer glibc or calling the ld.so through an alternative - path neither the suppression (doesn't match path/name) nor the redirection - (triggers too late) works. Since there is already an hardwire override for - strlen in amd64 ld.so anyway it makes sense to also hardware index (it is - always called when ld.so loads the preload images). - - This was also explained in the easy hacks Fosdem session. - See https://bugs.kde.org/show_bug.cgi?id=359733 for a pointer. - - git-svn-id: svn://svn.valgrind.org/valgrind/trunk@15812 a5019735-40e9-0310-863c-91ae7b9d1cf9 - -diff --git a/coregrind/m_redir.c b/coregrind/m_redir.c -index dcf1fb4..dae47f1 100644 ---- a/coregrind/m_redir.c -+++ b/coregrind/m_redir.c -@@ -1353,6 +1353,9 @@ void VG_(redir_initialise) ( void ) - if (0==VG_(strcmp)("Memcheck", VG_(details).name)) { - - add_hardwired_spec( -+ "ld-linux-x86-64.so.2", "index", -+ (Addr)&VG_(amd64_linux_REDIR_FOR_index), NULL); -+ add_hardwired_spec( - "ld-linux-x86-64.so.2", "strlen", - (Addr)&VG_(amd64_linux_REDIR_FOR_strlen), - # ifndef GLIBC_MANDATORY_STRLEN_REDIRECT -diff --git a/coregrind/m_trampoline.S b/coregrind/m_trampoline.S -index cac2288..176ea66 100644 ---- a/coregrind/m_trampoline.S -+++ b/coregrind/m_trampoline.S -@@ -220,6 +220,30 @@ VG_(amd64_linux_REDIR_FOR_strlen): - .LfnE5: - .size VG_(amd64_linux_REDIR_FOR_strlen), .-VG_(amd64_linux_REDIR_FOR_strlen) - -+.global VG_(amd64_linux_REDIR_FOR_index) -+.type VG_(amd64_linux_REDIR_FOR_index), @function -+VG_(amd64_linux_REDIR_FOR_index): -+ movzbl (%rdi), %eax -+ movl %esi, %edx -+ cmpb %sil, %al -+ jne .L4 -+ jmp .L5 -+.L10: -+ addq $1, %rdi -+ movzbl (%rdi), %eax -+ cmpb %dl, %al -+ je .L5 -+.L4: -+ testb %al, %al -+ jne .L10 -+ xorl %eax, %eax -+ ret -+.L5: -+ movq %rdi, %rax -+ ret -+.size VG_(amd64_linux_REDIR_FOR_index), .-VG_(amd64_linux_REDIR_FOR_index) -+ -+ - - /* A CIE for the above four functions, followed by their FDEs */ - .section .eh_frame,"a",@progbits -diff --git a/coregrind/pub_core_trampoline.h b/coregrind/pub_core_trampoline.h -index eda5ec6..1396519 100644 ---- a/coregrind/pub_core_trampoline.h -+++ b/coregrind/pub_core_trampoline.h -@@ -71,6 +71,7 @@ extern Addr VG_(amd64_linux_REDIR_FOR_vgettimeofday); - extern Addr VG_(amd64_linux_REDIR_FOR_vtime); - extern Addr VG_(amd64_linux_REDIR_FOR_vgetcpu); - extern UInt VG_(amd64_linux_REDIR_FOR_strlen)( void* ); -+extern Char* VG_(amd64_linux_REDIR_FOR_index) ( const Char*, Int ); - #endif - - #if defined(VGP_ppc32_linux) -diff --git a/shared/vg_replace_strmem.c b/shared/vg_replace_strmem.c -index 005b679..8de085a 100644 ---- a/shared/vg_replace_strmem.c -+++ b/shared/vg_replace_strmem.c -@@ -247,7 +247,7 @@ static inline void my_exit ( int x ) - STRCHR(VG_Z_LIBC_SONAME, __strchr_sse2) - STRCHR(VG_Z_LIBC_SONAME, __strchr_sse2_no_bsf) - STRCHR(VG_Z_LIBC_SONAME, index) --# if !defined(VGP_x86_linux) -+# if !defined(VGP_x86_linux) && !defined(VGP_amd64_linux) - STRCHR(VG_Z_LD_LINUX_SO_2, strchr) - STRCHR(VG_Z_LD_LINUX_SO_2, index) - STRCHR(VG_Z_LD_LINUX_X86_64_SO_2, strchr) diff --git a/SOURCES/valgrind-3.11.0-arm64-handle_at.patch b/SOURCES/valgrind-3.11.0-arm64-handle_at.patch deleted file mode 100644 index 66e409a..0000000 --- a/SOURCES/valgrind-3.11.0-arm64-handle_at.patch +++ /dev/null @@ -1,31 +0,0 @@ -commit 4eec8a00bed541842afbed7e1f95551b0c786570 -Author: mjw -Date: Mon May 30 14:17:25 2016 +0000 - - Bug #363705 arm64 missing syscall name_to_handle_at and open_by_handle_at - - git-svn-id: svn://svn.valgrind.org/valgrind/trunk@15887 a5019735-40e9-0310-863c-91ae7b9d1cf9 - -diff --git a/coregrind/m_syswrap/syswrap-arm64-linux.c b/coregrind/m_syswrap/syswrap-arm64-linux.c -index 0b78f20..8842765 100644 ---- a/coregrind/m_syswrap/syswrap-arm64-linux.c -+++ b/coregrind/m_syswrap/syswrap-arm64-linux.c -@@ -1096,6 +1096,9 @@ static SyscallTableEntry syscall_main_table[] = { - - GENXY(__NR_wait4, sys_wait4), // 260 - -+ LINXY(__NR_name_to_handle_at, sys_name_to_handle_at), // 264 -+ LINXY(__NR_open_by_handle_at, sys_open_by_handle_at), // 265 -+ - LINX_(__NR_syncfs, sys_syncfs), // 267 - - LINXY(__NR_sendmmsg, sys_sendmmsg), // 269 -@@ -1374,8 +1377,6 @@ static SyscallTableEntry syscall_main_table[] = { - //ZZ LINXY(__NR_epoll_create1, sys_epoll_create1), // 357 - //ZZ LINXY(__NR_rt_tgsigqueueinfo, sys_rt_tgsigqueueinfo),// 363 - //ZZ --//ZZ LINXY(__NR_name_to_handle_at, sys_name_to_handle_at),// 370 --//ZZ LINXY(__NR_open_by_handle_at, sys_open_by_handle_at),// 371 - //ZZ LINXY(__NR_clock_adjtime, sys_clock_adjtime) // 372 - }; - diff --git a/SOURCES/valgrind-3.11.0-arm64-ldpsw.patch b/SOURCES/valgrind-3.11.0-arm64-ldpsw.patch deleted file mode 100644 index 4ac61b4..0000000 --- a/SOURCES/valgrind-3.11.0-arm64-ldpsw.patch +++ /dev/null @@ -1,268 +0,0 @@ -commit 8f36c464966045b51a75144ca4c65f354082194f -Author: mjw -Date: Tue Mar 15 15:08:01 2016 +0000 - - Bug #360425 - arm64 unsupported instruction ldpsw tests. - - Add tests for ldpsw implementation VEX svn r3212. - - git-svn-id: svn://svn.valgrind.org/valgrind/trunk@15830 a5019735-40e9-0310-863c-91ae7b9d1cf9 - -diff --git a/none/tests/arm64/memory.c b/none/tests/arm64/memory.c -index cbf31fd..91949ac 100644 ---- a/none/tests/arm64/memory.c -+++ b/none/tests/arm64/memory.c -@@ -280,6 +280,18 @@ TESTINST2_hide2("ldarb w21, [x22]", AREA_MID, x21,x22,0); - - //////////////////////////////////////////////////////////////// - printf("STL{R,RH,RB} (entirely MISSING)\n"); -+ -+//////////////////////////////////////////////////////////////// -+// TESTINST2_hide2 allows use of x28 as scratch -+printf("LDPSW (immediate, simm7)\n"); -+ -+TESTINST2_hide2("ldpsw x21, x28, [x22], #-24 ; add x21,x21,x28", AREA_MID, x21,x22,0); -+TESTINST2_hide2("ldpsw x21, x28, [x22], #-24 ; eor x21,x21,x28", AREA_MID, x21,x22,0); -+TESTINST2_hide2("ldpsw x21, x28, [x22, #-40]! ; add x21,x21,x28", AREA_MID, x21,x22,0); -+TESTINST2_hide2("ldpsw x21, x28, [x22, #-40]! ; eor x21,x21,x28", AREA_MID, x21,x22,0); -+TESTINST2_hide2("ldpsw x21, x28, [x22, #-40] ; add x21,x21,x28", AREA_MID, x21,x22,0); -+TESTINST2_hide2("ldpsw x21, x28, [x22, #-40] ; eor x21,x21,x28", AREA_MID, x21,x22,0); -+ - } /* end of test_memory_old() */ - - -@@ -1608,6 +1620,12 @@ MEM_TEST("prfm pstl2strm, [x5,w6,uxtw #3]", 12, 4); - MEM_TEST("prfm pstl3keep, [x5,w6,sxtw #0]", 12, 4); - MEM_TEST("prfm pstl3strm, [x5,w6,sxtw #3]", 12, -4); - -+//////////////////////////////////////////////////////////////// -+printf("LDPSW (immediate, simm7)\n"); -+MEM_TEST("ldpsw x13, x23, [x5], #-24", 0, 0); -+MEM_TEST("ldpsw x13, x23, [x5, #-40]!", 0, 0); -+MEM_TEST("ldpsw x13, x23, [x5, #-40]", 0, 0); -+ - } /* end of test_memory2() */ - - //////////////////////////////////////////////////////////////// -diff --git a/none/tests/arm64/memory.stdout.exp b/none/tests/arm64/memory.stdout.exp -index eb6ec3f..be57108 100644 ---- a/none/tests/arm64/memory.stdout.exp -+++ b/none/tests/arm64/memory.stdout.exp -@@ -98,6 +98,13 @@ ldar w21, [x22] :: rd 00000000f3f2f1f0 rn (hidden), cin 0, nzcv 00000000 - ldarh w21, [x22] :: rd 000000000000f1f0 rn (hidden), cin 0, nzcv 00000000 - ldarb w21, [x22] :: rd 00000000000000f0 rn (hidden), cin 0, nzcv 00000000 - STL{R,RH,RB} (entirely MISSING) -+LDPSW (immediate, simm7) -+ldpsw x21, x28, [x22], #-24 ; add x21,x21,x28 :: rd ffffffffebe9e7e4 rn (hidden), cin 0, nzcv 00000000 -+ldpsw x21, x28, [x22], #-24 ; eor x21,x21,x28 :: rd 0000000004040404 rn (hidden), cin 0, nzcv 00000000 -+ldpsw x21, x28, [x22, #-40]! ; add x21,x21,x28 :: rd ffffffff9b999794 rn (hidden), cin 0, nzcv 00000000 -+ldpsw x21, x28, [x22, #-40]! ; eor x21,x21,x28 :: rd 0000000004040404 rn (hidden), cin 0, nzcv 00000000 -+ldpsw x21, x28, [x22, #-40] ; add x21,x21,x28 :: rd ffffffff9b999794 rn (hidden), cin 0, nzcv 00000000 -+ldpsw x21, x28, [x22, #-40] ; eor x21,x21,x28 :: rd 0000000004040404 rn (hidden), cin 0, nzcv 00000000 - LDR,STR (immediate, uimm12)ldr x13, [x5, #24] with x5 = middle_of_block+-1, x6=0 - [ 0] .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. - [ 16] .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. -@@ -26258,3 +26265,94 @@ prfm pstl3strm, [x5,w6,sxtw #3] with x5 = middle_of_block+12, x6=-4 - 0 x5 (sub, base reg) - 0 x6 (sub, index reg) - -+LDPSW (immediate, simm7) -+ldpsw x13, x23, [x5], #-24 with x5 = middle_of_block+0, x6=0 -+ [ 0] .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. -+ [ 16] .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. -+ [ 32] .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. -+ [ 48] .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. -+ [ 64] .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. -+ [ 80] .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. -+ [ 96] .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. -+ [112] .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. -+ [128] .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. -+ [144] .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. -+ [160] .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. -+ [176] .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. -+ [192] .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. -+ [208] .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. -+ [224] .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. -+ [240] .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. -+ 5430cb99daf026bb x13 (xor, xfer intreg #1) -+ 58eb9b702726900d x23 (xor, xfer intreg #2) -+ 0000000000000000 v17.d[0] (xor, xfer vecreg #1) -+ 0000000000000000 v17.d[1] (xor, xfer vecreg #1) -+ 0000000000000000 v18.d[0] (xor, xfer vecreg #2) -+ 0000000000000000 v18.d[1] (xor, xfer vecreg #2) -+ 0000000000000000 v19.d[0] (xor, xfer vecreg #3) -+ 0000000000000000 v19.d[1] (xor, xfer vecreg #3) -+ 0000000000000000 v20.d[0] (xor, xfer vecreg #3) -+ 0000000000000000 v20.d[1] (xor, xfer vecreg #3) -+ -24 x5 (sub, base reg) -+ 0 x6 (sub, index reg) -+ -+ldpsw x13, x23, [x5, #-40]! with x5 = middle_of_block+0, x6=0 -+ [ 0] .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. -+ [ 16] .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. -+ [ 32] .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. -+ [ 48] .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. -+ [ 64] .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. -+ [ 80] .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. -+ [ 96] .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. -+ [112] .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. -+ [128] .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. -+ [144] .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. -+ [160] .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. -+ [176] .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. -+ [192] .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. -+ [208] .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. -+ [224] .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. -+ [240] .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. -+ 7f799c624bfa7f08 x13 (xor, xfer intreg #1) -+ 3e7857cc51fd19f0 x23 (xor, xfer intreg #2) -+ 0000000000000000 v17.d[0] (xor, xfer vecreg #1) -+ 0000000000000000 v17.d[1] (xor, xfer vecreg #1) -+ 0000000000000000 v18.d[0] (xor, xfer vecreg #2) -+ 0000000000000000 v18.d[1] (xor, xfer vecreg #2) -+ 0000000000000000 v19.d[0] (xor, xfer vecreg #3) -+ 0000000000000000 v19.d[1] (xor, xfer vecreg #3) -+ 0000000000000000 v20.d[0] (xor, xfer vecreg #3) -+ 0000000000000000 v20.d[1] (xor, xfer vecreg #3) -+ -40 x5 (sub, base reg) -+ 0 x6 (sub, index reg) -+ -+ldpsw x13, x23, [x5, #-40] with x5 = middle_of_block+0, x6=0 -+ [ 0] .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. -+ [ 16] .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. -+ [ 32] .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. -+ [ 48] .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. -+ [ 64] .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. -+ [ 80] .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. -+ [ 96] .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. -+ [112] .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. -+ [128] .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. -+ [144] .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. -+ [160] .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. -+ [176] .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. -+ [192] .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. -+ [208] .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. -+ [224] .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. -+ [240] .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. -+ 01ba3febe99768c0 x13 (xor, xfer intreg #1) -+ 1cef424f7c21ff9b x23 (xor, xfer intreg #2) -+ 0000000000000000 v17.d[0] (xor, xfer vecreg #1) -+ 0000000000000000 v17.d[1] (xor, xfer vecreg #1) -+ 0000000000000000 v18.d[0] (xor, xfer vecreg #2) -+ 0000000000000000 v18.d[1] (xor, xfer vecreg #2) -+ 0000000000000000 v19.d[0] (xor, xfer vecreg #3) -+ 0000000000000000 v19.d[1] (xor, xfer vecreg #3) -+ 0000000000000000 v20.d[0] (xor, xfer vecreg #3) -+ 0000000000000000 v20.d[1] (xor, xfer vecreg #3) -+ 0 x5 (sub, base reg) -+ 0 x6 (sub, index reg) -+ -commit c10b13cb0ec8b797124d8379b7f932f92341bd4b -Author: sewardj -Date: Tue Mar 15 14:24:56 2016 +0000 - - arm64: implement LDPSW. Fixes #360425. Initial patch+investigation by Mark Wielaard. - - - git-svn-id: svn://svn.valgrind.org/vex/trunk@3212 8f6e269a-dfd6-0310-a8e1-e2731360e62c - -diff --git a/VEX/priv/guest_arm64_toIR.c b/VEX/priv/guest_arm64_toIR.c -index 8da9780..d4fe1b8 100644 ---- a/VEX/priv/guest_arm64_toIR.c -+++ b/VEX/priv/guest_arm64_toIR.c -@@ -4804,7 +4804,6 @@ Bool dis_ARM64_load_store(/*MB_OUT*/DisResult* dres, UInt insn) - (at-EA) - x0 101 0010 L imm7 Rt2 Rn Rt1 mmP Rt1,Rt2, [Xn|SP, #imm] - */ -- - UInt insn_30_23 = INSN(30,23); - if (insn_30_23 == BITS8(0,1,0,1,0,0,0,1) - || insn_30_23 == BITS8(0,1,0,1,0,0,1,1) -@@ -4912,6 +4911,87 @@ Bool dis_ARM64_load_store(/*MB_OUT*/DisResult* dres, UInt insn) - } - } - -+ /* -------- LDPSW (immediate, simm7) (INT REGS) -------- */ -+ /* Does 32 bit transfers which are sign extended to 64 bits. -+ simm7 is scaled by the (single-register) transfer size -+ -+ (at-Rn-then-Rn=EA) -+ 01 101 0001 1 imm7 Rt2 Rn Rt1 LDPSW Rt1,Rt2, [Xn|SP], #imm -+ -+ (at-EA-then-Rn=EA) -+ 01 101 0011 1 imm7 Rt2 Rn Rt1 LDPSW Rt1,Rt2, [Xn|SP, #imm]! -+ -+ (at-EA) -+ 01 101 0010 1 imm7 Rt2 Rn Rt1 LDPSW Rt1,Rt2, [Xn|SP, #imm] -+ */ -+ UInt insn_31_22 = INSN(31,22); -+ if (insn_31_22 == BITS10(0,1,1,0,1,0,0,0,1,1) -+ || insn_31_22 == BITS10(0,1,1,0,1,0,0,1,1,1) -+ || insn_31_22 == BITS10(0,1,1,0,1,0,0,1,0,1)) { -+ UInt bWBack = INSN(23,23); -+ UInt rT1 = INSN(4,0); -+ UInt rN = INSN(9,5); -+ UInt rT2 = INSN(14,10); -+ Long simm7 = (Long)sx_to_64(INSN(21,15), 7); -+ if ((bWBack && (rT1 == rN || rT2 == rN) && rN != 31) -+ || (rT1 == rT2)) { -+ /* undecodable; fall through */ -+ } else { -+ if (rN == 31) { /* FIXME generate stack alignment check */ } -+ -+ // Compute the transfer address TA and the writeback address WA. -+ IRTemp tRN = newTemp(Ity_I64); -+ assign(tRN, getIReg64orSP(rN)); -+ IRTemp tEA = newTemp(Ity_I64); -+ simm7 = 4 * simm7; -+ assign(tEA, binop(Iop_Add64, mkexpr(tRN), mkU64(simm7))); -+ -+ IRTemp tTA = newTemp(Ity_I64); -+ IRTemp tWA = newTemp(Ity_I64); -+ switch (INSN(24,23)) { -+ case BITS2(0,1): -+ assign(tTA, mkexpr(tRN)); assign(tWA, mkexpr(tEA)); break; -+ case BITS2(1,1): -+ assign(tTA, mkexpr(tEA)); assign(tWA, mkexpr(tEA)); break; -+ case BITS2(1,0): -+ assign(tTA, mkexpr(tEA)); /* tWA is unused */ break; -+ default: -+ vassert(0); /* NOTREACHED */ -+ } -+ -+ // 32 bit load, sign extended to 64 bits -+ putIReg64orZR(rT1, unop(Iop_32Sto64, -+ loadLE(Ity_I32, binop(Iop_Add64, -+ mkexpr(tTA), -+ mkU64(0))))); -+ putIReg64orZR(rT2, unop(Iop_32Sto64, -+ loadLE(Ity_I32, binop(Iop_Add64, -+ mkexpr(tTA), -+ mkU64(4))))); -+ if (bWBack) -+ putIReg64orSP(rN, mkexpr(tEA)); -+ -+ const HChar* fmt_str = NULL; -+ switch (INSN(24,23)) { -+ case BITS2(0,1): -+ fmt_str = "ldpsw %s, %s, [%s], #%lld (at-Rn-then-Rn=EA)\n"; -+ break; -+ case BITS2(1,1): -+ fmt_str = "ldpsw %s, %s, [%s, #%lld]! (at-EA-then-Rn=EA)\n"; -+ break; -+ case BITS2(1,0): -+ fmt_str = "ldpsw %s, %s, [%s, #%lld] (at-Rn)\n"; -+ break; -+ default: -+ vassert(0); -+ } -+ DIP(fmt_str, nameIReg64orZR(rT1), -+ nameIReg64orZR(rT2), -+ nameIReg64orSP(rN), simm7); -+ return True; -+ } -+ } -+ - /* ---------------- LDR (literal, int reg) ---------------- */ - /* 31 29 23 4 - 00 011 000 imm19 Rt LDR Wt, [PC + sxTo64(imm19 << 2)] diff --git a/SOURCES/valgrind-3.11.0-arm64-ldr-literal-test.patch b/SOURCES/valgrind-3.11.0-arm64-ldr-literal-test.patch deleted file mode 100644 index 3923bba..0000000 --- a/SOURCES/valgrind-3.11.0-arm64-ldr-literal-test.patch +++ /dev/null @@ -1,55 +0,0 @@ -Index: valgrind/none/tests/arm64/memory.c -=================================================================== ---- valgrind/none/tests/arm64/memory.c (revision 15827) -+++ valgrind/none/tests/arm64/memory.c (working copy) -@@ -157,18 +157,18 @@ - - //////////////////////////////////////////////////////////////// - // This is a bit tricky. We load the value from just before and --// just after the actual instruction. Because TESTINSN2_hide2 --// generates two fixed insns either side of the test insn, these --// should be constant and hence "safe" to check. -+// just after the actual instruction. So we place a couple of -+// nop insns either side of the test insn, these should "safe" -+// to check. - - printf("LDR (literal, int reg)\n"); --TESTINST2_hide2("xyzzy00: ldr x21, xyzzy00 - 8", AREA_MID, x21,x22,0); --TESTINST2_hide2("xyzzy01: ldr x21, xyzzy01 + 0", AREA_MID, x21,x22,0); --TESTINST2_hide2("xyzzy02: ldr x21, xyzzy02 + 8", AREA_MID, x21,x22,0); -+TESTINST2_hide2("nop; nop; nop; xyzzy00: ldr x21, xyzzy00 - 8; nop; nop; nop", AREA_MID, x21,x22,0); -+TESTINST2_hide2("nop; nop; nop; xyzzy01: ldr x21, xyzzy01 + 0; nop; nop; nop", AREA_MID, x21,x22,0); -+TESTINST2_hide2("nop; nop; nop; xyzzy02: ldr x21, xyzzy02 + 8; nop; nop; nop", AREA_MID, x21,x22,0); - --TESTINST2_hide2("xyzzy03: ldr x21, xyzzy03 - 4", AREA_MID, x21,x22,0); --TESTINST2_hide2("xyzzy04: ldr x21, xyzzy04 + 0", AREA_MID, x21,x22,0); --TESTINST2_hide2("xyzzy05: ldr x21, xyzzy05 + 4", AREA_MID, x21,x22,0); -+TESTINST2_hide2("nop; nop; nop; xyzzy03: ldr x21, xyzzy03 - 4; nop; nop; nop", AREA_MID, x21,x22,0); -+TESTINST2_hide2("nop; nop; nop; xyzzy04: ldr x21, xyzzy04 + 0; nop; nop; nop", AREA_MID, x21,x22,0); -+TESTINST2_hide2("nop; nop; nop; xyzzy05: ldr x21, xyzzy05 + 4; nop; nop; nop", AREA_MID, x21,x22,0); - - //////////////////////////////////////////////////////////////// - printf("{LD,ST}R (integer register) (entirely MISSING)\n"); -Index: valgrind/none/tests/arm64/memory.stdout.exp -=================================================================== ---- valgrind/none/tests/arm64/memory.stdout.exp (revision 15827) -+++ valgrind/none/tests/arm64/memory.stdout.exp (working copy) -@@ -21,12 +21,12 @@ - ldp w21, w28, [x22, #-40] ; add x21,x21,x28 :: rd 000000019b999794 rn (hidden), cin 0, nzcv 00000000 - ldp w21, w28, [x22, #-40] ; eor x21,x21,x28 :: rd 0000000004040404 rn (hidden), cin 0, nzcv 00000000 - LDR (literal, int reg) --xyzzy00: ldr x21, xyzzy00 - 8 :: rd aa0003f6d51b4203 rn (hidden), cin 0, nzcv 00000000 --xyzzy01: ldr x21, xyzzy01 + 0 :: rd aa1503e258000015 rn (hidden), cin 0, nzcv 00000000 --xyzzy02: ldr x21, xyzzy02 + 8 :: rd 911e43a0d53b4201 rn (hidden), cin 0, nzcv 00000000 --xyzzy03: ldr x21, xyzzy03 - 4 :: rd 58fffff5aa0003f6 rn (hidden), cin 0, nzcv 00000000 --xyzzy04: ldr x21, xyzzy04 + 0 :: rd aa1503e258000015 rn (hidden), cin 0, nzcv 00000000 --xyzzy05: ldr x21, xyzzy05 + 4 :: rd d53b4201aa1503e2 rn (hidden), cin 0, nzcv 00000000 -+nop; nop; nop; xyzzy00: ldr x21, xyzzy00 - 8; nop; nop; nop :: rd d503201fd503201f rn (hidden), cin 0, nzcv 00000000 -+nop; nop; nop; xyzzy01: ldr x21, xyzzy01 + 0; nop; nop; nop :: rd d503201f58000015 rn (hidden), cin 0, nzcv 00000000 -+nop; nop; nop; xyzzy02: ldr x21, xyzzy02 + 8; nop; nop; nop :: rd d503201fd503201f rn (hidden), cin 0, nzcv 00000000 -+nop; nop; nop; xyzzy03: ldr x21, xyzzy03 - 4; nop; nop; nop :: rd 58fffff5d503201f rn (hidden), cin 0, nzcv 00000000 -+nop; nop; nop; xyzzy04: ldr x21, xyzzy04 + 0; nop; nop; nop :: rd d503201f58000015 rn (hidden), cin 0, nzcv 00000000 -+nop; nop; nop; xyzzy05: ldr x21, xyzzy05 + 4; nop; nop; nop :: rd d503201fd503201f rn (hidden), cin 0, nzcv 00000000 - {LD,ST}R (integer register) (entirely MISSING) - LDRS{B,H,W} (uimm12) - ldrsw x21, [x22, #24] :: rd ffffffff8b8a8988 rn (hidden), cin 0, nzcv 00000000 diff --git a/SOURCES/valgrind-3.11.0-arm64-more-syscalls.patch b/SOURCES/valgrind-3.11.0-arm64-more-syscalls.patch deleted file mode 100644 index 0d07fcd..0000000 --- a/SOURCES/valgrind-3.11.0-arm64-more-syscalls.patch +++ /dev/null @@ -1,5823 +0,0 @@ -From fe31b9a6fe9aad1a83c996032717f4757ff21f75 Mon Sep 17 00:00:00 2001 -From: mjw -Date: Wed, 9 Mar 2016 16:18:34 +0000 -Subject: [PATCH 1/3] Use correct syscall numbers on arm64. Fix rename, dup2 - and getpgrp. - -We were using some wrong syscall numbers in vki-scnums-arm64-linux.h -arm64 doesn't implement a couple of old deprecated system calls like -rename, dup2, getpgrp and fork. Adjust m_libcfile.c rename and dup2 -functions to use renameat (also on tilegx) and dup3 (with fcntl fallback -for bad oldfd). And in m_libcproc.c implement getpgrp as getpgid(0). -Also don't compile the fork syswrap on arm64 (it only supports clone). - -In practice this only affected callgrind which was unable to rename -dump files in some cases and ELF core dumps might have contained some -bogus prstatus fields. - -Related to bug #359503 - Add missing syscalls for aarch64 (arm64) -Reported by Marcin Juszkiewicz who also posted a nice overview -of system calls on different linux architectures: -https://marcin.juszkiewicz.com.pl/2016/03/05/from-a-diary-of-aarch64-porter-system-calls/ - -git-svn-id: svn://svn.valgrind.org/valgrind/trunk@15824 a5019735-40e9-0310-863c-91ae7b9d1cf9 ---- - coregrind/m_libcfile.c | 23 ++++++++++++++------- - coregrind/m_libcproc.c | 4 +++- - coregrind/m_syswrap/syswrap-generic.c | 4 ++-- - include/vki/vki-scnums-arm64-linux.h | 38 +++++++++++++++++------------------ - 4 files changed, 40 insertions(+), 29 deletions(-) - -diff --git a/coregrind/m_libcfile.c b/coregrind/m_libcfile.c -index 7e94ce3..c413db1 100644 ---- a/coregrind/m_libcfile.c -+++ b/coregrind/m_libcfile.c -@@ -480,7 +480,18 @@ SysRes VG_(dup) ( Int oldfd ) - - SysRes VG_(dup2) ( Int oldfd, Int newfd ) - { --# if defined(VGO_linux) || defined(VGO_darwin) -+# if defined(VGP_arm64_linux) -+ /* We only have dup3, that means we have to mimic dup2. -+ The only real difference is when oldfd == newfd. -+ dup3 always returns an error, but dup2 returns only an -+ error if the fd is invalid, otherwise it returns newfd. */ -+ if (oldfd == newfd) { -+ if (VG_(fcntl)(oldfd, VKI_F_GETFL, 0) == -1) -+ return VG_(mk_SysRes_Error)(VKI_EBADF); -+ return VG_(mk_SysRes_Success)(newfd); -+ } -+ return VG_(do_syscall3)(__NR_dup3, oldfd, newfd, 0); -+# elif defined(VGO_linux) || defined(VGO_darwin) - return VG_(do_syscall2)(__NR_dup2, oldfd, newfd); - # elif defined(VGO_solaris) - return VG_(do_syscall3)(__NR_fcntl, oldfd, F_DUP2FD, newfd); -@@ -504,14 +515,12 @@ Int VG_(fcntl) ( Int fd, Int cmd, Addr arg ) - - Int VG_(rename) ( const HChar* old_name, const HChar* new_name ) - { --# if defined(VGP_tilegx_linux) -- SysRes res = VG_(do_syscall3)(__NR_renameat, VKI_AT_FDCWD, -- (UWord)old_name, (UWord)new_name); --# elif defined(VGO_linux) || defined(VGO_darwin) -- SysRes res = VG_(do_syscall2)(__NR_rename, (UWord)old_name, (UWord)new_name); --# elif defined(VGO_solaris) -+# if defined(VGO_solaris) \ -+ || defined(VGP_arm64_linux) || defined(VGP_tilegx_linux) - SysRes res = VG_(do_syscall4)(__NR_renameat, VKI_AT_FDCWD, (UWord)old_name, - VKI_AT_FDCWD, (UWord)new_name); -+# elif defined(VGO_linux) || defined(VGO_darwin) -+ SysRes res = VG_(do_syscall2)(__NR_rename, (UWord)old_name, (UWord)new_name); - # else - # error "Unknown OS" - # endif -diff --git a/coregrind/m_libcproc.c b/coregrind/m_libcproc.c -index a30f7dc..eb911be 100644 ---- a/coregrind/m_libcproc.c -+++ b/coregrind/m_libcproc.c -@@ -708,7 +708,9 @@ Int VG_(getpid) ( void ) - Int VG_(getpgrp) ( void ) - { - /* ASSUMES SYSCALL ALWAYS SUCCEEDS */ --# if defined(VGO_linux) || defined(VGO_darwin) -+# if defined(VGP_arm64_linux) -+ return sr_Res( VG_(do_syscall1)(__NR_getpgid, 0) ); -+# elif defined(VGO_linux) || defined(VGO_darwin) - return sr_Res( VG_(do_syscall0)(__NR_getpgrp) ); - # elif defined(VGO_solaris) - /* Uses the shared pgrpsys syscall, 0 for the getpgrp variant. */ -diff --git a/coregrind/m_syswrap/syswrap-generic.c b/coregrind/m_syswrap/syswrap-generic.c -index 2eaf505..dd1da9c 100644 ---- a/coregrind/m_syswrap/syswrap-generic.c -+++ b/coregrind/m_syswrap/syswrap-generic.c -@@ -3264,7 +3264,7 @@ POST(sys_newfstat) - POST_MEM_WRITE( ARG2, sizeof(struct vki_stat) ); - } - --#if !defined(VGO_solaris) -+#if !defined(VGO_solaris) && !defined(VGP_arm64_linux) - static vki_sigset_t fork_saved_mask; - - // In Linux, the sys_fork() function varies across architectures, but we -@@ -3327,7 +3327,7 @@ PRE(sys_fork) - VG_(sigprocmask)(VKI_SIG_SETMASK, &fork_saved_mask, NULL); - } - } --#endif // !defined(VGO_solaris) -+#endif // !defined(VGO_solaris) && !defined(VGP_arm64_linux) - - PRE(sys_ftruncate) - { -diff --git a/include/vki/vki-scnums-arm64-linux.h b/include/vki/vki-scnums-arm64-linux.h -index f70a2ed..e963c45 100644 ---- a/include/vki/vki-scnums-arm64-linux.h -+++ b/include/vki/vki-scnums-arm64-linux.h -@@ -331,7 +331,7 @@ - //#define __NR_link 1025 - //__SYSCALL(__NR_link, sys_link) - //#define __NR_unlink 1026 --#define __NR_mknod 1027 -+//#define __NR_mknod 1027 - //#define __NR_chmod 1028 - //__SYSCALL(__NR_chmod, sys_chmod) - //#define __NR_chown 1029 -@@ -342,8 +342,8 @@ - //__SYSCALL(__NR_rmdir, sys_rmdir) - //#define __NR_lchown 1032 - //__SYSCALL(__NR_lchown, sys_lchown) --#define __NR_access 1033 --#define __NR_rename 1034 -+//#define __NR_access 1033 -+//#define __NR_rename 1034 - //#define __NR_readlink 1035 - //#define __NR_symlink 1036 - //__SYSCALL(__NR_symlink, sys_symlink) -@@ -359,8 +359,8 @@ - //#endif /* __ARCH_WANT_SYSCALL_NO_AT */ - // - //#ifdef __ARCH_WANT_SYSCALL_NO_FLAGS --#define __NR_pipe 1040 --#define __NR_dup2 1041 -+//#define __NR_pipe 1040 -+//#define __NR_dup2 1041 - //#define __NR_epoll_create 1042 - //__SYSCALL(__NR_epoll_create, sys_epoll_create) - //#define __NR_inotify_init 1043 -@@ -383,7 +383,7 @@ - //__SYSCALL(__NR_ftruncate, sys_ftruncate) - //#define __NR_truncate 1048 - //__SYSCALL(__NR_truncate, sys_truncate) --#define __NR_stat 1049 -+//#define __NR_stat 1049 - //#define __NR_lstat 1050 - //__SYSCALL(__NR_lstat, sys_newlstat) - //ZZ#define __NR_fstat 1051 -@@ -399,7 +399,7 @@ - //#define __NR_statfs 1056 - //__SYSCALL(__NR_statfs, sys_statfs) - //#define __NR_lseek 1057 --#define __NR_mmap 1058 -+//#define __NR_mmap 1058 - // - //#undef __NR_syscalls - //#define __NR_syscalls (__NR_mmap+1) -@@ -409,7 +409,7 @@ - //#define __NR_alarm 1059 - //#define __ARCH_WANT_SYS_ALARM - //__SYSCALL(__NR_alarm, sys_alarm) --#define __NR_getpgrp 1060 -+//#define __NR_getpgrp 1060 - //#define __ARCH_WANT_SYS_GETPGRP - //__SYSCALL(__NR_getpgrp, sys_getpgrp) - //#define __NR_pause 1061 -@@ -425,13 +425,13 @@ - // - //#define __NR_creat 1064 - //__SYSCALL(__NR_creat, sys_creat) --#define __NR_getdents 1065 -+//#define __NR_getdents 1065 - //#define __NR_futimesat 1066 - //__SYSCALL(__NR_futimesat, sys_futimesat) - //#define __NR_select 1067 - //#define __ARCH_WANT_SYS_SELECT - //__SYSCALL(__NR_select, sys_select) --#define __NR_poll 1068 -+//#define __NR_poll 1068 - //#define __NR_epoll_wait 1069 - //__SYSCALL(__NR_epoll_wait, sys_epoll_wait) - //#define __NR_ustat 1070 -@@ -454,7 +454,7 @@ - //#define __NR__sysctl 1078 - //__SYSCALL(__NR__sysctl, sys_sysctl) - // --#define __NR_fork 1079 -+//#define __NR_fork 1079 - //#ifdef CONFIG_MMU - //__SYSCALL(__NR_fork, sys_fork) - //#else -@@ -478,16 +478,16 @@ - // */ - //#if __BITS_PER_LONG == 64 && !defined(__SYSCALL_COMPAT) - #define __NR_fcntl __NR3264_fcntl --//#define __NR_statfs __NR3264_statfs --//#define __NR_fstatfs __NR3264_fstatfs --//#define __NR_truncate __NR3264_truncate --//#define __NR_ftruncate __NR3264_ftruncate -+#define __NR_statfs __NR3264_statfs -+#define __NR_fstatfs __NR3264_fstatfs -+#define __NR_truncate __NR3264_truncate -+#define __NR_ftruncate __NR3264_ftruncate - #define __NR_lseek __NR3264_lseek --//#define __NR_sendfile __NR3264_sendfile --//#define __NR_newfstatat __NR3264_fstatat -+#define __NR_sendfile __NR3264_sendfile -+#define __NR_newfstatat __NR3264_fstatat - #define __NR_fstat __NR3264_fstat --//#define __NR_mmap __NR3264_mmap --//#define __NR_fadvise64 __NR3264_fadvise64 -+#define __NR_mmap __NR3264_mmap -+#define __NR_fadvise64 __NR3264_fadvise64 - //#ifdef __NR3264_stat - //#define __NR_stat __NR3264_stat - //#define __NR_lstat __NR3264_lstat --- -2.5.0 - -From a4070ecdf2b2ade10ccf77518e97cc8a8280fd34 Mon Sep 17 00:00:00 2001 -From: mjw -Date: Wed, 9 Mar 2016 16:18:36 +0000 -Subject: [PATCH 2/3] Add arm64 scalar test. Enable tested syscalls. - -The new memcheck/tests/arm64-linux/scalar test is based on the -memcheck/tests/x86-linux/scalar test and contains all syscalls -that are also available on arm64. To make comparison of exp results -easier the order of the tested syscalls is the same as on x86. -This enables a couple extra arm64 syscalls. Part of the fix for -bug #359503 - Add missing syscalls for aarch64 (arm64). - -git-svn-id: svn://svn.valgrind.org/valgrind/trunk@15825 a5019735-40e9-0310-863c-91ae7b9d1cf9 ---- - configure.ac | 1 + - coregrind/m_syswrap/syswrap-arm64-linux.c | 127 +- - coregrind/m_syswrap/syswrap-linux.c | 2 +- - memcheck/tests/Makefile.am | 6 +- - memcheck/tests/arm64-linux/Makefile.am | 19 + - memcheck/tests/arm64-linux/filter_stderr | 3 + - memcheck/tests/arm64-linux/scalar.c | 1278 +++++++++++++ - memcheck/tests/arm64-linux/scalar.h | 62 + - memcheck/tests/arm64-linux/scalar.stderr.exp | 2598 ++++++++++++++++++++++++++ - memcheck/tests/arm64-linux/scalar.vgtest | 3 + - 10 files changed, 4033 insertions(+), 66 deletions(-) - create mode 100644 memcheck/tests/arm64-linux/Makefile.am - create mode 100755 memcheck/tests/arm64-linux/filter_stderr - create mode 100644 memcheck/tests/arm64-linux/scalar.c - create mode 100644 memcheck/tests/arm64-linux/scalar.h - create mode 100644 memcheck/tests/arm64-linux/scalar.stderr.exp - create mode 100644 memcheck/tests/arm64-linux/scalar.vgtest - -diff --git a/configure.ac b/configure.ac -index ea08341..888a308 100644 ---- a/configure.ac -+++ b/configure.ac -@@ -4134,6 +4134,7 @@ AC_CONFIG_FILES([ - memcheck/tests/darwin/Makefile - memcheck/tests/solaris/Makefile - memcheck/tests/amd64-linux/Makefile -+ memcheck/tests/arm64-linux/Makefile - memcheck/tests/x86-linux/Makefile - memcheck/tests/amd64-solaris/Makefile - memcheck/tests/x86-solaris/Makefile -diff --git a/coregrind/m_syswrap/syswrap-arm64-linux.c b/coregrind/m_syswrap/syswrap-arm64-linux.c -index abddff1..8f4efa6 100644 ---- a/coregrind/m_syswrap/syswrap-arm64-linux.c -+++ b/coregrind/m_syswrap/syswrap-arm64-linux.c -@@ -855,6 +855,11 @@ PRE(sys_rt_sigreturn) - // (unknown). - - static SyscallTableEntry syscall_main_table[] = { -+ LINXY(__NR_io_setup, sys_io_setup), // 0 -+ LINX_(__NR_io_destroy, sys_io_destroy), // 1 -+ LINX_(__NR_io_submit, sys_io_submit), // 2 -+ LINXY(__NR_io_cancel, sys_io_cancel), // 3 -+ LINXY(__NR_io_getevents, sys_io_getevents), // 4 - LINX_(__NR_setxattr, sys_setxattr), // 5 - LINX_(__NR_lsetxattr, sys_lsetxattr), // 6 - LINX_(__NR_fsetxattr, sys_fsetxattr), // 7 -@@ -868,20 +873,19 @@ static SyscallTableEntry syscall_main_table[] = { - LINX_(__NR_lremovexattr, sys_lremovexattr), // 15 - LINX_(__NR_fremovexattr, sys_fremovexattr), // 16 - GENXY(__NR_getcwd, sys_getcwd), // 17 -+ LINXY(__NR_lookup_dcookie, sys_lookup_dcookie), // 18 - LINXY(__NR_eventfd2, sys_eventfd2), // 19 - LINXY(__NR_epoll_create1, sys_epoll_create1), // 20 - LINX_(__NR_epoll_ctl, sys_epoll_ctl), // 21 - LINXY(__NR_epoll_pwait, sys_epoll_pwait), // 22 - GENXY(__NR_dup, sys_dup), // 23 - LINXY(__NR_dup3, sys_dup3), // 24 -- -- // FIXME IS THIS CORRECT? -- LINXY(__NR3264_fcntl, sys_fcntl), // 25 -- -+ LINXY(__NR_fcntl, sys_fcntl), // 25 - LINXY(__NR_inotify_init1, sys_inotify_init1), // 26 - LINX_(__NR_inotify_add_watch, sys_inotify_add_watch), // 27 - LINX_(__NR_inotify_rm_watch, sys_inotify_rm_watch), // 28 - LINXY(__NR_ioctl, sys_ioctl), // 29 -+ - GENX_(__NR_flock, sys_flock), // 32 - LINX_(__NR_mknodat, sys_mknodat), // 33 - LINX_(__NR_mkdirat, sys_mkdirat), // 34 -@@ -889,17 +893,13 @@ static SyscallTableEntry syscall_main_table[] = { - LINX_(__NR_symlinkat, sys_symlinkat), // 36 - LINX_(__NR_linkat, sys_linkat), // 37 - LINX_(__NR_renameat, sys_renameat), // 38 -+ LINX_(__NR_umount2, sys_umount), // 39 -+ LINX_(__NR_mount, sys_mount), // 40 - -- LINX_(__NR_umount2, sys_umount), // 39 -- LINX_(__NR_mount, sys_mount), // 40 -- -- // FIXME IS THIS CORRECT? it may well not be. -- GENXY(__NR3264_statfs, sys_statfs), // 43 -- GENXY(__NR3264_fstatfs, sys_fstatfs), // 44 -- -- // FIXME IS THIS CORRECT? it may well not be. -- GENX_(__NR3264_ftruncate, sys_ftruncate), // 46 -- -+ GENXY(__NR_statfs, sys_statfs), // 43 -+ GENXY(__NR_fstatfs, sys_fstatfs), // 44 -+ GENX_(__NR_truncate, sys_truncate), // 45 -+ GENX_(__NR_ftruncate, sys_ftruncate), // 46 - LINX_(__NR_fallocate, sys_fallocate), // 47 - LINX_(__NR_faccessat, sys_faccessat), // 48 - GENX_(__NR_chdir, sys_chdir), // 49 -@@ -911,49 +911,75 @@ static SyscallTableEntry syscall_main_table[] = { - GENX_(__NR_fchown, sys_fchown), // 55 - LINXY(__NR_openat, sys_openat), // 56 - GENXY(__NR_close, sys_close), // 57 -+ LINX_(__NR_vhangup, sys_vhangup), // 58 - LINXY(__NR_pipe2, sys_pipe2), // 59 - LINX_(__NR_quotactl, sys_quotactl), // 60 - GENXY(__NR_getdents64, sys_getdents64), // 61 -- -- // FIXME IS THIS CORRECT? -- LINX_(__NR3264_lseek, sys_lseek), // 62 -- -+ LINX_(__NR_lseek, sys_lseek), // 62 - GENXY(__NR_read, sys_read), // 63 - GENX_(__NR_write, sys_write), // 64 - GENXY(__NR_readv, sys_readv), // 65 - GENX_(__NR_writev, sys_writev), // 66 - GENXY(__NR_pread64, sys_pread64), // 67 - GENX_(__NR_pwrite64, sys_pwrite64), // 68 -+ -+ LINXY(__NR_sendfile, sys_sendfile), // 71 - LINXY(__NR_pselect6, sys_pselect6), // 72 - LINXY(__NR_ppoll, sys_ppoll), // 73 - LINXY(__NR_signalfd4, sys_signalfd4), // 74 -- LINX_(__NR_readlinkat, sys_readlinkat), // 78 - -- // FIXME IS THIS CORRECT? -- LINXY(__NR3264_fstatat, sys_newfstatat), // 79 -- GENXY(__NR3264_fstat, sys_newfstat), // 80 -- -- LINX_(__NR_utimensat, sys_utimensat), // 88 -+ LINX_(__NR_readlinkat, sys_readlinkat), // 78 -+ LINXY(__NR_newfstatat, sys_newfstatat), // 79 -+ GENXY(__NR_fstat, sys_newfstat), // 80 -+ GENX_(__NR_sync, sys_sync), // 81 - GENX_(__NR_fsync, sys_fsync), // 82 - GENX_(__NR_fdatasync, sys_fdatasync), // 83 -+ - LINXY(__NR_timerfd_create, sys_timerfd_create), // 85 - LINXY(__NR_timerfd_settime, sys_timerfd_settime), // 86 - LINXY(__NR_timerfd_gettime, sys_timerfd_gettime), // 87 -+ LINX_(__NR_utimensat, sys_utimensat), // 88 -+ GENX_(__NR_acct, sys_acct), // 89 - LINXY(__NR_capget, sys_capget), // 90 -+ LINX_(__NR_capset, sys_capset), // 91 -+ LINX_(__NR_personality, sys_personality), // 92 - GENX_(__NR_exit, sys_exit), // 93 - LINX_(__NR_exit_group, sys_exit_group), // 94 -+ - LINX_(__NR_set_tid_address, sys_set_tid_address), // 96 -+ - LINXY(__NR_futex, sys_futex), // 98 - LINX_(__NR_set_robust_list, sys_set_robust_list), // 99 -+ - GENXY(__NR_nanosleep, sys_nanosleep), // 101 -+ GENXY(__NR_getitimer, sys_getitimer), // 102 - GENXY(__NR_setitimer, sys_setitimer), // 103 -+ GENX_(__NR_kexec_load, sys_ni_syscall), // 104 -+ LINX_(__NR_init_module, sys_init_module), // 105 -+ -+ LINXY(__NR_timer_create, sys_timer_create), // 107 -+ LINXY(__NR_timer_settime, sys_timer_settime), // 108 -+ LINXY(__NR_timer_gettime, sys_timer_gettime), // 109 -+ LINX_(__NR_timer_getoverrun, sys_timer_getoverrun), // 110 -+ LINX_(__NR_timer_delete, sys_timer_delete), // 111 -+ LINX_(__NR_clock_settime, sys_clock_settime), // 112 - LINXY(__NR_clock_gettime, sys_clock_gettime), // 113 - LINXY(__NR_clock_getres, sys_clock_getres), // 114 -+ - LINXY(__NR_syslog, sys_syslog), // 116 -+ -+ LINXY(__NR_sched_setparam, sys_sched_setparam), // 118 -+ LINX_(__NR_sched_setscheduler,sys_sched_setscheduler),// 119 -+ LINX_(__NR_sched_getscheduler,sys_sched_getscheduler),// 120 -+ LINXY(__NR_sched_getparam, sys_sched_getparam), // 121 - LINX_(__NR_sched_setaffinity, sys_sched_setaffinity), // 122 - LINXY(__NR_sched_getaffinity, sys_sched_getaffinity), // 123 - LINX_(__NR_sched_yield, sys_sched_yield), // 124 -+ LINX_(__NR_sched_get_priority_max, sys_sched_get_priority_max),// 125 -+ LINX_(__NR_sched_get_priority_min, sys_sched_get_priority_min),// 126 -+ - GENX_(__NR_kill, sys_kill), // 129 -+ - LINX_(__NR_tgkill, sys_tgkill), // 131 - GENXY(__NR_sigaltstack, sys_sigaltstack), // 132 - LINX_(__NR_rt_sigsuspend, sys_rt_sigsuspend), // 133 -@@ -965,6 +991,7 @@ static SyscallTableEntry syscall_main_table[] = { - PLAX_(__NR_rt_sigreturn, sys_rt_sigreturn), // 139 - GENX_(__NR_setpriority, sys_setpriority), // 140 - GENX_(__NR_getpriority, sys_getpriority), // 141 -+ - GENX_(__NR_setregid, sys_setregid), // 143 - GENX_(__NR_setgid, sys_setgid), // 144 - GENX_(__NR_setreuid, sys_setreuid), // 145 -@@ -973,6 +1000,8 @@ static SyscallTableEntry syscall_main_table[] = { - LINXY(__NR_getresuid, sys_getresuid), // 148 - LINX_(__NR_setresgid, sys_setresgid), // 149 - LINXY(__NR_getresgid, sys_getresgid), // 150 -+ LINX_(__NR_setfsuid, sys_setfsuid), // 151 -+ LINX_(__NR_setfsgid, sys_setfsgid), // 152 - GENXY(__NR_times, sys_times), // 153 - GENX_(__NR_setpgid, sys_setpgid), // 154 - GENX_(__NR_getpgid, sys_getpgid), // 155 -@@ -981,12 +1010,16 @@ static SyscallTableEntry syscall_main_table[] = { - GENXY(__NR_getgroups, sys_getgroups), // 158 - GENX_(__NR_setgroups, sys_setgroups), // 159 - GENXY(__NR_uname, sys_newuname), // 160 -+ - GENXY(__NR_getrlimit, sys_old_getrlimit), // 163 - GENX_(__NR_setrlimit, sys_setrlimit), // 164 - GENXY(__NR_getrusage, sys_getrusage), // 165 - GENX_(__NR_umask, sys_umask), // 166 - LINXY(__NR_prctl, sys_prctl), // 167 -+ - GENXY(__NR_gettimeofday, sys_gettimeofday), // 169 -+ GENX_(__NR_settimeofday, sys_settimeofday), // 170 -+ - GENX_(__NR_getpid, sys_getpid), // 172 - GENX_(__NR_getppid, sys_getppid), // 173 - GENX_(__NR_getuid, sys_getuid), // 174 -@@ -1033,18 +1066,20 @@ static SyscallTableEntry syscall_main_table[] = { - GENXY(__NR_munmap, sys_munmap), // 215 - GENX_(__NR_mremap, sys_mremap), // 216 - LINX_(__NR_add_key, sys_add_key), // 217 -+ - LINXY(__NR_keyctl, sys_keyctl), // 219 - PLAX_(__NR_clone, sys_clone), // 220 - GENX_(__NR_execve, sys_execve), // 221 -- -- // FIXME IS THIS CORRECT? -- PLAX_(__NR3264_mmap, sys_mmap), // 222 -- PLAX_(__NR3264_fadvise64, sys_fadvise64), // 223 -+ PLAX_(__NR_mmap, sys_mmap), // 222 -+ PLAX_(__NR_fadvise64, sys_fadvise64), // 223 - - GENXY(__NR_mprotect, sys_mprotect), // 226 - GENX_(__NR_msync, sys_msync), // 227 - GENX_(__NR_mlock, sys_mlock), // 228 -+ GENX_(__NR_munlock, sys_munlock), // 229 - GENX_(__NR_mlockall, sys_mlockall), // 230 -+ LINX_(__NR_munlockall, sys_munlockall), // 231 -+ GENXY(__NR_mincore, sys_mincore), // 232 - GENX_(__NR_madvise, sys_madvise), // 233 - LINX_(__NR_mbind, sys_mbind), // 235 - LINXY(__NR_get_mempolicy, sys_get_mempolicy), // 236 -@@ -1103,7 +1138,6 @@ static SyscallTableEntry syscall_main_table[] = { - //ZZ GENX_(__NR_nice, sys_nice), // 34 - //ZZ - //ZZ // GENX_(__NR_ftime, sys_ni_syscall), // 35 --//ZZ GENX_(__NR_sync, sys_sync), // 36 - //ZZ GENX_(__NR_rename, sys_rename), // 38 - //ZZ GENX_(__NR_mkdir, sys_mkdir), // 39 - //ZZ -@@ -1116,7 +1150,6 @@ static SyscallTableEntry syscall_main_table[] = { - //ZZ LINX_(__NR_geteuid, sys_geteuid16), // 49 - //ZZ - //ZZ LINX_(__NR_getegid, sys_getegid16), // 50 --//ZZ GENX_(__NR_acct, sys_acct), // 51 - //ZZ // GENX_(__NR_lock, sys_ni_syscall), // 53 - //ZZ - //ZZ LINXY(__NR_fcntl, sys_fcntl), // 55 -@@ -1138,7 +1171,6 @@ static SyscallTableEntry syscall_main_table[] = { - //ZZ //zz // (__NR_sethostname, sys_sethostname), // 74 */* - //ZZ //zz - //ZZ GENXY(__NR_getrlimit, sys_old_getrlimit), // 76 --//ZZ GENX_(__NR_settimeofday, sys_settimeofday), // 79 - //ZZ - //ZZ LINXY(__NR_getgroups, sys_getgroups16), // 80 - //ZZ LINX_(__NR_setgroups, sys_setgroups16), // 81 -@@ -1165,14 +1197,12 @@ static SyscallTableEntry syscall_main_table[] = { - //ZZ // LINX_(__NR_ioperm, sys_ioperm), // 101 - //ZZ LINXY(__NR_socketcall, sys_socketcall), // 102 - //ZZ --//ZZ GENXY(__NR_getitimer, sys_getitimer), // 105 - //ZZ GENXY(__NR_stat, sys_newstat), // 106 - //ZZ GENXY(__NR_lstat, sys_newlstat), // 107 - //ZZ GENXY(__NR_fstat, sys_newfstat), // 108 - //ZZ //zz // (__NR_olduname, sys_uname), // 109 -- obsolete - //ZZ //zz - //ZZ // GENX_(__NR_iopl, sys_iopl), // 110 --//ZZ LINX_(__NR_vhangup, sys_vhangup), // 111 - //ZZ // GENX_(__NR_idle, sys_ni_syscall), // 112 - //ZZ // PLAXY(__NR_vm86old, sys_vm86old), // 113 __NR_syscall... weird - //ZZ //zz -@@ -1188,7 +1218,6 @@ static SyscallTableEntry syscall_main_table[] = { - //ZZ LINXY(__NR_sigprocmask, sys_sigprocmask), // 126 - //ZZ //zz // Nb: create_module() was removed 2.4-->2.6 - //ZZ // GENX_(__NR_create_module, sys_ni_syscall), // 127 --//ZZ LINX_(__NR_init_module, sys_init_module), // 128 - //ZZ LINX_(__NR_delete_module, sys_delete_module), // 129 - //ZZ //zz - //ZZ //zz // Nb: get_kernel_syms() was removed 2.4-->2.6 -@@ -1197,10 +1226,7 @@ static SyscallTableEntry syscall_main_table[] = { - //ZZ //zz // (__NR_bdflush, sys_bdflush), // 134 */Linux - //ZZ //zz - //ZZ //zz // (__NR_sysfs, sys_sysfs), // 135 SVr4 --//ZZ LINX_(__NR_personality, sys_personality), // 136 - //ZZ // GENX_(__NR_afs_syscall, sys_ni_syscall), // 137 --//ZZ LINX_(__NR_setfsuid, sys_setfsuid16), // 138 --//ZZ LINX_(__NR_setfsgid, sys_setfsgid16), // 139 - //ZZ - //ZZ LINXY(__NR__llseek, sys_llseek), // 140 - //ZZ GENXY(__NR_getdents, sys_getdents), // 141 -@@ -1208,16 +1234,6 @@ static SyscallTableEntry syscall_main_table[] = { - //ZZ - //ZZ LINXY(__NR__sysctl, sys_sysctl), // 149 - //ZZ --//ZZ GENX_(__NR_munlock, sys_munlock), // 151 --//ZZ LINX_(__NR_munlockall, sys_munlockall), // 153 --//ZZ LINXY(__NR_sched_setparam, sys_sched_setparam), // 154 --//ZZ --//ZZ LINXY(__NR_sched_getparam, sys_sched_getparam), // 155 --//ZZ LINX_(__NR_sched_setscheduler, sys_sched_setscheduler), // 156 --//ZZ LINX_(__NR_sched_getscheduler, sys_sched_getscheduler), // 157 --//ZZ LINX_(__NR_sched_get_priority_max, sys_sched_get_priority_max),// 159 --//ZZ --//ZZ LINX_(__NR_sched_get_priority_min, sys_sched_get_priority_min),// 160 - //ZZ //zz //LINX?(__NR_sched_rr_get_interval, sys_sched_rr_get_interval), // 161 */* - //ZZ LINX_(__NR_setresuid, sys_setresuid16), // 164 - //ZZ -@@ -1236,7 +1252,6 @@ static SyscallTableEntry syscall_main_table[] = { - //ZZ - //ZZ LINX_(__NR_chown, sys_chown16), // 182 - //ZZ --//ZZ LINX_(__NR_capset, sys_capset), // 185 - //ZZ LINXY(__NR_sendfile, sys_sendfile), // 187 - //ZZ // GENXY(__NR_getpmsg, sys_getpmsg), // 188 - //ZZ // GENX_(__NR_putpmsg, sys_putpmsg), // 189 -@@ -1271,42 +1286,26 @@ static SyscallTableEntry syscall_main_table[] = { - //ZZ LINX_(__NR_setfsuid32, sys_setfsuid), // 215 - //ZZ LINX_(__NR_setfsgid32, sys_setfsgid), // 216 - //ZZ //zz // (__NR_pivot_root, sys_pivot_root), // 217 */Linux --//ZZ GENXY(__NR_mincore, sys_mincore), // 218 - //ZZ - //ZZ LINXY(__NR_fcntl64, sys_fcntl64), // 221 - //ZZ // GENX_(222, sys_ni_syscall), // 222 - //ZZ // PLAXY(223, sys_syscall223), // 223 // sys_bproc? - //ZZ - //ZZ LINXY(__NR_tkill, sys_tkill), // 238 */Linux --//ZZ LINXY(__NR_sendfile64, sys_sendfile64), // 239 - //ZZ - //ZZ LINXY(__NR_futex, sys_futex), // 240 - //ZZ LINXY(__NR_sched_getaffinity, sys_sched_getaffinity), // 242 - //ZZ // PLAX_(__NR_set_thread_area, sys_set_thread_area), // 243 - //ZZ // PLAX_(__NR_get_thread_area, sys_get_thread_area), // 244 - //ZZ --//ZZ LINXY(__NR_io_setup, sys_io_setup), // 245 --//ZZ LINX_(__NR_io_destroy, sys_io_destroy), // 246 --//ZZ LINXY(__NR_io_getevents, sys_io_getevents), // 247 --//ZZ LINX_(__NR_io_submit, sys_io_submit), // 248 --//ZZ LINXY(__NR_io_cancel, sys_io_cancel), // 249 --//ZZ - //ZZ // LINX_(__NR_fadvise64, sys_fadvise64), // 250 */(Linux?) - //ZZ GENX_(251, sys_ni_syscall), // 251 --//ZZ // GENXY(__NR_lookup_dcookie, sys_lookup_dcookie), // 253 - //ZZ LINXY(__NR_epoll_create, sys_epoll_create), // 254 - //ZZ - //ZZ LINX_(__NR_epoll_ctl, sys_epoll_ctl), // 255 - //ZZ LINXY(__NR_epoll_wait, sys_epoll_wait), // 256 - //ZZ //zz // (__NR_remap_file_pages, sys_remap_file_pages), // 257 */Linux - //ZZ LINX_(__NR_set_tid_address, sys_set_tid_address), // 258 --//ZZ LINXY(__NR_timer_create, sys_timer_create), // 259 --//ZZ --//ZZ LINXY(__NR_timer_settime, sys_timer_settime), // (timer_create+1) --//ZZ LINXY(__NR_timer_gettime, sys_timer_gettime), // (timer_create+2) --//ZZ LINX_(__NR_timer_getoverrun, sys_timer_getoverrun),//(timer_create+3) --//ZZ LINX_(__NR_timer_delete, sys_timer_delete), // (timer_create+4) --//ZZ LINX_(__NR_clock_settime, sys_clock_settime), // (timer_create+5) - //ZZ - //ZZ LINXY(__NR_clock_getres, sys_clock_getres), // (timer_create+7) - //ZZ LINXY(__NR_clock_nanosleep, sys_clock_nanosleep),// (timer_create+8) */* -diff --git a/coregrind/m_syswrap/syswrap-linux.c b/coregrind/m_syswrap/syswrap-linux.c -index 6fdacda..fa7f89e 100644 ---- a/coregrind/m_syswrap/syswrap-linux.c -+++ b/coregrind/m_syswrap/syswrap-linux.c -@@ -5325,7 +5325,7 @@ POST(sys_lookup_dcookie) - #endif - - #if defined(VGP_amd64_linux) || defined(VGP_s390x_linux) \ -- || defined(VGP_tilegx_linux) -+ || defined(VGP_tilegx_linux) || defined(VGP_arm64_linux) - PRE(sys_lookup_dcookie) - { - *flags |= SfMayBlock; -diff --git a/memcheck/tests/Makefile.am b/memcheck/tests/Makefile.am -index 368239f..8557a19 100644 ---- a/memcheck/tests/Makefile.am -+++ b/memcheck/tests/Makefile.am -@@ -38,6 +38,9 @@ endif - if VGCONF_PLATFORMS_INCLUDE_AMD64_LINUX - SUBDIRS += amd64-linux - endif -+if VGCONF_PLATFORMS_INCLUDE_ARM64_LINUX -+SUBDIRS += arm64-linux -+endif - if VGCONF_PLATFORMS_INCLUDE_X86_SOLARIS - SUBDIRS += x86-solaris - endif -@@ -46,7 +49,8 @@ SUBDIRS += amd64-solaris - endif - - DIST_SUBDIRS = x86 amd64 ppc32 ppc64 s390x linux \ -- darwin solaris x86-linux amd64-linux x86-solaris amd64-solaris \ -+ darwin solaris x86-linux amd64-linux arm64-linux \ -+ x86-solaris amd64-solaris \ - common . - - dist_noinst_SCRIPTS = \ -diff --git a/memcheck/tests/arm64-linux/Makefile.am b/memcheck/tests/arm64-linux/Makefile.am -new file mode 100644 -index 0000000..284d83f ---- /dev/null -+++ b/memcheck/tests/arm64-linux/Makefile.am -@@ -0,0 +1,19 @@ -+ -+include $(top_srcdir)/Makefile.tool-tests.am -+ -+dist_noinst_SCRIPTS = \ -+ filter_stderr -+ -+noinst_HEADERS = scalar.h -+ -+EXTRA_DIST = \ -+ scalar.stderr.exp scalar.vgtest -+ -+check_PROGRAMS = \ -+ scalar -+ -+ -+AM_CFLAGS += @FLAG_M64@ -+AM_CXXFLAGS += @FLAG_M64@ -+AM_CCASFLAGS += @FLAG_M64@ -+ -diff --git a/memcheck/tests/arm64-linux/filter_stderr b/memcheck/tests/arm64-linux/filter_stderr -new file mode 100755 -index 0000000..a778e97 ---- /dev/null -+++ b/memcheck/tests/arm64-linux/filter_stderr -@@ -0,0 +1,3 @@ -+#! /bin/sh -+ -+../filter_stderr "$@" -diff --git a/memcheck/tests/arm64-linux/scalar.c b/memcheck/tests/arm64-linux/scalar.c -new file mode 100644 -index 0000000..e8f2e43 ---- /dev/null -+++ b/memcheck/tests/arm64-linux/scalar.c -@@ -0,0 +1,1278 @@ -+/* This is the arm64 variant of memcheck/tests/x86-linux/scalar.c -+ syscalls are in x86 number order to make exp comparison easier. */ -+#define _GNU_SOURCE -+#include "../../memcheck.h" -+#include "scalar.h" -+#include -+#include -+#include -+#include // MREMAP_FIXED -+ -+// Here we are trying to trigger every syscall error (scalar errors and -+// memory errors) for every syscall. We do this by passing a lot of bogus -+// arguments, mostly 0 and 1 (often it's 1 because NULL ptr args often aren't -+// checked for memory errors, or in order to have a non-zero length used -+// with some buffer). So most of the syscalls don't actually succeed and do -+// anything. -+// -+// Occasionally we have to be careful not to cause Valgrind to seg fault in -+// its pre-syscall wrappers; it does so because it can't know in general -+// when memory is unaddressable, and so tries to dereference it when doing -+// PRE_MEM_READ/PRE_MEM_WRITE calls. (Note that Memcheck will -+// always issue an error message immediately before these seg faults occur). -+// -+// The output has numbers like "3s 2m" for each syscall. "s" is short for -+// "scalar", ie. the argument itself is undefined. "m" is short for "memory", -+// ie. the argument points to memory which is unaddressable. -+int main(void) -+{ -+ // uninitialised, but we know px[0] is 0x0 -+ long* px = malloc(sizeof(long)); -+ long x0 = px[0]; -+ long res; -+ -+ // All __NR_xxx numbers are taken from x86 -+ -+ // __NR_restart_syscall 0 // XXX: not yet handled, perhaps should be... -+ GO(__NR_restart_syscall, "n/a"); -+ //SY(__NR_restart_syscall); // (Not yet handled by Valgrind) FAIL; -+ -+ // __NR_exit 1 -+ GO(__NR_exit, "below"); -+ // (see below) -+ -+ // __NR_fork arm64 only has clone -+ //GO(__NR_fork, "other"); -+ // (sse scalar_fork.c) -+ -+ // __NR_read 3 -+ // Nb: here we are also getting an error from the syscall arg itself. -+ GO(__NR_read, "1+3s 1m"); -+ SY(__NR_read+x0, x0, x0, x0+1); FAILx(EFAULT); -+ -+ // __NR_write 4 -+ GO(__NR_write, "3s 1m"); -+ SY(__NR_write, x0, x0, x0+1); FAIL; -+ -+ // __NR_open arm64 only as openat. -+ //GO(__NR_open, "(2-args) 2s 1m"); -+ //SY(__NR_open, x0, x0); FAIL; -+ -+ // Only 1s 0m errors -- the other 2s 1m have been checked in the previous -+ // open test, and if we test them they may be commoned up but they also -+ // may not. arm64 only has openat. -+ //GO(__NR_open, "(3-args) 1s 0m"); -+ //SY(__NR_open, "scalar.c", O_CREAT|O_EXCL, x0); FAIL; -+ -+ // __NR_close 6 -+ GO(__NR_close, "1s 0m"); -+ SY(__NR_close, x0-1); FAIL; -+ -+ // __NR_waitpid arm64 only has waitid. -+ //GO(__NR_waitpid, "3s 1m"); -+ //SY(__NR_waitpid, x0, x0+1, x0); FAIL; -+ -+ // __NR_creat arm64 only has openat -+ //GO(__NR_creat, "2s 1m"); -+ //SY(__NR_creat, x0, x0); FAIL; -+ -+ // __NR_link arm64 only has linkat -+ //GO(__NR_link, "2s 2m"); -+ //SY(__NR_link, x0, x0); FAIL; -+ -+ // __NR_unlink arm64 only has unlinkat -+ //GO(__NR_unlink, "1s 1m"); -+ //SY(__NR_unlink, x0); FAIL; -+ -+ // __NR_execve 11 -+ // Nb: could have 3 memory errors if we pass x0+1 as the 2nd and 3rd -+ // args, except for bug #93174. -+ GO(__NR_execve, "3s 1m"); -+ SY(__NR_execve, x0, x0, x0); FAIL; -+ -+ // __NR_chdir 12 -+ GO(__NR_chdir, "1s 1m"); -+ SY(__NR_chdir, x0); FAIL; -+ -+ // __NR_time on arm64 time is provided in the vdso -+ //GO(__NR_time, "1s 1m"); -+ //SY(__NR_time, x0+1); FAIL; -+ -+ // __NR_mknod arm64 only has mknodat -+ //GO(__NR_mknod, "3s 1m"); -+ //SY(__NR_mknod, x0, x0, x0); FAIL; -+ -+ // __NR_chmod arm64 only has chmodat -+ //GO(__NR_chmod, "2s 1m"); -+ //SY(__NR_chmod, x0, x0); FAIL; -+ -+ // __NR_lchown arm64 only has lchownat -+ //GO(__NR_lchown, "n/a"); -+ //SY(__NR_lchown); // (Not yet handled by Valgrind) FAIL; -+ -+ // __NR_break arm64 has no break -+ //GO(__NR_break, "ni"); -+ //SY(__NR_break); FAIL; -+ -+ // __NR_oldstat arm64 has no oldstat -+ //GO(__NR_oldstat, "n/a"); -+ // (obsolete, not handled by Valgrind) -+ -+ // __NR_lseek 19 -+ GO(__NR_lseek, "3s 0m"); -+ SY(__NR_lseek, x0-1, x0, x0); FAILx(EBADF); -+ -+ // __NR_getpid 20 -+ GO(__NR_getpid, "0s 0m"); -+ SY(__NR_getpid); SUCC; -+ -+ // __NR_mount 21 -+ GO(__NR_mount, "5s 3m"); -+ SY(__NR_mount, x0, x0, x0, x0, x0); FAIL; -+ -+ // __NR_umount arm64 only has umount2 -+ //GO(__NR_umount, "1s 1m"); -+ //SY(__NR_umount, x0); FAIL; -+ -+ // __NR_setuid 23 -+ GO(__NR_setuid, "1s 0m"); -+ SY(__NR_setuid, x0); FAIL; -+ -+ // __NR_getuid 24 -+ GO(__NR_getuid, "0s 0m"); -+ SY(__NR_getuid); SUCC; -+ -+ // __NR_stime arm64 does not have stime -+ //GO(__NR_stime, "n/a"); -+ //SY(__NR_stime); // (Not yet handled by Valgrind) FAIL; -+ -+ // __NR_ptrace arm64 does not use PTRACE_GETREGS -+ // XXX: memory pointed to be arg3 goes unchecked... otherwise would be 2m -+ //GO(__NR_ptrace, "4s 1m"); -+ //SY(__NR_ptrace, x0+PTRACE_GETREGS, x0, x0, x0); FAIL; -+ -+ // __NR_alarm arm64 only has ualarm -+ //GO(__NR_alarm, "1s 0m"); -+ //SY(__NR_alarm, x0); SUCC; -+ -+ // __NR_oldfstat arm64 does not have oldfstat -+ //GO(__NR_oldfstat, "n/a"); -+ // (obsolete, not handled by Valgrind) -+ -+ // __NR_pause arm64 does not have pause -+ //GO(__NR_pause, "ignore"); -+ // (hard to test, and no args so not much to be gained -- don't bother) -+ -+ // __NR_utime arm64 only has utimes -+ //GO(__NR_utime, "2s 2m"); -+ //SY(__NR_utime, x0, x0+1); FAIL; -+ -+ // __NR_stty arm64 doesn't have stty. -+ //GO(__NR_stty, "ni"); -+ //SY(__NR_stty); FAIL; -+ -+ // __NR_gtty arm64 doesm't have gtty. -+ //GO(__NR_gtty, "ni"); -+ //SY(__NR_gtty); FAIL; -+ -+ // __NR_access arm64 only has fsaccessat -+ //GO(__NR_access, "2s 1m"); -+ //SY(__NR_access, x0, x0); FAIL; -+ -+ // __NR_nice arm64 only has setpriority -+ //GO(__NR_nice, "1s 0m"); -+ //SY(__NR_nice, x0); SUCC; -+ -+ // __NR_ftime arm64 doesn't implement ftime -+ //GO(__NR_ftime, "ni"); -+ //SY(__NR_ftime); FAIL; -+ -+ // __NR_sync 36 -+ GO(__NR_sync, "0s 0m"); -+ SY(__NR_sync); SUCC; -+ -+ // __NR_kill 37 -+ GO(__NR_kill, "2s 0m"); -+ SY(__NR_kill, x0, x0); SUCC; -+ -+ // __NR_rename arm64 only has renameat -+ //GO(__NR_rename, "2s 2m"); -+ //SY(__NR_rename, x0, x0); FAIL; -+ -+ // __NR_mkdir arm64 only has mkdirat -+ //GO(__NR_mkdir, "2s 1m"); -+ //SY(__NR_mkdir, x0, x0); FAIL; -+ -+ // __NR_rmdir arm64 only has rmdirat -+ //GO(__NR_rmdir, "1s 1m"); -+ //SY(__NR_rmdir, x0); FAIL; -+ -+ // __NR_dup 41 -+ GO(__NR_dup, "1s 0m"); -+ SY(__NR_dup, x0-1); FAIL; -+ -+ // __NR_pipe arm64 only has pipe2 -+ //GO(__NR_pipe, "1s 1m"); -+ //SY(__NR_pipe, x0); FAIL; -+ -+ // __NR_times 43 -+ GO(__NR_times, "1s 1m"); -+ SY(__NR_times, x0+1); FAIL; -+ -+ // __NR_prof arm64 doesn't implement prof -+ //GO(__NR_prof, "ni"); -+ //SY(__NR_prof); FAIL; -+ -+ // __NR_brk 45 -+ GO(__NR_brk, "1s 0m"); -+ SY(__NR_brk, x0); SUCC; -+ -+ // __NR_setgid 46 -+ GO(__NR_setgid, "1s 0m"); -+ SY(__NR_setgid, x0); FAIL; -+ -+ // __NR_getgid 47 -+ GO(__NR_getgid, "0s 0m"); -+ SY(__NR_getgid); SUCC; -+ -+ // __NR_signal arm64 only has rt_sigaction -+ //GO(__NR_signal, "n/a"); -+ //SY(__NR_signal); // (Not yet handled by Valgrind) FAIL; -+ -+ // __NR_geteuid 49 -+ GO(__NR_geteuid, "0s 0m"); -+ SY(__NR_geteuid); SUCC; -+ -+ // __NR_getegid 50 -+ GO(__NR_getegid, "0s 0m"); -+ SY(__NR_getegid); SUCC; -+ -+ // __NR_acct 51 -+ GO(__NR_acct, "1s 1m"); -+ SY(__NR_acct, x0); FAIL; -+ -+ // __NR_umount2 52 -+ GO(__NR_umount2, "2s 1m"); -+ SY(__NR_umount2, x0, x0); FAIL; -+ -+ // __NR_lock arm64 doesn't implement lock -+ //GO(__NR_lock, "ni"); -+ //SY(__NR_lock); FAIL; -+ -+ // __NR_ioctl 54 -+ #include -+ GO(__NR_ioctl, "3s 1m"); -+ SY(__NR_ioctl, x0, x0+TCSETS, x0); FAIL; -+ -+ // __NR_fcntl 55 -+ // As with sys_open(), the 'fd' error is suppressed for the later ones. -+ // For F_GETFD the 3rd arg is ignored -+ GO(__NR_fcntl, "(GETFD) 2s 0m"); -+ SY(__NR_fcntl, x0-1, x0+F_GETFD, x0); FAILx(EBADF); -+ -+ // For F_DUPFD the 3rd arg is 'arg'. We don't check the 1st two args -+ // because any errors may or may not be commoned up with the ones from -+ // the previous fcntl call. -+ GO(__NR_fcntl, "(DUPFD) 1s 0m"); -+ SY(__NR_fcntl, -1, F_DUPFD, x0); FAILx(EBADF); -+ -+ // For F_GETLK the 3rd arg is 'lock'. On x86, this fails w/EBADF. But -+ // on amd64 in 32-bit mode it fails w/EFAULT. We don't check the 1st two -+ // args for the reason given above. -+ GO(__NR_fcntl, "(GETLK) 1s 0m"); -+ SY(__NR_fcntl, -1, F_GETLK, x0); FAIL; //FAILx(EBADF); -+ -+ // __NR_mpx arm64 doesn't implement mpx -+ //GO(__NR_mpx, "ni"); -+ //SY(__NR_mpx); FAIL; -+ -+ // __NR_setpgid 57 -+ GO(__NR_setpgid, "2s 0m"); -+ SY(__NR_setpgid, x0, x0-1); FAIL; -+ -+ // __NR_ulimit arm64 doesn't implement ulimit -+ //GO(__NR_ulimit, "ni"); -+ //SY(__NR_ulimit); FAIL; -+ -+ // __NR_oldolduname arm64 doesn't implement oldolduname, -+ //GO(__NR_oldolduname, "n/a"); -+ // (obsolete, not handled by Valgrind) -+ -+ // __NR_umask 60 -+ GO(__NR_umask, "1s 0m"); -+ SY(__NR_umask, x0+022); SUCC; -+ -+ // __NR_chroot 61 -+ GO(__NR_chroot, "1s 1m"); -+ SY(__NR_chroot, x0); FAIL; -+ -+ // __NR_ustat arm64 only has statfs -+ //GO(__NR_ustat, "n/a"); -+ // (deprecated, not handled by Valgrind) -+ -+ // __NR_dup2 arm64 only has dup or dup3 -+ //GO(__NR_dup2, "2s 0m"); -+ //SY(__NR_dup2, x0-1, x0); FAIL; -+ -+ // __NR_getppid 64 -+ GO(__NR_getppid, "0s 0m"); -+ SY(__NR_getppid); SUCC; -+ -+ // __NR_getpgrp arm64 only has getpgid -+ //GO(__NR_getpgrp, "0s 0m"); -+ //SY(__NR_getpgrp); SUCC; -+ -+ // __NR_setsid 66 -+ GO(__NR_setsid, "0s 0m"); -+ SY(__NR_setsid); SUCC_OR_FAIL; -+ -+ // __NR_sigaction arm64 only has rt_sigaction -+ //GO(__NR_sigaction, "3s 4m"); -+ //SY(__NR_sigaction, x0, x0+&px[1], x0+&px[1]); FAIL; -+ -+ // __NR_sgetmask arm64 only has rt_sigprocmask -+ //GO(__NR_sgetmask, "n/a"); -+ //SY(__NR_sgetmask); // (Not yet handled by Valgrind) FAIL; -+ -+ // __NR_ssetmask arm64 only has rt_sigprocmask -+ //GO(__NR_ssetmask, "n/a"); -+ //SY(__NR_ssetmask); // (Not yet handled by Valgrind) FAIL; -+ -+ // __NR_setreuid 70 -+ GO(__NR_setreuid, "2s 0m"); -+ SY(__NR_setreuid, x0, x0); FAIL; -+ -+ // __NR_setregid 71 -+ GO(__NR_setregid, "2s 0m"); -+ SY(__NR_setregid, x0, x0); FAIL; -+ -+ // __NR_sigsuspend arm64 only has rt_sigsuspend -+ // XXX: how do you use this function? -+ //GO(__NR_sigsuspend, "ignore"); -+ // (I don't know how to test this...) -+ -+ // __NR_sigpending arm64 only has rt_sigpending -+ //GO(__NR_sigpending, "1s 1m"); -+ //SY(__NR_sigpending, x0); FAIL; -+ -+ // __NR_sethostname 74 -+ GO(__NR_sethostname, "n/a"); -+ //SY(__NR_sethostname); // (Not yet handled by Valgrind) FAIL; -+ -+ // __NR_setrlimit 75 -+ GO(__NR_setrlimit, "2s 1m"); -+ SY(__NR_setrlimit, x0, x0); FAIL; -+ -+ // __NR_getrlimit 76 -+ GO(__NR_getrlimit, "2s 1m"); -+ SY(__NR_getrlimit, x0, x0); FAIL; -+ -+ // __NR_getrusage 77 -+ GO(__NR_getrusage, "2s 1m"); -+ SY(__NR_getrusage, x0, x0); FAIL; -+ -+ // __NR_gettimeofday 78 -+ GO(__NR_gettimeofday, "2s 2m"); -+ SY(__NR_gettimeofday, x0+1, x0+1); FAIL; -+ -+ // __NR_settimeofday 79 -+ GO(__NR_settimeofday, "2s 2m"); -+ SY(__NR_settimeofday, x0+1, x0+1); FAIL; -+ -+ // __NR_getgroups 80 -+ GO(__NR_getgroups, "2s 1m"); -+ SY(__NR_getgroups, x0+1, x0+1); FAIL; -+ -+ // __NR_setgroups 81 -+ GO(__NR_setgroups, "2s 1m"); -+ SY(__NR_setgroups, x0+1, x0+1); FAIL; -+ -+ // __NR_select arm64 only has pselect6 -+ //{ -+ // long args[5] = { x0+8, x0+0xffffffee, x0+1, x0+1, x0+1 }; -+ // GO(__NR_select, "1s 5m"); -+ // SY(__NR_select, args+x0); FAIL; -+ //} -+ -+ // __NR_symlink arm64 only has symlinkat -+ //GO(__NR_symlink, "2s 2m"); -+ //SY(__NR_symlink, x0, x0); FAIL; -+ -+ // __NR_oldlstat arm64 doesn't implement oldlstat -+ //GO(__NR_oldlstat, "n/a"); -+ // (obsolete, not handled by Valgrind) -+ -+ // __NR_readlink arm64 only has readlinkat -+ //GO(__NR_readlink, "3s 2m"); -+ //SY(__NR_readlink, x0+1, x0+1, x0+1); FAIL; -+ -+ // __NR_uselib arm64 doesn't implement uselib -+ //GO(__NR_uselib, "n/a"); -+ //SY(__NR_uselib); // (Not yet handled by Valgrind) FAIL; -+ -+ // __NR_swapon 87 -+ GO(__NR_swapon, "n/a"); -+ //SY(__NR_swapon); // (Not yet handled by Valgrind) FAIL; -+ -+ // __NR_reboot 88 -+ GO(__NR_reboot, "n/a"); -+ //SY(__NR_reboot); // (Not yet handled by Valgrind) FAIL; -+ -+ // __NR_readdir arm64 only implements getdents64 -+ //GO(__NR_readdir, "n/a"); -+ // (superseded, not handled by Valgrind) -+ -+ // __NR_mmap 90 -+ { -+ long args[6] = { x0, x0, x0, x0, x0-1, x0 }; -+ GO(__NR_mmap, "1s 1m"); -+ SY(__NR_mmap, args+x0); FAIL; -+ } -+ -+ // __NR_munmap 91 -+ GO(__NR_munmap, "2s 0m"); -+ SY(__NR_munmap, x0, x0); FAIL; -+ -+ // __NR_truncate 92 -+ GO(__NR_truncate, "2s 1m"); -+ SY(__NR_truncate, x0, x0); FAIL; -+ -+ // __NR_ftruncate 93 -+ GO(__NR_ftruncate, "2s 0m"); -+ SY(__NR_ftruncate, x0, x0); FAIL; -+ -+ // __NR_fchmod 94 -+ GO(__NR_fchmod, "2s 0m"); -+ SY(__NR_fchmod, x0-1, x0); FAIL; -+ -+ // __NR_fchown 95 -+ GO(__NR_fchown, "3s 0m"); -+ SY(__NR_fchown, x0, x0, x0); FAIL; -+ -+ // __NR_getpriority 96 -+ GO(__NR_getpriority, "2s 0m"); -+ SY(__NR_getpriority, x0-1, x0); FAIL; -+ -+ // __NR_setpriority 97 -+ GO(__NR_setpriority, "3s 0m"); -+ SY(__NR_setpriority, x0-1, x0, x0); FAIL; -+ -+ // __NR_profil arm64 doesn't implement profil. -+ //GO(__NR_profil, "ni"); -+ //SY(__NR_profil); FAIL; -+ -+ // __NR_statfs 99 -+ GO(__NR_statfs, "2s 2m"); -+ SY(__NR_statfs, x0, x0); FAIL; -+ -+ // __NR_fstatfs 100 -+ GO(__NR_fstatfs, "2s 1m"); -+ SY(__NR_fstatfs, x0, x0); FAIL; -+ -+ // __NR_ioperm arm64 doesn't implement ioperm -+ //GO(__NR_ioperm, "3s 0m"); -+ //SY(__NR_ioperm, x0, x0, x0); FAIL; -+ -+ // __NR_socketcall arm64 doesn't have socketcall. -+ //GO(__NR_socketcall, "XXX"); -+ // (XXX: need to do all sub-cases properly) -+ -+ // __NR_syslog 103 -+ GO(__NR_syslog, "3s 1m"); -+ SY(__NR_syslog, x0+2, x0, x0+1); FAIL; -+ -+ // __NR_setitimer 104 -+ GO(__NR_setitimer, "3s 2m"); -+ SY(__NR_setitimer, x0, x0+1, x0+1); FAIL; -+ -+ // __NR_getitimer 105 -+ GO(__NR_getitimer, "2s 1m"); -+ SY(__NR_getitimer, x0, x0, x0); FAIL; -+ -+ // __NR_stat arm64 doesn't implement stat -+ //GO(__NR_stat, "2s 2m"); -+ //SY(__NR_stat, x0, x0); FAIL; -+ -+ // __NR_lstat arm64 doesn't implement lstat -+ //GO(__NR_lstat, "2s 2m"); -+ //SY(__NR_lstat, x0, x0); FAIL; -+ -+ // __NR_fstat 108 -+ GO(__NR_fstat, "2s 1m"); -+ SY(__NR_fstat, x0, x0); FAIL; -+ -+ // __NR_olduname arm64 doesn't implement olduname -+ //GO(__NR_olduname, "n/a"); -+ // (obsolete, not handled by Valgrind) -+ -+ // __NR_iopl arm64 doesn't implement iopl -+ //GO(__NR_iopl, "1s 0m"); -+ //SY(__NR_iopl, x0+100); FAIL; -+ -+ // __NR_vhangup 111 -+ GO(__NR_vhangup, "0s 0m"); -+ SY(__NR_vhangup); SUCC_OR_FAIL; // Will succeed for superuser -+ -+ // __NR_idle arm64 doesn't implement idle. -+ //GO(__NR_idle, "ni"); -+ //SY(__NR_idle); FAIL; -+ -+ // __NR_vm86old arm64 doesn't implement vm86old -+ //GO(__NR_vm86old, "n/a"); -+ // (will probably never be handled by Valgrind) -+ -+ // __NR_wait4 114 -+ GO(__NR_wait4, "4s 2m"); -+ SY(__NR_wait4, x0, x0+1, x0, x0+1); FAIL; -+ -+ // __NR_swapoff 115 -+ GO(__NR_swapoff, "n/a"); -+ //SY(__NR_swapoff); // (Not yet handled by Valgrind) FAIL; -+ -+ // __NR_sysinfo 116 -+ GO(__NR_sysinfo, "1s 1m"); -+ SY(__NR_sysinfo, x0); FAIL; -+ -+ // __NR_ipc arm64 has separate msgctl semctl shmctl system calls -+ // XXX: This is simplistic -- need to do all the sub-cases properly. -+ // XXX: Also, should be 6 scalar errors, except glibc's syscall() doesn't -+ // use the 6th one! -+ //GO(__NR_ipc, "5s 0m"); -+ //SY(__NR_ipc, x0+4, x0, x0, x0, x0, x0); FAIL; -+ -+ // __NR_fsync 118 -+ GO(__NR_fsync, "1s 0m"); -+ SY(__NR_fsync, x0-1); FAIL; -+ -+ // __NR_sigreturn arm64 only has rt_sigreturn -+ //GO(__NR_sigreturn, "n/a"); -+ //SY(__NR_sigreturn); // (Not yet handled by Valgrind) FAIL; -+ -+ // __NR_clone 120 -+#ifndef CLONE_PARENT_SETTID -+#define CLONE_PARENT_SETTID 0x00100000 -+#endif -+ GO(__NR_clone, "5s 3m"); -+ SY(__NR_clone, x0|CLONE_PARENT_SETTID|CLONE_SETTLS|CLONE_CHILD_SETTID|SIGCHLD, x0, x0, x0, x0); FAIL; -+ if (0 == res) { -+ SY(__NR_exit, 0); FAIL; -+ } -+ -+ // __NR_setdomainname 121 -+ GO(__NR_setdomainname, "n/a"); -+ //SY(__NR_setdomainname); // (Not yet handled by Valgrind) FAIL; -+ -+ // __NR_uname 122 -+ GO(__NR_uname, "1s 1m"); -+ SY(__NR_uname, x0); FAIL; -+ -+ // __NR_modify_ldt arm64 doesn't implement modify_ldt -+ //GO(__NR_modify_ldt, "3s 1m"); -+ //SY(__NR_modify_ldt, x0+1, x0, x0+1); FAILx(EINVAL); -+ -+ // __NR_adjtimex 124 -+ // XXX: need to do properly, but deref'ing NULL causing Valgrind to crash... -+ GO(__NR_adjtimex, "XXX"); -+// SY(__NR_adjtimex, x0); FAIL; -+ -+ // __NR_mprotect 125 -+ GO(__NR_mprotect, "3s 0m"); -+ SY(__NR_mprotect, x0+1, x0, x0); FAILx(EINVAL); -+ -+ // __NR_sigprocmask arm64 has rt_sigprocmask -+ //GO(__NR_sigprocmask, "3s 2m"); -+ //SY(__NR_sigprocmask, x0, x0+&px[1], x0+&px[1]); SUCC; -+ -+ // __NR_create_module arm64 doesn't implement create_module. -+ //GO(__NR_create_module, "ni"); -+ //SY(__NR_create_module); FAIL; -+ -+ // __NR_init_module 128 -+ GO(__NR_init_module, "3s 2m"); -+ SY(__NR_init_module, x0, x0+1, x0); FAIL; -+ -+ // __NR_delete_module 129 -+ GO(__NR_delete_module, "n/a"); -+ //SY(__NR_delete_module); // (Not yet handled by Valgrind) FAIL; -+ -+ // __NR_get_kernel_syms arm64 doesn't implement get_kernel_syms -+ //GO(__NR_get_kernel_syms, "ni"); -+ //SY(__NR_get_kernel_syms); FAIL; -+ -+ // __NR_quotactl 131 -+ GO(__NR_quotactl, "4s 1m"); -+ SY(__NR_quotactl, x0, x0, x0, x0); FAIL; -+ -+ // __NR_getpgid 132 -+ GO(__NR_getpgid, "1s 0m"); -+ SY(__NR_getpgid, x0-1); FAIL; -+ -+ // __NR_fchdir 133 -+ GO(__NR_fchdir, "1s 0m"); -+ SY(__NR_fchdir, x0-1); FAIL; -+ -+ // __NR_bdflush arm64 doesn't implement bdflush -+ //GO(__NR_bdflush, "n/a"); -+ //SY(__NR_bdflush); // (Not yet handled by Valgrind) FAIL; -+ -+ // __NR_sysfs arm64 doesn't handle sysfs, use proc. -+ //GO(__NR_sysfs, "n/a"); -+ //SY(__NR_sysfs); // (Not yet handled by Valgrind) FAIL; -+ -+ // __NR_personality 136 -+ GO(__NR_personality, "1s 0m"); -+ SY(__NR_personality, x0+0xffffffff); SUCC; -+ -+ // __NR_afs_syscall arm64 doesn't implement afs_syscall -+ //GO(__NR_afs_syscall, "ni"); -+ //SY(__NR_afs_syscall); FAIL; -+ -+ // __NR_setfsuid 138 -+ GO(__NR_setfsuid, "1s 0m"); -+ SY(__NR_setfsuid, x0); SUCC; // This syscall has a stupid return value -+ -+ // __NR_setfsgid 139 -+ GO(__NR_setfsgid, "1s 0m"); -+ SY(__NR_setfsgid, x0); SUCC; // This syscall has a stupid return value -+ -+ // __NR__llseek arm64 doesn't implement _llseek -+ //GO(__NR__llseek, "5s 1m"); -+ //SY(__NR__llseek, x0, x0, x0, x0, x0); FAIL; -+ -+ // __NR_getdents arm64 only has getdents64 -+ //GO(__NR_getdents, "3s 1m"); -+ //SY(__NR_getdents, x0, x0, x0+1); FAIL; -+ -+ // __NR__newselect arm64 doesn't implement _newselect -+ //GO(__NR__newselect, "5s 4m"); -+ //SY(__NR__newselect, x0+8, x0+0xffffffff, x0+1, x0+1, x0+1); FAIL; -+ -+ // __NR_flock 143 -+ GO(__NR_flock, "2s 0m"); -+ SY(__NR_flock, x0, x0); FAIL; -+ -+ // __NR_msync 144 -+ GO(__NR_msync, "3s 1m"); -+ SY(__NR_msync, x0, x0+1, x0); FAIL; -+ -+ // __NR_readv 145 -+ GO(__NR_readv, "3s 1m"); -+ SY(__NR_readv, x0, x0, x0+1); FAIL; -+ -+ // __NR_writev 146 -+ GO(__NR_writev, "3s 1m"); -+ SY(__NR_writev, x0, x0, x0+1); FAIL; -+ -+ // __NR_getsid 147 -+ GO(__NR_getsid, "1s 0m"); -+ SY(__NR_getsid, x0-1); FAIL; -+ -+ // __NR_fdatasync 148 -+ GO(__NR_fdatasync, "1s 0m"); -+ SY(__NR_fdatasync, x0-1); FAIL; -+ -+ // __NR__sysctl arm64 doesn't implement sysctl, use /proc -+ //GO(__NR__sysctl, "1s 1m"); -+ //SY(__NR__sysctl, x0); FAIL; -+ -+ // __NR_mlock 150 -+ GO(__NR_mlock, "2s 0m"); -+ SY(__NR_mlock, x0, x0+1); FAIL; -+ -+ // __NR_munlock 151 -+ GO(__NR_munlock, "2s 0m"); -+ SY(__NR_munlock, x0, x0+1); FAIL; -+ -+ // __NR_mlockall 152 -+ GO(__NR_mlockall, "1s 0m"); -+ SY(__NR_mlockall, x0-1); FAIL; -+ -+ // __NR_munlockall 153 -+ GO(__NR_munlockall, "0s 0m"); -+ SY(__NR_munlockall); SUCC_OR_FAILx(EPERM); -+ -+ // __NR_sched_setparam 154 -+ GO(__NR_sched_setparam, "2s 1m"); -+ SY(__NR_sched_setparam, x0, x0); FAIL; -+ -+ // __NR_sched_getparam 155 -+ GO(__NR_sched_getparam, "2s 1m"); -+ SY(__NR_sched_getparam, x0, x0); FAIL; -+ -+ // __NR_sched_setscheduler 156 -+ GO(__NR_sched_setscheduler, "3s 1m"); -+ SY(__NR_sched_setscheduler, x0-1, x0, x0+1); FAIL; -+ -+ // __NR_sched_getscheduler 157 -+ GO(__NR_sched_getscheduler, "1s 0m"); -+ SY(__NR_sched_getscheduler, x0-1); FAIL; -+ -+ // __NR_sched_yield 158 -+ GO(__NR_sched_yield, "0s 0m"); -+ SY(__NR_sched_yield); SUCC; -+ -+ // __NR_sched_get_priority_max 159 -+ GO(__NR_sched_get_priority_max, "1s 0m"); -+ SY(__NR_sched_get_priority_max, x0-1); FAIL; -+ -+ // __NR_sched_get_priority_min 160 -+ GO(__NR_sched_get_priority_min, "1s 0m"); -+ SY(__NR_sched_get_priority_min, x0-1); FAIL; -+ -+ // __NR_sched_rr_get_interval 161 -+ GO(__NR_sched_rr_get_interval, "n/a"); -+ //SY(__NR_sched_rr_get_interval); // (Not yet handled by Valgrind) FAIL; -+ -+ // __NR_nanosleep 162 -+ GO(__NR_nanosleep, "2s 2m"); -+ SY(__NR_nanosleep, x0, x0+1); FAIL; -+ -+ // __NR_mremap 163 -+ GO(__NR_mremap, "5s 0m"); -+ SY(__NR_mremap, x0+1, x0, x0, x0+MREMAP_FIXED, x0); FAILx(EINVAL); -+ -+ // __NR_setresuid 164 -+ GO(__NR_setresuid, "3s 0m"); -+ SY(__NR_setresuid, x0, x0, x0); FAIL; -+ -+ // __NR_getresuid 165 -+ GO(__NR_getresuid, "3s 3m"); -+ SY(__NR_getresuid, x0, x0, x0); FAIL; -+ -+ // __NR_vm86 arm64 doesn't implement vm86 -+ //GO(__NR_vm86, "n/a"); -+ // (will probably never be handled by Valgrind) -+ -+ // __NR_query_module arm64 doesn't implement query_module -+ //GO(__NR_query_module, "ni"); -+ //SY(__NR_query_module); FAIL; -+ -+ // __NR_poll arm64 only has ppoll -+ //GO(__NR_poll, "3s 1m"); -+ //SY(__NR_poll, x0, x0+1, x0); FAIL; -+ -+ // __NR_nfsservctl 169 -+ GO(__NR_nfsservctl, "n/a"); -+ //SY(__NR_nfsservctl); // (Not yet handled by Valgrind) FAIL; -+ -+ // __NR_setresgid 170 -+ GO(__NR_setresgid, "3s 0m"); -+ SY(__NR_setresgid, x0, x0, x0); FAIL; -+ -+ // __NR_getresgid 171 -+ GO(__NR_getresgid, "3s 3m"); -+ SY(__NR_getresgid, x0, x0, x0); FAIL; -+ -+ // __NR_prctl 172 -+ GO(__NR_prctl, "5s 0m"); -+ SY(__NR_prctl, x0, x0, x0, x0, x0); FAIL; -+ -+ // __NR_rt_sigreturn 173 -+ GO(__NR_rt_sigreturn, "n/a"); -+ //SY(__NR_rt_sigreturn); // (Not yet handled by Valgrind) FAIL; -+ -+ // __NR_rt_sigaction 174 -+ GO(__NR_rt_sigaction, "4s 4m"); -+ SY(__NR_rt_sigaction, x0, x0+&px[2], x0+&px[2], x0); FAIL; -+ -+ // __NR_rt_sigprocmask 175 -+ GO(__NR_rt_sigprocmask, "4s 2m"); -+ SY(__NR_rt_sigprocmask, x0, x0+1, x0+1, x0); FAIL; -+ -+ // __NR_rt_sigpending 176 -+ GO(__NR_rt_sigpending, "2s 1m"); -+ SY(__NR_rt_sigpending, x0, x0+1); FAIL; -+ -+ // __NR_rt_sigtimedwait 177 -+ GO(__NR_rt_sigtimedwait, "4s 3m"); -+ SY(__NR_rt_sigtimedwait, x0+1, x0+1, x0+1, x0); FAIL; -+ -+ // __NR_rt_sigqueueinfo 178 -+ GO(__NR_rt_sigqueueinfo, "3s 1m"); -+ SY(__NR_rt_sigqueueinfo, x0, x0+1, x0); FAIL; -+ -+ // __NR_rt_sigsuspend 179 -+ GO(__NR_rt_sigsuspend, "ignore"); -+ // (I don't know how to test this...) -+ -+ // __NR_pread64 180 -+ GO(__NR_pread64, "5s 1m"); -+ SY(__NR_pread64, x0, x0, x0+1, x0, x0); FAIL; -+ -+ // __NR_pwrite64 181 -+ GO(__NR_pwrite64, "5s 1m"); -+ SY(__NR_pwrite64, x0, x0, x0+1, x0, x0); FAIL; -+ -+ // __NR_chown arm64 only has chownat -+ //GO(__NR_chown, "3s 1m"); -+ //SY(__NR_chown, x0, x0, x0); FAIL; -+ -+ // __NR_getcwd 183 -+ GO(__NR_getcwd, "2s 1m"); -+ SY(__NR_getcwd, x0, x0+1); FAIL; -+ -+ // __NR_capget 184 -+ GO(__NR_capget, "2s 2m"); -+ SY(__NR_capget, x0, x0+1); FAIL; -+ -+ // __NR_capset 185 -+ GO(__NR_capset, "2s 2m"); -+ SY(__NR_capset, x0, x0); FAIL; -+ -+ // __NR_sigaltstack 186 -+ { -+ struct our_sigaltstack { -+ void *ss_sp; -+ int ss_flags; -+ size_t ss_size; -+ } ss; -+ ss.ss_sp = NULL; -+ ss.ss_flags = 0; -+ ss.ss_size = 0; -+ VALGRIND_MAKE_MEM_NOACCESS(& ss, sizeof(struct our_sigaltstack)); -+ GO(__NR_sigaltstack, "2s 2m"); -+ SY(__NR_sigaltstack, x0+&ss, x0+&ss); SUCC; -+ } -+ -+ // __NR_sendfile 187 -+ GO(__NR_sendfile, "4s 1m"); -+ SY(__NR_sendfile, x0, x0, x0+1, x0); FAIL; -+ -+ // __NR_getpmsg arm64 doesn't implement getpmsg -+ // Could do 5s 4m with more effort, but I can't be bothered for this -+ // crappy non-standard syscall. -+ //GO(__NR_getpmsg, "5s 0m"); -+ //SY(__NR_getpmsg, x0, x0, x0, x0); FAIL; -+ -+ // __NR_putpmsg arm64 doesn't implement putpmsg -+ // Could do 5s 2m with more effort, but I can't be bothered for this -+ // crappy non-standard syscall. -+ //GO(__NR_putpmsg, "5s 0m"); -+ //SY(__NR_putpmsg, x0, x0, x0, x0, x0); FAIL; -+ -+ // __NR_vfork arm64 only has clone -+ //GO(__NR_vfork, "other"); -+ // (sse scalar_vfork.c) -+ -+ // __NR_ugetrlimit arm64 only has getrlimit and prlimit64 -+ //GO(__NR_ugetrlimit, "2s 1m"); -+ //SY(__NR_ugetrlimit, x0, x0); FAIL; -+ -+ // __NR_mmap2 arm64 doesn't implement mmap2 -+ //GO(__NR_mmap2, "6s 0m"); -+ //SY(__NR_mmap2, x0, x0, x0, x0, x0-1, x0); FAIL; -+ -+ // __NR_truncate64 arm64 just has truncate -+ //GO(__NR_truncate64, "3s 1m"); -+ //SY(__NR_truncate64, x0, x0, x0); FAIL; -+ -+ // __NR_ftruncate64 arm64 just has ftruncate -+ //GO(__NR_ftruncate64, "3s 0m"); -+ //SY(__NR_ftruncate64, x0, x0, x0); FAIL; -+ -+ // __NR_stat64 arm64 doesn't implement stat64 -+ //GO(__NR_stat64, "2s 2m"); -+ //SY(__NR_stat64, x0, x0); FAIL; -+ -+ // __NR_lstat64 196 -+ //GO(__NR_lstat64, "2s 2m"); -+ //SY(__NR_lstat64, x0, x0); FAIL; -+ -+ // __NR_fstat64 197 -+ //GO(__NR_fstat64, "2s 1m"); -+ //SY(__NR_fstat64, x0, x0); FAIL; -+ -+ // __NR_lchown32 198 -+ //GO(__NR_lchown32, "3s 1m"); -+ //SY(__NR_lchown32, x0, x0, x0); FAIL; -+ -+ // __NR_getuid32 199 -+ //GO(__NR_getuid32, "0s 0m"); -+ //SY(__NR_getuid32); SUCC; -+ -+ // __NR_getgid32 200 -+ //GO(__NR_getgid32, "0s 0m"); -+ //SY(__NR_getgid32); SUCC; -+ -+ // __NR_geteuid32 201 -+ //GO(__NR_geteuid32, "0s 0m"); -+ //SY(__NR_geteuid32); SUCC; -+ -+ // __NR_getegid32 202 -+ //GO(__NR_getegid32, "0s 0m"); -+ //SY(__NR_getegid32); SUCC; -+ -+ // __NR_setreuid32 203 -+ //GO(__NR_setreuid32, "2s 0m"); -+ //SY(__NR_setreuid32, x0, x0); FAIL; -+ -+ // __NR_setregid32 204 -+ //GO(__NR_setregid32, "2s 0m"); -+ //SY(__NR_setregid32, x0, x0); FAIL; -+ -+ // __NR_getgroups32 205 -+ //GO(__NR_getgroups32, "2s 1m"); -+ //SY(__NR_getgroups32, x0+1, x0+1); FAIL; -+ -+ // __NR_setgroups32 206 -+ //GO(__NR_setgroups32, "2s 1m"); -+ //SY(__NR_setgroups32, x0+1, x0+1); FAIL; -+ -+ // __NR_fchown32 207 -+ //GO(__NR_fchown32, "3s 0m"); -+ //SY(__NR_fchown32, x0, x0, x0); FAIL; -+ -+ // __NR_setresuid32 208 -+ //GO(__NR_setresuid32, "3s 0m"); -+ //SY(__NR_setresuid32, x0, x0, x0); FAIL; -+ -+ // __NR_getresuid32 209 -+ //GO(__NR_getresuid32, "3s 3m"); -+ //SY(__NR_getresuid32, x0, x0, x0); FAIL; -+ -+ // __NR_setresgid32 210 -+ //GO(__NR_setresgid32, "3s 0m"); -+ //SY(__NR_setresgid32, x0, x0, x0); FAIL; -+ -+ // __NR_getresgid32 211 -+ //GO(__NR_getresgid32, "3s 3m"); -+ //SY(__NR_getresgid32, x0, x0, x0); FAIL; -+ -+ // __NR_chown32 212 -+ //GO(__NR_chown32, "3s 1m"); -+ //SY(__NR_chown32, x0, x0, x0); FAIL; -+ -+ // __NR_setuid32 213 -+ //GO(__NR_setuid32, "1s 0m"); -+ //SY(__NR_setuid32, x0); FAIL; -+ -+ // __NR_setgid32 214 -+ //GO(__NR_setgid32, "1s 0m"); -+ //SY(__NR_setgid32, x0); FAIL; -+ -+ // __NR_setfsuid32 215 -+ //GO(__NR_setfsuid32, "1s 0m"); -+ //SY(__NR_setfsuid32, x0); SUCC; // This syscall has a stupid return value -+ -+ // __NR_setfsgid32 216 -+ //GO(__NR_setfsgid32, "1s 0m"); -+ //SY(__NR_setfsgid32, x0); SUCC; // This syscall has a stupid return value -+ -+ // __NR_pivot_root 217 -+ GO(__NR_pivot_root, "n/a"); -+ //SY(__NR_pivot_root); // (Not yet handled by Valgrind) FAIL; -+ -+ // __NR_mincore 218 -+ GO(__NR_mincore, "3s 1m"); -+ SY(__NR_mincore, x0, x0+40960, x0); FAIL; -+ -+ // __NR_madvise 219 -+ GO(__NR_madvise, "3s 0m"); -+ SY(__NR_madvise, x0, x0+1, x0); FAILx(ENOMEM); -+ -+ // __NR_getdents64 220 -+ GO(__NR_getdents64, "3s 1m"); -+ SY(__NR_getdents64, x0, x0, x0+1); FAIL; -+ -+ // __NR_fcntl64 221 -+ // As with sys_open(), we don't trigger errors for the 1st two args for -+ // the later ones. -+ // For F_GETFD the 3rd arg is ignored. -+ //GO(__NR_fcntl64, "(GETFD) 2s 0m"); -+ //SY(__NR_fcntl64, x0-1, x0+F_GETFD, x0); FAILx(EBADF); -+ -+ // For F_DUPFD the 3rd arg is 'arg' -+ //GO(__NR_fcntl64, "(DUPFD) 1s 0m"); -+ //SY(__NR_fcntl64, -1, F_DUPFD, x0); FAILx(EBADF); -+ -+ // For F_GETLK the 3rd arg is 'lock'. -+ // On x86, this fails w/EBADF. But on amd64 in 32-bit mode it fails -+ // w/EFAULT. -+ //GO(__NR_fcntl64, "(GETLK) 1s 0m"); -+ //SY(__NR_fcntl64, -1, +F_GETLK, x0); FAIL; //FAILx(EBADF); -+ -+ // 222 -+ //GO(222, "ni"); -+ //SY(222); FAIL; -+ -+ // 223 -+ //GO(223, "ni"); -+ //SY(223); FAIL; -+ -+ // __NR_gettid 224 -+ GO(__NR_gettid, "n/a"); -+ //SY(__NR_gettid); // (Not yet handled by Valgrind) FAIL; -+ -+ // __NR_readahead 225 -+ GO(__NR_readahead, "n/a"); -+ //SY(__NR_readahead); // (Not yet handled by Valgrind) FAIL; -+ -+ // __NR_setxattr 226 -+ GO(__NR_setxattr, "5s 3m"); -+ SY(__NR_setxattr, x0, x0, x0, x0+1, x0); FAIL; -+ -+ // __NR_lsetxattr 227 -+ GO(__NR_lsetxattr, "5s 3m"); -+ SY(__NR_lsetxattr, x0, x0, x0, x0+1, x0); FAIL; -+ -+ // __NR_fsetxattr 228 -+ GO(__NR_fsetxattr, "5s 2m"); -+ SY(__NR_fsetxattr, x0, x0, x0, x0+1, x0); FAIL; -+ -+ // __NR_getxattr 229 -+ GO(__NR_getxattr, "4s 3m"); -+ SY(__NR_getxattr, x0, x0, x0, x0+1); FAIL; -+ -+ // __NR_lgetxattr 230 -+ GO(__NR_lgetxattr, "4s 3m"); -+ SY(__NR_lgetxattr, x0, x0, x0, x0+1); FAIL; -+ -+ // __NR_fgetxattr 231 -+ GO(__NR_fgetxattr, "4s 2m"); -+ SY(__NR_fgetxattr, x0, x0, x0, x0+1); FAIL; -+ -+ // __NR_listxattr 232 -+ GO(__NR_listxattr, "3s 2m"); -+ SY(__NR_listxattr, x0, x0, x0+1); FAIL; -+ -+ // __NR_llistxattr 233 -+ GO(__NR_llistxattr, "3s 2m"); -+ SY(__NR_llistxattr, x0, x0, x0+1); FAIL; -+ -+ // __NR_flistxattr 234 -+ GO(__NR_flistxattr, "3s 1m"); -+ SY(__NR_flistxattr, x0-1, x0, x0+1); FAIL; /* kernel returns EBADF, but both seem correct */ -+ -+ // __NR_removexattr 235 -+ GO(__NR_removexattr, "2s 2m"); -+ SY(__NR_removexattr, x0, x0); FAIL; -+ -+ // __NR_lremovexattr 236 -+ GO(__NR_lremovexattr, "2s 2m"); -+ SY(__NR_lremovexattr, x0, x0); FAIL; -+ -+ // __NR_fremovexattr 237 -+ GO(__NR_fremovexattr, "2s 1m"); -+ SY(__NR_fremovexattr, x0, x0); FAIL; -+ -+ // __NR_tkill 238 -+ GO(__NR_tkill, "n/a"); -+ //SY(__NR_tkill); // (Not yet handled by Valgrind) FAIL; -+ -+ // __NR_sendfile64 239 -+ //GO(__NR_sendfile64, "4s 1m"); -+ //SY(__NR_sendfile64, x0, x0, x0+1, x0); FAIL; -+ -+ // __NR_futex 240 -+ #ifndef FUTEX_WAIT -+ #define FUTEX_WAIT 0 -+ #endif -+ // XXX: again, glibc not doing 6th arg means we have only 5s errors -+ GO(__NR_futex, "5s 2m"); -+ SY(__NR_futex, x0+FUTEX_WAIT, x0, x0, x0+1, x0, x0); FAIL; -+ -+ // __NR_sched_setaffinity 241 -+ GO(__NR_sched_setaffinity, "3s 1m"); -+ SY(__NR_sched_setaffinity, x0, x0+1, x0); FAIL; -+ -+ // __NR_sched_getaffinity 242 -+ GO(__NR_sched_getaffinity, "3s 1m"); -+ SY(__NR_sched_getaffinity, x0, x0+1, x0); FAIL; -+ -+ // __NR_set_thread_area 243 -+ //GO(__NR_set_thread_area, "1s 1m"); -+ //SY(__NR_set_thread_area, x0); FAILx(EFAULT); -+ -+ // __NR_get_thread_area 244 -+ //GO(__NR_get_thread_area, "1s 1m"); -+ //SY(__NR_get_thread_area, x0); FAILx(EFAULT); -+ -+ // __NR_io_setup 245 -+ GO(__NR_io_setup, "2s 1m"); -+ SY(__NR_io_setup, x0, x0); FAIL; -+ -+ // __NR_io_destroy 246 -+ { -+ // jump through hoops to prevent the PRE(io_destroy) wrapper crashing. -+ struct fake_aio_ring { -+ unsigned id; /* kernel internal index number */ -+ unsigned nr; /* number of io_events */ -+ // There are more fields in the real aio_ring, but the 'nr' field is -+ // the only one used by the PRE() wrapper. -+ } ring = { 0, 0 }; -+ struct fake_aio_ring* ringptr = ˚ -+ GO(__NR_io_destroy, "1s 0m"); -+ SY(__NR_io_destroy, x0+&ringptr); FAIL; -+ } -+ -+ // __NR_io_getevents 247 -+ GO(__NR_io_getevents, "5s 2m"); -+ SY(__NR_io_getevents, x0, x0, x0+1, x0, x0+1); FAIL; -+ -+ // __NR_io_submit 248 -+ GO(__NR_io_submit, "3s 1m"); -+ SY(__NR_io_submit, x0, x0+1, x0); FAIL; -+ -+ // __NR_io_cancel 249 -+ GO(__NR_io_cancel, "3s 2m"); -+ SY(__NR_io_cancel, x0, x0, x0); FAIL; -+ -+ // __NR_fadvise64 250 -+ GO(__NR_fadvise64, "n/a"); -+ //SY(__NR_fadvise64); // (Not yet handled by Valgrind) FAIL; -+ -+ // 251 -+ //GO(251, "ni"); -+ //SY(251); FAIL; -+ -+ // __NR_exit_group 252 -+ GO(__NR_exit_group, "other"); -+ // (see scalar_exit_group.c) -+ -+ // __NR_lookup_dcookie 253 -+ GO(__NR_lookup_dcookie, "4s 1m"); -+ SY(__NR_lookup_dcookie, x0, x0, x0, x0+1); FAIL; -+ -+ // __NR_epoll_create arm64 only has epoll_create1 -+ //GO(__NR_epoll_create, "1s 0m"); -+ //SY(__NR_epoll_create, x0); SUCC_OR_FAIL; -+ -+ // __NR_epoll_ctl 255 -+ GO(__NR_epoll_ctl, "4s 1m"); -+ SY(__NR_epoll_ctl, x0, x0, x0, x0); FAIL; -+ -+ // __NR_epoll_wait arm64 only has epoll_pwait -+ //GO(__NR_epoll_wait, "4s 1m"); -+ //SY(__NR_epoll_wait, x0, x0, x0+1, x0); FAIL; -+ -+ // __NR_remap_file_pages 257 -+ GO(__NR_remap_file_pages, "n/a"); -+ //SY(__NR_remap_file_pages); // (Not yet handled by Valgrind) FAIL; -+ -+ // __NR_set_tid_address 258 -+ GO(__NR_set_tid_address, "1s 0m"); -+ SY(__NR_set_tid_address, x0); SUCC_OR_FAILx(ENOSYS); -+ -+ // __NR_timer_create 259 -+ GO(__NR_timer_create, "3s 2m"); -+ SY(__NR_timer_create, x0, x0+1, x0); FAIL; -+ -+ // __NR_timer_settime (__NR_timer_create+1) -+ GO(__NR_timer_settime, "4s 2m"); -+ SY(__NR_timer_settime, x0, x0, x0, x0+1); FAIL; -+ -+ // __NR_timer_gettime (__NR_timer_create+2) -+ GO(__NR_timer_gettime, "2s 1m"); -+ SY(__NR_timer_gettime, x0, x0); FAIL; -+ -+ // __NR_timer_getoverrun (__NR_timer_create+3) -+ GO(__NR_timer_getoverrun, "1s 0m"); -+ SY(__NR_timer_getoverrun, x0); FAIL; -+ -+ // __NR_timer_delete (__NR_timer_create+4) -+ GO(__NR_timer_delete, "1s 0m"); -+ SY(__NR_timer_delete, x0); FAIL; -+ -+ // __NR_clock_settime (__NR_timer_create+5) -+ GO(__NR_clock_settime, "2s 1m"); -+ SY(__NR_clock_settime, x0, x0); FAIL; FAIL; -+ -+ // __NR_clock_gettime (__NR_timer_create+6) -+ GO(__NR_clock_gettime, "2s 1m"); -+ SY(__NR_clock_gettime, x0, x0); FAIL; -+ -+ // __NR_clock_getres (__NR_timer_create+7) -+ GO(__NR_clock_getres, "2s 1m"); -+ SY(__NR_clock_getres, x0+1, x0+1); FAIL; FAIL; -+ -+ // __NR_clock_nanosleep (__NR_timer_create+8) -+ GO(__NR_clock_nanosleep, "n/a"); -+ //SY(__NR_clock_nanosleep); // (Not yet handled by Valgrind) FAIL; -+ -+ // __NR_statfs64 268 -+ //GO(__NR_statfs64, "3s 2m"); -+ //SY(__NR_statfs64, x0, x0+1, x0); FAIL; -+ -+ // __NR_fstatfs64 269 -+ //GO(__NR_fstatfs64, "3s 1m"); -+ //SY(__NR_fstatfs64, x0, x0+1, x0); FAIL; -+ -+ // __NR_tgkill 270 -+ GO(__NR_tgkill, "n/a"); -+ //SY(__NR_tgkill); // (Not yet handled by Valgrind) FAIL; -+ -+ // __NR_utimes arm64 only has utimensat -+ //GO(__NR_utimes, "2s 2m"); -+ //SY(__NR_utimes, x0, x0+1); FAIL; -+ -+ // __NR_fadvise64_64 272 -+ //GO(__NR_fadvise64_64, "n/a"); -+ //SY(__NR_fadvise64_64); // (Not yet handled by Valgrind) FAIL; -+ -+ // __NR_vserver 273 -+ //GO(__NR_vserver, "ni"); -+ //SY(__NR_vserver); FAIL; -+ -+ // __NR_mbind 274 -+ GO(__NR_mbind, "n/a"); -+ //SY(__NR_mbind); // (Not yet handled by Valgrind) FAIL; -+ -+ // __NR_get_mempolicy 275 -+ GO(__NR_get_mempolicy, "n/a"); -+ //SY(__NR_get_mempolicy); // (Not yet handled by Valgrind) FAIL; -+ -+ // __NR_set_mempolicy 276 -+ GO(__NR_set_mempolicy, "n/a"); -+ //SY(__NR_set_mempolicy); // (Not yet handled by Valgrind) FAIL; -+ -+ // __NR_mq_open 277 -+ GO(__NR_mq_open, "4s 3m"); -+ SY(__NR_mq_open, x0, x0+O_CREAT, x0, x0+1); FAIL; -+ -+ // __NR_mq_unlink (__NR_mq_open+1) -+ GO(__NR_mq_unlink, "1s 1m"); -+ SY(__NR_mq_unlink, x0); FAIL; -+ -+ // __NR_mq_timedsend (__NR_mq_open+2) -+ GO(__NR_mq_timedsend, "5s 2m"); -+ SY(__NR_mq_timedsend, x0, x0, x0+1, x0, x0+1); FAIL; -+ -+ // __NR_mq_timedreceive (__NR_mq_open+3) -+ GO(__NR_mq_timedreceive, "5s 3m"); -+ SY(__NR_mq_timedreceive, x0, x0, x0+1, x0+1, x0+1); FAIL; -+ -+ // __NR_mq_notify (__NR_mq_open+4) -+ GO(__NR_mq_notify, "2s 1m"); -+ SY(__NR_mq_notify, x0, x0+1); FAIL; -+ -+ // __NR_mq_getsetattr (__NR_mq_open+5) -+ GO(__NR_mq_getsetattr, "3s 2m"); -+ SY(__NR_mq_getsetattr, x0, x0+1, x0+1); FAIL; -+ -+ // __NR_kexec_load 283 -+ GO(__NR_kexec_load, "ni"); -+ SY(__NR_kexec_load); FAIL; -+ -+ // __NR_epoll_create1 329 -+ GO(__NR_epoll_create1, "1s 0m"); -+ SY(__NR_epoll_create1, x0); SUCC_OR_FAIL; -+ -+ // __NR_process_vm_readv 347 -+ GO(__NR_process_vm_readv, "6s 2m"); -+ SY(__NR_process_vm_readv, x0, x0, x0+1, x0, x0+1, x0); FAIL; -+ -+ // __NR_process_vm_writev 348 -+ GO(__NR_process_vm_writev, "6s 2m"); -+ SY(__NR_process_vm_writev, x0, x0, x0+1, x0, x0+1, x0); FAIL; -+ -+ // no such syscall... -+ GO(9999, "1e"); -+ SY(9999); FAIL; -+ -+ // __NR_exit 1 -+ GO(__NR_exit, "1s 0m"); -+ SY(__NR_exit, x0); FAIL; -+ -+ assert(0); -+} -+ -diff --git a/memcheck/tests/arm64-linux/scalar.h b/memcheck/tests/arm64-linux/scalar.h -new file mode 100644 -index 0000000..9008816 ---- /dev/null -+++ b/memcheck/tests/arm64-linux/scalar.h -@@ -0,0 +1,62 @@ -+/* This is the arm64 variant of memcheck/tests/x86-linux/scalar.h */ -+#include "../../../include/vki/vki-scnums-arm64-linux.h" -+ -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+ -+// Since we use vki_unistd.h, we can't include . So we have to -+// declare this ourselves. -+extern long int syscall (long int __sysno, ...) __THROW; -+ -+// Thorough syscall scalar arg checking. Also serves as thorough checking -+// for (very) basic syscall use. Generally not trying to do anything -+// meaningful with the syscalls. -+ -+#define GO(__NR_xxx, s) \ -+ fprintf(stderr, "-----------------------------------------------------\n" \ -+ "%3d:%20s %s\n" \ -+ "-----------------------------------------------------\n", \ -+ __NR_xxx, #__NR_xxx, s); -+ -+#define SY res = syscall -+ -+#define FAIL assert(-1 == res); -+#define SUCC assert(-1 != res); -+#define SUCC_OR_FAIL /* no test */ -+ -+#define FAILx(E) \ -+ do { \ -+ int myerrno = errno; \ -+ if (-1 == res) { \ -+ if (E == myerrno) { \ -+ /* as expected */ \ -+ } else { \ -+ fprintf(stderr, "Expected error %s (%d), got %d\n", #E, E, myerrno); \ -+ exit(1); \ -+ } \ -+ } else { \ -+ fprintf(stderr, "Expected error %s (%d), got success\n", #E, E); \ -+ exit(1); \ -+ } \ -+ } while (0); -+ -+#define SUCC_OR_FAILx(E) \ -+ do { \ -+ int myerrno = errno; \ -+ if (-1 == res) { \ -+ if (E == myerrno) { \ -+ /* as expected */ \ -+ } else { \ -+ fprintf(stderr, "Expected error %s (%d), got %d\n", #E, E, myerrno); \ -+ exit(1); \ -+ } \ -+ } \ -+ } while (0); -diff --git a/memcheck/tests/arm64-linux/scalar.stderr.exp b/memcheck/tests/arm64-linux/scalar.stderr.exp -new file mode 100644 -index 0000000..1dc2035 ---- /dev/null -+++ b/memcheck/tests/arm64-linux/scalar.stderr.exp -@@ -0,0 +1,2598 @@ -+----------------------------------------------------- -+128:__NR_restart_syscall n/a -+----------------------------------------------------- -+----------------------------------------------------- -+ 93: __NR_exit below -+----------------------------------------------------- -+----------------------------------------------------- -+ 63: __NR_read 1+3s 1m -+----------------------------------------------------- -+Syscall param (syscallno) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:51) -+ -+Syscall param read(fd) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:51) -+ -+Syscall param read(buf) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:51) -+ -+Syscall param read(count) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:51) -+ -+Syscall param read(buf) points to unaddressable byte(s) -+ ... -+ by 0x........: main (scalar.c:51) -+ Address 0x........ is not stack'd, malloc'd or (recently) free'd -+ -+----------------------------------------------------- -+ 64: __NR_write 3s 1m -+----------------------------------------------------- -+Syscall param write(fd) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:55) -+ -+Syscall param write(buf) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:55) -+ -+Syscall param write(count) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:55) -+ -+Syscall param write(buf) points to unaddressable byte(s) -+ ... -+ by 0x........: main (scalar.c:55) -+ Address 0x........ is not stack'd, malloc'd or (recently) free'd -+ -+----------------------------------------------------- -+ 57: __NR_close 1s 0m -+----------------------------------------------------- -+Syscall param close(fd) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:69) -+ -+----------------------------------------------------- -+221: __NR_execve 3s 1m -+----------------------------------------------------- -+Syscall param execve(filename) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:91) -+ -+Syscall param execve(argv) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:91) -+ -+Syscall param execve(envp) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:91) -+ -+Syscall param execve(filename) points to unaddressable byte(s) -+ ... -+ by 0x........: main (scalar.c:91) -+ Address 0x........ is not stack'd, malloc'd or (recently) free'd -+ -+----------------------------------------------------- -+ 49: __NR_chdir 1s 1m -+----------------------------------------------------- -+Syscall param chdir(path) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:95) -+ -+Syscall param chdir(path) points to unaddressable byte(s) -+ ... -+ by 0x........: main (scalar.c:95) -+ Address 0x........ is not stack'd, malloc'd or (recently) free'd -+ -+----------------------------------------------------- -+ 62: __NR_lseek 3s 0m -+----------------------------------------------------- -+Syscall param lseek(fd) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:123) -+ -+Syscall param lseek(offset) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:123) -+ -+Syscall param lseek(whence) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:123) -+ -+----------------------------------------------------- -+172: __NR_getpid 0s 0m -+----------------------------------------------------- -+----------------------------------------------------- -+ 40: __NR_mount 5s 3m -+----------------------------------------------------- -+Syscall param mount(source) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:131) -+ -+Syscall param mount(target) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:131) -+ -+Syscall param mount(type) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:131) -+ -+Syscall param mount(flags) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:131) -+ -+Syscall param mount(data) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:131) -+ -+Syscall param mount(target) points to unaddressable byte(s) -+ ... -+ by 0x........: main (scalar.c:131) -+ Address 0x........ is not stack'd, malloc'd or (recently) free'd -+ -+Syscall param mount(type) points to unaddressable byte(s) -+ ... -+ by 0x........: main (scalar.c:131) -+ Address 0x........ is not stack'd, malloc'd or (recently) free'd -+ -+----------------------------------------------------- -+146: __NR_setuid 1s 0m -+----------------------------------------------------- -+Syscall param setuid(uid) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:139) -+ -+----------------------------------------------------- -+174: __NR_getuid 0s 0m -+----------------------------------------------------- -+----------------------------------------------------- -+ 81: __NR_sync 0s 0m -+----------------------------------------------------- -+----------------------------------------------------- -+129: __NR_kill 2s 0m -+----------------------------------------------------- -+Syscall param kill(pid) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:196) -+ -+Syscall param kill(signal) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:196) -+ -+----------------------------------------------------- -+ 23: __NR_dup 1s 0m -+----------------------------------------------------- -+Syscall param dup(oldfd) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:212) -+ -+----------------------------------------------------- -+153: __NR_times 1s 1m -+----------------------------------------------------- -+Syscall param times(buf) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:220) -+ -+Syscall param times(buf) points to unaddressable byte(s) -+ ... -+ by 0x........: main (scalar.c:220) -+ Address 0x........ is not stack'd, malloc'd or (recently) free'd -+ -+----------------------------------------------------- -+214: __NR_brk 1s 0m -+----------------------------------------------------- -+Syscall param brk(end_data_segment) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:228) -+ -+----------------------------------------------------- -+144: __NR_setgid 1s 0m -+----------------------------------------------------- -+Syscall param setgid(gid) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:232) -+ -+----------------------------------------------------- -+176: __NR_getgid 0s 0m -+----------------------------------------------------- -+----------------------------------------------------- -+175: __NR_geteuid 0s 0m -+----------------------------------------------------- -+----------------------------------------------------- -+177: __NR_getegid 0s 0m -+----------------------------------------------------- -+----------------------------------------------------- -+ 89: __NR_acct 1s 1m -+----------------------------------------------------- -+Syscall param acct(filename) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:252) -+ -+Syscall param acct(filename) points to unaddressable byte(s) -+ ... -+ by 0x........: main (scalar.c:252) -+ Address 0x........ is not stack'd, malloc'd or (recently) free'd -+ -+----------------------------------------------------- -+ 39: __NR_umount2 2s 1m -+----------------------------------------------------- -+Syscall param umount2(path) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:256) -+ -+Syscall param umount2(flags) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:256) -+ -+Syscall param umount2(path) points to unaddressable byte(s) -+ ... -+ by 0x........: main (scalar.c:256) -+ Address 0x........ is not stack'd, malloc'd or (recently) free'd -+ -+----------------------------------------------------- -+ 29: __NR_ioctl 3s 1m -+----------------------------------------------------- -+Syscall param ioctl(fd) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:265) -+ -+Syscall param ioctl(request) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:265) -+ -+Syscall param ioctl(arg) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:265) -+ -+Syscall param ioctl(TCSET{S,SW,SF}) points to unaddressable byte(s) -+ ... -+ by 0x........: main (scalar.c:265) -+ Address 0x........ is not stack'd, malloc'd or (recently) free'd -+ -+----------------------------------------------------- -+ 25: __NR_fcntl (GETFD) 2s 0m -+----------------------------------------------------- -+Syscall param fcntl(fd) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:271) -+ -+Syscall param fcntl(cmd) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:271) -+ -+----------------------------------------------------- -+ 25: __NR_fcntl (DUPFD) 1s 0m -+----------------------------------------------------- -+Syscall param fcntl(arg) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:277) -+ -+----------------------------------------------------- -+ 25: __NR_fcntl (GETLK) 1s 0m -+----------------------------------------------------- -+Syscall param fcntl(lock) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:283) -+ -+----------------------------------------------------- -+154: __NR_setpgid 2s 0m -+----------------------------------------------------- -+Syscall param setpgid(pid) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:291) -+ -+Syscall param setpgid(pgid) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:291) -+ -+----------------------------------------------------- -+166: __NR_umask 1s 0m -+----------------------------------------------------- -+Syscall param umask(mask) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:303) -+ -+----------------------------------------------------- -+ 51: __NR_chroot 1s 1m -+----------------------------------------------------- -+Syscall param chroot(path) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:307) -+ -+Syscall param chroot(path) points to unaddressable byte(s) -+ ... -+ by 0x........: main (scalar.c:307) -+ Address 0x........ is not stack'd, malloc'd or (recently) free'd -+ -+----------------------------------------------------- -+173: __NR_getppid 0s 0m -+----------------------------------------------------- -+----------------------------------------------------- -+157: __NR_setsid 0s 0m -+----------------------------------------------------- -+----------------------------------------------------- -+145: __NR_setreuid 2s 0m -+----------------------------------------------------- -+Syscall param setreuid(ruid) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:343) -+ -+Syscall param setreuid(euid) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:343) -+ -+----------------------------------------------------- -+143: __NR_setregid 2s 0m -+----------------------------------------------------- -+Syscall param setregid(rgid) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:347) -+ -+Syscall param setregid(egid) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:347) -+ -+----------------------------------------------------- -+161: __NR_sethostname n/a -+----------------------------------------------------- -+----------------------------------------------------- -+164: __NR_setrlimit 2s 1m -+----------------------------------------------------- -+Syscall param setrlimit(resource) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:364) -+ -+Syscall param setrlimit(rlim) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:364) -+ -+Syscall param setrlimit(rlim) points to unaddressable byte(s) -+ ... -+ by 0x........: main (scalar.c:364) -+ Address 0x........ is not stack'd, malloc'd or (recently) free'd -+ -+----------------------------------------------------- -+163: __NR_getrlimit 2s 1m -+----------------------------------------------------- -+Syscall param old_getrlimit(resource) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:368) -+ -+Syscall param old_getrlimit(rlim) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:368) -+ -+Syscall param old_getrlimit(rlim) points to unaddressable byte(s) -+ ... -+ by 0x........: main (scalar.c:368) -+ Address 0x........ is not stack'd, malloc'd or (recently) free'd -+ -+----------------------------------------------------- -+165: __NR_getrusage 2s 1m -+----------------------------------------------------- -+Syscall param getrusage(who) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:372) -+ -+Syscall param getrusage(usage) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:372) -+ -+Syscall param getrusage(usage) points to unaddressable byte(s) -+ ... -+ by 0x........: main (scalar.c:372) -+ Address 0x........ is not stack'd, malloc'd or (recently) free'd -+ -+----------------------------------------------------- -+169: __NR_gettimeofday 2s 2m -+----------------------------------------------------- -+Syscall param gettimeofday(tv) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:376) -+ -+Syscall param gettimeofday(tz) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:376) -+ -+Syscall param gettimeofday(tv) points to unaddressable byte(s) -+ ... -+ by 0x........: main (scalar.c:376) -+ Address 0x........ is not stack'd, malloc'd or (recently) free'd -+ -+Syscall param gettimeofday(tz) points to unaddressable byte(s) -+ ... -+ by 0x........: main (scalar.c:376) -+ Address 0x........ is not stack'd, malloc'd or (recently) free'd -+ -+----------------------------------------------------- -+170: __NR_settimeofday 2s 2m -+----------------------------------------------------- -+Syscall param settimeofday(tv) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:380) -+ -+Syscall param settimeofday(tz) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:380) -+ -+Syscall param settimeofday(tv) points to unaddressable byte(s) -+ ... -+ by 0x........: main (scalar.c:380) -+ Address 0x........ is not stack'd, malloc'd or (recently) free'd -+ -+Syscall param settimeofday(tz) points to unaddressable byte(s) -+ ... -+ by 0x........: main (scalar.c:380) -+ Address 0x........ is not stack'd, malloc'd or (recently) free'd -+ -+----------------------------------------------------- -+158: __NR_getgroups 2s 1m -+----------------------------------------------------- -+Syscall param getgroups(size) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:384) -+ -+Syscall param getgroups(list) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:384) -+ -+Syscall param getgroups(list) points to unaddressable byte(s) -+ ... -+ by 0x........: main (scalar.c:384) -+ Address 0x........ is not stack'd, malloc'd or (recently) free'd -+ -+----------------------------------------------------- -+159: __NR_setgroups 2s 1m -+----------------------------------------------------- -+Syscall param setgroups(size) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:388) -+ -+Syscall param setgroups(list) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:388) -+ -+Syscall param setgroups(list) points to unaddressable byte(s) -+ ... -+ by 0x........: main (scalar.c:388) -+ Address 0x........ is not stack'd, malloc'd or (recently) free'd -+ -+----------------------------------------------------- -+224: __NR_swapon n/a -+----------------------------------------------------- -+----------------------------------------------------- -+142: __NR_reboot n/a -+----------------------------------------------------- -+----------------------------------------------------- -+222: __NR_mmap 1s 1m -+----------------------------------------------------- -+Syscall param mmap(start) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:429) -+ -+----------------------------------------------------- -+215: __NR_munmap 2s 0m -+----------------------------------------------------- -+Syscall param munmap(start) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:434) -+ -+Syscall param munmap(length) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:434) -+ -+----------------------------------------------------- -+ 45: __NR_truncate 2s 1m -+----------------------------------------------------- -+Syscall param truncate(path) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:438) -+ -+Syscall param truncate(length) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:438) -+ -+Syscall param truncate(path) points to unaddressable byte(s) -+ ... -+ by 0x........: main (scalar.c:438) -+ Address 0x........ is not stack'd, malloc'd or (recently) free'd -+ -+----------------------------------------------------- -+ 46: __NR_ftruncate 2s 0m -+----------------------------------------------------- -+Syscall param ftruncate(fd) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:442) -+ -+Syscall param ftruncate(length) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:442) -+ -+----------------------------------------------------- -+ 52: __NR_fchmod 2s 0m -+----------------------------------------------------- -+Syscall param fchmod(fildes) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:446) -+ -+Syscall param fchmod(mode) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:446) -+ -+----------------------------------------------------- -+ 55: __NR_fchown 3s 0m -+----------------------------------------------------- -+Syscall param fchown(fd) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:450) -+ -+Syscall param fchown(owner) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:450) -+ -+Syscall param fchown(group) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:450) -+ -+----------------------------------------------------- -+141: __NR_getpriority 2s 0m -+----------------------------------------------------- -+Syscall param getpriority(which) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:454) -+ -+Syscall param getpriority(who) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:454) -+ -+----------------------------------------------------- -+140: __NR_setpriority 3s 0m -+----------------------------------------------------- -+Syscall param setpriority(which) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:458) -+ -+Syscall param setpriority(who) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:458) -+ -+Syscall param setpriority(prio) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:458) -+ -+----------------------------------------------------- -+ 43: __NR_statfs 2s 2m -+----------------------------------------------------- -+Syscall param statfs(path) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:466) -+ -+Syscall param statfs(buf) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:466) -+ -+Syscall param statfs(path) points to unaddressable byte(s) -+ ... -+ by 0x........: main (scalar.c:466) -+ Address 0x........ is not stack'd, malloc'd or (recently) free'd -+ -+ -+More than 100 errors detected. Subsequent errors -+will still be recorded, but in less detail than before. -+Syscall param statfs(buf) points to unaddressable byte(s) -+ ... -+ by 0x........: main (scalar.c:466) -+ Address 0x........ is not stack'd, malloc'd or (recently) free'd -+ -+----------------------------------------------------- -+ 44: __NR_fstatfs 2s 1m -+----------------------------------------------------- -+Syscall param fstatfs(fd) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:470) -+ -+Syscall param fstatfs(buf) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:470) -+ -+Syscall param fstatfs(buf) points to unaddressable byte(s) -+ ... -+ by 0x........: main (scalar.c:470) -+ Address 0x........ is not stack'd, malloc'd or (recently) free'd -+ -+----------------------------------------------------- -+116: __NR_syslog 3s 1m -+----------------------------------------------------- -+Syscall param syslog(type) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:482) -+ -+Syscall param syslog(bufp) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:482) -+ -+Syscall param syslog(len) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:482) -+ -+Syscall param syslog(bufp) points to unaddressable byte(s) -+ ... -+ by 0x........: main (scalar.c:482) -+ Address 0x........ is not stack'd, malloc'd or (recently) free'd -+ -+----------------------------------------------------- -+103: __NR_setitimer 3s 2m -+----------------------------------------------------- -+Syscall param setitimer(which) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:486) -+ -+Syscall param setitimer(value) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:486) -+ -+Syscall param setitimer(ovalue) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:486) -+ -+Syscall param setitimer(&value->it_interval) points to unaddressable byte(s) -+ ... -+ by 0x........: main (scalar.c:486) -+ Address 0x........ is not stack'd, malloc'd or (recently) free'd -+ -+Syscall param setitimer(&value->it_value) points to unaddressable byte(s) -+ ... -+ by 0x........: main (scalar.c:486) -+ Address 0x........ is not stack'd, malloc'd or (recently) free'd -+ -+Syscall param setitimer(&ovalue->it_interval) points to unaddressable byte(s) -+ ... -+ by 0x........: main (scalar.c:486) -+ Address 0x........ is not stack'd, malloc'd or (recently) free'd -+ -+Syscall param setitimer(&ovalue->it_value) points to unaddressable byte(s) -+ ... -+ by 0x........: main (scalar.c:486) -+ Address 0x........ is not stack'd, malloc'd or (recently) free'd -+ -+----------------------------------------------------- -+102: __NR_getitimer 2s 1m -+----------------------------------------------------- -+Syscall param getitimer(which) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:490) -+ -+Syscall param getitimer(value) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:490) -+ -+Syscall param getitimer(&value->it_interval) points to unaddressable byte(s) -+ ... -+ by 0x........: main (scalar.c:490) -+ Address 0x........ is not stack'd, malloc'd or (recently) free'd -+ -+Syscall param getitimer(&value->it_value) points to unaddressable byte(s) -+ ... -+ by 0x........: main (scalar.c:490) -+ Address 0x........ is not stack'd, malloc'd or (recently) free'd -+ -+----------------------------------------------------- -+ 80: __NR_fstat 2s 1m -+----------------------------------------------------- -+Syscall param fstat(fd) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:502) -+ -+Syscall param fstat(buf) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:502) -+ -+Syscall param fstat(buf) points to unaddressable byte(s) -+ ... -+ by 0x........: main (scalar.c:502) -+ Address 0x........ is not stack'd, malloc'd or (recently) free'd -+ -+----------------------------------------------------- -+ 58: __NR_vhangup 0s 0m -+----------------------------------------------------- -+----------------------------------------------------- -+260: __NR_wait4 4s 2m -+----------------------------------------------------- -+Syscall param wait4(pid) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:526) -+ -+Syscall param wait4(status) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:526) -+ -+Syscall param wait4(options) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:526) -+ -+Syscall param wait4(rusage) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:526) -+ -+Syscall param wait4(status) points to unaddressable byte(s) -+ ... -+ by 0x........: main (scalar.c:526) -+ Address 0x........ is not stack'd, malloc'd or (recently) free'd -+ -+Syscall param wait4(rusage) points to unaddressable byte(s) -+ ... -+ by 0x........: main (scalar.c:526) -+ Address 0x........ is not stack'd, malloc'd or (recently) free'd -+ -+----------------------------------------------------- -+225: __NR_swapoff n/a -+----------------------------------------------------- -+----------------------------------------------------- -+179: __NR_sysinfo 1s 1m -+----------------------------------------------------- -+Syscall param sysinfo(info) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:534) -+ -+Syscall param sysinfo(info) points to unaddressable byte(s) -+ ... -+ by 0x........: main (scalar.c:534) -+ Address 0x........ is not stack'd, malloc'd or (recently) free'd -+ -+----------------------------------------------------- -+ 82: __NR_fsync 1s 0m -+----------------------------------------------------- -+Syscall param fsync(fd) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:545) -+ -+----------------------------------------------------- -+220: __NR_clone 5s 3m -+----------------------------------------------------- -+Syscall param clone(flags) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:556) -+ -+Syscall param clone(child_stack) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:556) -+ -+Syscall param clone(parent_tidptr) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:556) -+ -+Syscall param clone(child_tls) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:556) -+ -+Syscall param clone(child_tidptr) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:556) -+ -+Syscall param clone(parent_tidptr) points to unaddressable byte(s) -+ ... -+ by 0x........: main (scalar.c:556) -+ Address 0x........ is not stack'd, malloc'd or (recently) free'd -+ -+----------------------------------------------------- -+162: __NR_setdomainname n/a -+----------------------------------------------------- -+----------------------------------------------------- -+160: __NR_uname 1s 1m -+----------------------------------------------------- -+Syscall param uname(buf) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:567) -+ -+Syscall param uname(buf) points to unaddressable byte(s) -+ ... -+ by 0x........: main (scalar.c:567) -+ Address 0x........ is not stack'd, malloc'd or (recently) free'd -+ -+----------------------------------------------------- -+171: __NR_adjtimex XXX -+----------------------------------------------------- -+----------------------------------------------------- -+226: __NR_mprotect 3s 0m -+----------------------------------------------------- -+Syscall param mprotect(addr) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:580) -+ -+Syscall param mprotect(len) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:580) -+ -+Syscall param mprotect(prot) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:580) -+ -+----------------------------------------------------- -+105: __NR_init_module 3s 2m -+----------------------------------------------------- -+Syscall param init_module(umod) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:592) -+ -+Syscall param init_module(len) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:592) -+ -+Syscall param init_module(uargs) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:592) -+ -+Syscall param init_module(umod) points to unaddressable byte(s) -+ ... -+ by 0x........: main (scalar.c:592) -+ Address 0x........ is not stack'd, malloc'd or (recently) free'd -+ -+Syscall param init_module(uargs) points to unaddressable byte(s) -+ ... -+ by 0x........: main (scalar.c:592) -+ Address 0x........ is not stack'd, malloc'd or (recently) free'd -+ -+----------------------------------------------------- -+106: __NR_delete_module n/a -+----------------------------------------------------- -+----------------------------------------------------- -+ 60: __NR_quotactl 4s 1m -+----------------------------------------------------- -+Syscall param quotactl(cmd) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:604) -+ -+Syscall param quotactl(special) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:604) -+ -+Syscall param quotactl(id) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:604) -+ -+Syscall param quotactl(addr) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:604) -+ -+Syscall param quotactl(special) points to unaddressable byte(s) -+ ... -+ by 0x........: main (scalar.c:604) -+ Address 0x........ is not stack'd, malloc'd or (recently) free'd -+ -+----------------------------------------------------- -+155: __NR_getpgid 1s 0m -+----------------------------------------------------- -+Syscall param getpgid(pid) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:608) -+ -+----------------------------------------------------- -+ 50: __NR_fchdir 1s 0m -+----------------------------------------------------- -+Syscall param fchdir(fd) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:612) -+ -+----------------------------------------------------- -+ 92: __NR_personality 1s 0m -+----------------------------------------------------- -+Syscall param personality(persona) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:624) -+ -+----------------------------------------------------- -+151: __NR_setfsuid 1s 0m -+----------------------------------------------------- -+Syscall param setfsuid(uid) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:632) -+ -+----------------------------------------------------- -+152: __NR_setfsgid 1s 0m -+----------------------------------------------------- -+Syscall param setfsgid(gid) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:636) -+ -+----------------------------------------------------- -+ 32: __NR_flock 2s 0m -+----------------------------------------------------- -+Syscall param flock(fd) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:652) -+ -+Syscall param flock(operation) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:652) -+ -+----------------------------------------------------- -+227: __NR_msync 3s 1m -+----------------------------------------------------- -+Syscall param msync(start) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:656) -+ -+Syscall param msync(length) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:656) -+ -+Syscall param msync(flags) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:656) -+ -+Syscall param msync(start) points to unaddressable byte(s) -+ ... -+ by 0x........: main (scalar.c:656) -+ Address 0x........ is not stack'd, malloc'd or (recently) free'd -+ -+----------------------------------------------------- -+ 65: __NR_readv 3s 1m -+----------------------------------------------------- -+Syscall param readv(fd) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:660) -+ -+Syscall param readv(vector) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:660) -+ -+Syscall param readv(count) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:660) -+ -+Syscall param readv(vector) points to unaddressable byte(s) -+ ... -+ by 0x........: main (scalar.c:660) -+ Address 0x........ is not stack'd, malloc'd or (recently) free'd -+ -+----------------------------------------------------- -+ 66: __NR_writev 3s 1m -+----------------------------------------------------- -+Syscall param writev(fd) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:664) -+ -+Syscall param writev(vector) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:664) -+ -+Syscall param writev(count) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:664) -+ -+Syscall param writev(vector) points to unaddressable byte(s) -+ ... -+ by 0x........: main (scalar.c:664) -+ Address 0x........ is not stack'd, malloc'd or (recently) free'd -+ -+----------------------------------------------------- -+156: __NR_getsid 1s 0m -+----------------------------------------------------- -+Syscall param getsid(pid) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:668) -+ -+----------------------------------------------------- -+ 83: __NR_fdatasync 1s 0m -+----------------------------------------------------- -+Syscall param fdatasync(fd) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:672) -+ -+----------------------------------------------------- -+228: __NR_mlock 2s 0m -+----------------------------------------------------- -+Syscall param mlock(addr) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:680) -+ -+Syscall param mlock(len) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:680) -+ -+----------------------------------------------------- -+229: __NR_munlock 2s 0m -+----------------------------------------------------- -+Syscall param munlock(addr) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:684) -+ -+Syscall param munlock(len) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:684) -+ -+----------------------------------------------------- -+230: __NR_mlockall 1s 0m -+----------------------------------------------------- -+Syscall param mlockall(flags) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:688) -+ -+----------------------------------------------------- -+231: __NR_munlockall 0s 0m -+----------------------------------------------------- -+----------------------------------------------------- -+118: __NR_sched_setparam 2s 1m -+----------------------------------------------------- -+Syscall param sched_setparam(pid) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:696) -+ -+Syscall param sched_setparam(p) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:696) -+ -+Syscall param sched_setparam(p) points to unaddressable byte(s) -+ ... -+ by 0x........: main (scalar.c:696) -+ Address 0x........ is not stack'd, malloc'd or (recently) free'd -+ -+----------------------------------------------------- -+121: __NR_sched_getparam 2s 1m -+----------------------------------------------------- -+Syscall param sched_getparam(pid) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:700) -+ -+Syscall param sched_getparam(p) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:700) -+ -+Syscall param sched_getparam(p) points to unaddressable byte(s) -+ ... -+ by 0x........: main (scalar.c:700) -+ Address 0x........ is not stack'd, malloc'd or (recently) free'd -+ -+----------------------------------------------------- -+119:__NR_sched_setscheduler 3s 1m -+----------------------------------------------------- -+Syscall param sched_setscheduler(pid) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:704) -+ -+Syscall param sched_setscheduler(policy) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:704) -+ -+Syscall param sched_setscheduler(p) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:704) -+ -+Syscall param sched_setscheduler(p) points to unaddressable byte(s) -+ ... -+ by 0x........: main (scalar.c:704) -+ Address 0x........ is not stack'd, malloc'd or (recently) free'd -+ -+----------------------------------------------------- -+120:__NR_sched_getscheduler 1s 0m -+----------------------------------------------------- -+Syscall param sched_getscheduler(pid) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:708) -+ -+----------------------------------------------------- -+124: __NR_sched_yield 0s 0m -+----------------------------------------------------- -+----------------------------------------------------- -+125:__NR_sched_get_priority_max 1s 0m -+----------------------------------------------------- -+Syscall param sched_get_priority_max(policy) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:716) -+ -+----------------------------------------------------- -+126:__NR_sched_get_priority_min 1s 0m -+----------------------------------------------------- -+Syscall param sched_get_priority_min(policy) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:720) -+ -+----------------------------------------------------- -+127:__NR_sched_rr_get_interval n/a -+----------------------------------------------------- -+----------------------------------------------------- -+101: __NR_nanosleep 2s 2m -+----------------------------------------------------- -+Syscall param nanosleep(req) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:728) -+ -+Syscall param nanosleep(rem) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:728) -+ -+Syscall param nanosleep(req) points to unaddressable byte(s) -+ ... -+ by 0x........: main (scalar.c:728) -+ Address 0x........ is not stack'd, malloc'd or (recently) free'd -+ -+Syscall param nanosleep(rem) points to unaddressable byte(s) -+ ... -+ by 0x........: main (scalar.c:728) -+ Address 0x........ is not stack'd, malloc'd or (recently) free'd -+ -+----------------------------------------------------- -+216: __NR_mremap 5s 0m -+----------------------------------------------------- -+Syscall param mremap(old_addr) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:732) -+ -+Syscall param mremap(old_size) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:732) -+ -+Syscall param mremap(new_size) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:732) -+ -+Syscall param mremap(flags) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:732) -+ -+Syscall param mremap(new_addr) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:732) -+ -+----------------------------------------------------- -+147: __NR_setresuid 3s 0m -+----------------------------------------------------- -+Syscall param setresuid(ruid) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:736) -+ -+Syscall param setresuid(euid) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:736) -+ -+Syscall param setresuid(suid) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:736) -+ -+----------------------------------------------------- -+148: __NR_getresuid 3s 3m -+----------------------------------------------------- -+Syscall param getresuid(ruid) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:740) -+ -+Syscall param getresuid(euid) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:740) -+ -+Syscall param getresuid(suid) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:740) -+ -+Syscall param getresuid(ruid) points to unaddressable byte(s) -+ ... -+ by 0x........: main (scalar.c:740) -+ Address 0x........ is not stack'd, malloc'd or (recently) free'd -+ -+Syscall param getresuid(euid) points to unaddressable byte(s) -+ ... -+ by 0x........: main (scalar.c:740) -+ Address 0x........ is not stack'd, malloc'd or (recently) free'd -+ -+Syscall param getresuid(suid) points to unaddressable byte(s) -+ ... -+ by 0x........: main (scalar.c:740) -+ Address 0x........ is not stack'd, malloc'd or (recently) free'd -+ -+----------------------------------------------------- -+ 42: __NR_nfsservctl n/a -+----------------------------------------------------- -+----------------------------------------------------- -+149: __NR_setresgid 3s 0m -+----------------------------------------------------- -+Syscall param setresgid(rgid) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:760) -+ -+Syscall param setresgid(egid) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:760) -+ -+Syscall param setresgid(sgid) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:760) -+ -+----------------------------------------------------- -+150: __NR_getresgid 3s 3m -+----------------------------------------------------- -+Syscall param getresgid(rgid) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:764) -+ -+Syscall param getresgid(egid) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:764) -+ -+Syscall param getresgid(sgid) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:764) -+ -+Syscall param getresgid(rgid) points to unaddressable byte(s) -+ ... -+ by 0x........: main (scalar.c:764) -+ Address 0x........ is not stack'd, malloc'd or (recently) free'd -+ -+Syscall param getresgid(egid) points to unaddressable byte(s) -+ ... -+ by 0x........: main (scalar.c:764) -+ Address 0x........ is not stack'd, malloc'd or (recently) free'd -+ -+Syscall param getresgid(sgid) points to unaddressable byte(s) -+ ... -+ by 0x........: main (scalar.c:764) -+ Address 0x........ is not stack'd, malloc'd or (recently) free'd -+ -+----------------------------------------------------- -+167: __NR_prctl 5s 0m -+----------------------------------------------------- -+Syscall param prctl(option) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:768) -+ -+Syscall param prctl(arg2) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:768) -+ -+Syscall param prctl(arg3) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:768) -+ -+Syscall param prctl(arg4) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:768) -+ -+Syscall param prctl(arg5) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:768) -+ -+----------------------------------------------------- -+139: __NR_rt_sigreturn n/a -+----------------------------------------------------- -+----------------------------------------------------- -+134: __NR_rt_sigaction 4s 4m -+----------------------------------------------------- -+Syscall param rt_sigaction(signum) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:776) -+ -+Syscall param rt_sigaction(act) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:776) -+ -+Syscall param rt_sigaction(oldact) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:776) -+ -+Syscall param rt_sigaction(sigsetsize) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:776) -+ -+Syscall param rt_sigaction(act->sa_handler) points to unaddressable byte(s) -+ ... -+ by 0x........: main (scalar.c:776) -+ Address 0x........ is 8 bytes after a block of size 8 alloc'd -+ at 0x........: malloc (vg_replace_malloc.c:...) -+ by 0x........: main (scalar.c:30) -+ -+Syscall param rt_sigaction(act->sa_mask) points to unaddressable byte(s) -+ ... -+ by 0x........: main (scalar.c:776) -+ Address 0x........ is 24 bytes after a block of size 16 in arena "client" -+ -+Syscall param rt_sigaction(act->sa_flags) points to unaddressable byte(s) -+ ... -+ by 0x........: main (scalar.c:776) -+ Address 0x........ is 16 bytes after a block of size 8 alloc'd -+ at 0x........: malloc (vg_replace_malloc.c:...) -+ by 0x........: main (scalar.c:30) -+ -+Syscall param rt_sigaction(oldact) points to unaddressable byte(s) -+ ... -+ by 0x........: main (scalar.c:776) -+ Address 0x........ is 8 bytes after a block of size 8 alloc'd -+ at 0x........: malloc (vg_replace_malloc.c:...) -+ by 0x........: main (scalar.c:30) -+ -+----------------------------------------------------- -+135: __NR_rt_sigprocmask 4s 2m -+----------------------------------------------------- -+Syscall param rt_sigprocmask(how) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:780) -+ -+Syscall param rt_sigprocmask(set) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:780) -+ -+Syscall param rt_sigprocmask(oldset) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:780) -+ -+Syscall param rt_sigprocmask(sigsetsize) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:780) -+ -+Syscall param rt_sigprocmask(set) points to unaddressable byte(s) -+ ... -+ by 0x........: main (scalar.c:780) -+ Address 0x........ is not stack'd, malloc'd or (recently) free'd -+ -+Syscall param rt_sigprocmask(oldset) points to unaddressable byte(s) -+ ... -+ by 0x........: main (scalar.c:780) -+ Address 0x........ is not stack'd, malloc'd or (recently) free'd -+ -+----------------------------------------------------- -+136: __NR_rt_sigpending 2s 1m -+----------------------------------------------------- -+Syscall param rt_sigpending(set) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:784) -+ -+Syscall param rt_sigpending(sigsetsize) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:784) -+ -+Syscall param rt_sigpending(set) points to unaddressable byte(s) -+ ... -+ by 0x........: main (scalar.c:784) -+ Address 0x........ is not stack'd, malloc'd or (recently) free'd -+ -+----------------------------------------------------- -+137:__NR_rt_sigtimedwait 4s 3m -+----------------------------------------------------- -+Syscall param rt_sigtimedwait(set) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:788) -+ -+Syscall param rt_sigtimedwait(info) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:788) -+ -+Syscall param rt_sigtimedwait(timeout) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:788) -+ -+Syscall param rt_sigtimedwait(sigsetsize) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:788) -+ -+Syscall param rt_sigtimedwait(set) points to unaddressable byte(s) -+ ... -+ by 0x........: main (scalar.c:788) -+ Address 0x........ is not stack'd, malloc'd or (recently) free'd -+ -+Syscall param rt_sigtimedwait(info) points to unaddressable byte(s) -+ ... -+ by 0x........: main (scalar.c:788) -+ Address 0x........ is not stack'd, malloc'd or (recently) free'd -+ -+Syscall param rt_sigtimedwait(timeout) points to unaddressable byte(s) -+ ... -+ by 0x........: main (scalar.c:788) -+ Address 0x........ is not stack'd, malloc'd or (recently) free'd -+ -+----------------------------------------------------- -+138:__NR_rt_sigqueueinfo 3s 1m -+----------------------------------------------------- -+Syscall param rt_sigqueueinfo(pid) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:792) -+ -+Syscall param rt_sigqueueinfo(sig) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:792) -+ -+Syscall param rt_sigqueueinfo(uinfo) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:792) -+ -+Syscall param rt_sigqueueinfo(uinfo) points to unaddressable byte(s) -+ ... -+ by 0x........: main (scalar.c:792) -+ Address 0x........ is not stack'd, malloc'd or (recently) free'd -+ -+----------------------------------------------------- -+133: __NR_rt_sigsuspend ignore -+----------------------------------------------------- -+----------------------------------------------------- -+ 67: __NR_pread64 5s 1m -+----------------------------------------------------- -+Syscall param pread64(fd) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:800) -+ -+Syscall param pread64(buf) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:800) -+ -+Syscall param pread64(count) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:800) -+ -+Syscall param pread64(offset) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:800) -+ -+Syscall param pread64(buf) points to unaddressable byte(s) -+ ... -+ by 0x........: main (scalar.c:800) -+ Address 0x........ is not stack'd, malloc'd or (recently) free'd -+ -+----------------------------------------------------- -+ 68: __NR_pwrite64 5s 1m -+----------------------------------------------------- -+Syscall param pwrite64(fd) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:804) -+ -+Syscall param pwrite64(buf) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:804) -+ -+Syscall param pwrite64(count) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:804) -+ -+Syscall param pwrite64(offset) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:804) -+ -+Syscall param pwrite64(buf) points to unaddressable byte(s) -+ ... -+ by 0x........: main (scalar.c:804) -+ Address 0x........ is not stack'd, malloc'd or (recently) free'd -+ -+----------------------------------------------------- -+ 17: __NR_getcwd 2s 1m -+----------------------------------------------------- -+Syscall param getcwd(buf) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:812) -+ -+Syscall param getcwd(size) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:812) -+ -+Syscall param getcwd(buf) points to unaddressable byte(s) -+ ... -+ by 0x........: main (scalar.c:812) -+ Address 0x........ is not stack'd, malloc'd or (recently) free'd -+ -+----------------------------------------------------- -+ 90: __NR_capget 2s 2m -+----------------------------------------------------- -+Syscall param capget(header) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:816) -+ -+Syscall param capget(data) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:816) -+ -+Syscall param capget(header) points to unaddressable byte(s) -+ ... -+ by 0x........: main (scalar.c:816) -+ Address 0x........ is not stack'd, malloc'd or (recently) free'd -+ -+Syscall param capget(data) points to unaddressable byte(s) -+ ... -+ by 0x........: main (scalar.c:816) -+ Address 0x........ is not stack'd, malloc'd or (recently) free'd -+ -+----------------------------------------------------- -+ 91: __NR_capset 2s 2m -+----------------------------------------------------- -+Syscall param capset(header) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:820) -+ -+Syscall param capset(data) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:820) -+ -+Syscall param capset(header) points to unaddressable byte(s) -+ ... -+ by 0x........: main (scalar.c:820) -+ Address 0x........ is not stack'd, malloc'd or (recently) free'd -+ -+Syscall param capset(data) points to unaddressable byte(s) -+ ... -+ by 0x........: main (scalar.c:820) -+ Address 0x........ is not stack'd, malloc'd or (recently) free'd -+ -+----------------------------------------------------- -+132: __NR_sigaltstack 2s 2m -+----------------------------------------------------- -+Syscall param sigaltstack(ss) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:834) -+ -+Syscall param sigaltstack(oss) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:834) -+ -+Syscall param sigaltstack(ss) points to unaddressable byte(s) -+ ... -+ by 0x........: main (scalar.c:834) -+ Address 0x........ is on thread 1's stack -+ in frame #1, created by main (scalar.c:28) -+ -+Syscall param sigaltstack(oss) points to unaddressable byte(s) -+ ... -+ by 0x........: main (scalar.c:834) -+ Address 0x........ is on thread 1's stack -+ in frame #1, created by main (scalar.c:28) -+ -+----------------------------------------------------- -+ 71: __NR_sendfile 4s 1m -+----------------------------------------------------- -+Syscall param sendfile(out_fd) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:839) -+ -+Syscall param sendfile(in_fd) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:839) -+ -+Syscall param sendfile(offset) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:839) -+ -+Syscall param sendfile(count) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:839) -+ -+Syscall param sendfile(offset) points to unaddressable byte(s) -+ ... -+ by 0x........: main (scalar.c:839) -+ Address 0x........ is not stack'd, malloc'd or (recently) free'd -+ -+----------------------------------------------------- -+ 41: __NR_pivot_root n/a -+----------------------------------------------------- -+----------------------------------------------------- -+232: __NR_mincore 3s 1m -+----------------------------------------------------- -+Syscall param mincore(start) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:967) -+ -+Syscall param mincore(length) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:967) -+ -+Syscall param mincore(vec) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:967) -+ -+Syscall param mincore(vec) points to unaddressable byte(s) -+ ... -+ by 0x........: main (scalar.c:967) -+ Address 0x........ is not stack'd, malloc'd or (recently) free'd -+ -+----------------------------------------------------- -+233: __NR_madvise 3s 0m -+----------------------------------------------------- -+Syscall param madvise(start) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:971) -+ -+Syscall param madvise(length) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:971) -+ -+Syscall param madvise(advice) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:971) -+ -+----------------------------------------------------- -+ 61: __NR_getdents64 3s 1m -+----------------------------------------------------- -+Syscall param getdents64(fd) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:975) -+ -+Syscall param getdents64(dirp) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:975) -+ -+Syscall param getdents64(count) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:975) -+ -+Syscall param getdents64(dirp) points to unaddressable byte(s) -+ ... -+ by 0x........: main (scalar.c:975) -+ Address 0x........ is not stack'd, malloc'd or (recently) free'd -+ -+----------------------------------------------------- -+178: __NR_gettid n/a -+----------------------------------------------------- -+----------------------------------------------------- -+213: __NR_readahead n/a -+----------------------------------------------------- -+----------------------------------------------------- -+ 5: __NR_setxattr 5s 3m -+----------------------------------------------------- -+Syscall param setxattr(path) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:1012) -+ -+Syscall param setxattr(name) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:1012) -+ -+Syscall param setxattr(value) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:1012) -+ -+Syscall param setxattr(size) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:1012) -+ -+Syscall param setxattr(flags) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:1012) -+ -+Syscall param setxattr(path) points to unaddressable byte(s) -+ ... -+ by 0x........: main (scalar.c:1012) -+ Address 0x........ is not stack'd, malloc'd or (recently) free'd -+ -+Syscall param setxattr(name) points to unaddressable byte(s) -+ ... -+ by 0x........: main (scalar.c:1012) -+ Address 0x........ is not stack'd, malloc'd or (recently) free'd -+ -+Syscall param setxattr(value) points to unaddressable byte(s) -+ ... -+ by 0x........: main (scalar.c:1012) -+ Address 0x........ is not stack'd, malloc'd or (recently) free'd -+ -+----------------------------------------------------- -+ 6: __NR_lsetxattr 5s 3m -+----------------------------------------------------- -+Syscall param lsetxattr(path) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:1016) -+ -+Syscall param lsetxattr(name) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:1016) -+ -+Syscall param lsetxattr(value) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:1016) -+ -+Syscall param lsetxattr(size) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:1016) -+ -+Syscall param lsetxattr(flags) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:1016) -+ -+Syscall param lsetxattr(path) points to unaddressable byte(s) -+ ... -+ by 0x........: main (scalar.c:1016) -+ Address 0x........ is not stack'd, malloc'd or (recently) free'd -+ -+Syscall param lsetxattr(name) points to unaddressable byte(s) -+ ... -+ by 0x........: main (scalar.c:1016) -+ Address 0x........ is not stack'd, malloc'd or (recently) free'd -+ -+Syscall param lsetxattr(value) points to unaddressable byte(s) -+ ... -+ by 0x........: main (scalar.c:1016) -+ Address 0x........ is not stack'd, malloc'd or (recently) free'd -+ -+----------------------------------------------------- -+ 7: __NR_fsetxattr 5s 2m -+----------------------------------------------------- -+Syscall param fsetxattr(fd) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:1020) -+ -+Syscall param fsetxattr(name) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:1020) -+ -+Syscall param fsetxattr(value) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:1020) -+ -+Syscall param fsetxattr(size) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:1020) -+ -+Syscall param fsetxattr(flags) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:1020) -+ -+Syscall param fsetxattr(name) points to unaddressable byte(s) -+ ... -+ by 0x........: main (scalar.c:1020) -+ Address 0x........ is not stack'd, malloc'd or (recently) free'd -+ -+Syscall param fsetxattr(value) points to unaddressable byte(s) -+ ... -+ by 0x........: main (scalar.c:1020) -+ Address 0x........ is not stack'd, malloc'd or (recently) free'd -+ -+----------------------------------------------------- -+ 8: __NR_getxattr 4s 3m -+----------------------------------------------------- -+Syscall param getxattr(path) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:1024) -+ -+Syscall param getxattr(name) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:1024) -+ -+Syscall param getxattr(value) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:1024) -+ -+Syscall param getxattr(size) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:1024) -+ -+Syscall param getxattr(path) points to unaddressable byte(s) -+ ... -+ by 0x........: main (scalar.c:1024) -+ Address 0x........ is not stack'd, malloc'd or (recently) free'd -+ -+Syscall param getxattr(name) points to unaddressable byte(s) -+ ... -+ by 0x........: main (scalar.c:1024) -+ Address 0x........ is not stack'd, malloc'd or (recently) free'd -+ -+Syscall param getxattr(value) points to unaddressable byte(s) -+ ... -+ by 0x........: main (scalar.c:1024) -+ Address 0x........ is not stack'd, malloc'd or (recently) free'd -+ -+----------------------------------------------------- -+ 9: __NR_lgetxattr 4s 3m -+----------------------------------------------------- -+Syscall param lgetxattr(path) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:1028) -+ -+Syscall param lgetxattr(name) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:1028) -+ -+Syscall param lgetxattr(value) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:1028) -+ -+Syscall param lgetxattr(size) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:1028) -+ -+Syscall param lgetxattr(path) points to unaddressable byte(s) -+ ... -+ by 0x........: main (scalar.c:1028) -+ Address 0x........ is not stack'd, malloc'd or (recently) free'd -+ -+Syscall param lgetxattr(name) points to unaddressable byte(s) -+ ... -+ by 0x........: main (scalar.c:1028) -+ Address 0x........ is not stack'd, malloc'd or (recently) free'd -+ -+Syscall param lgetxattr(value) points to unaddressable byte(s) -+ ... -+ by 0x........: main (scalar.c:1028) -+ Address 0x........ is not stack'd, malloc'd or (recently) free'd -+ -+----------------------------------------------------- -+ 10: __NR_fgetxattr 4s 2m -+----------------------------------------------------- -+Syscall param fgetxattr(fd) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:1032) -+ -+Syscall param fgetxattr(name) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:1032) -+ -+Syscall param fgetxattr(value) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:1032) -+ -+Syscall param fgetxattr(size) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:1032) -+ -+Syscall param fgetxattr(name) points to unaddressable byte(s) -+ ... -+ by 0x........: main (scalar.c:1032) -+ Address 0x........ is not stack'd, malloc'd or (recently) free'd -+ -+Syscall param fgetxattr(value) points to unaddressable byte(s) -+ ... -+ by 0x........: main (scalar.c:1032) -+ Address 0x........ is not stack'd, malloc'd or (recently) free'd -+ -+----------------------------------------------------- -+ 11: __NR_listxattr 3s 2m -+----------------------------------------------------- -+Syscall param listxattr(path) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:1036) -+ -+Syscall param listxattr(list) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:1036) -+ -+Syscall param listxattr(size) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:1036) -+ -+Syscall param listxattr(path) points to unaddressable byte(s) -+ ... -+ by 0x........: main (scalar.c:1036) -+ Address 0x........ is not stack'd, malloc'd or (recently) free'd -+ -+Syscall param listxattr(list) points to unaddressable byte(s) -+ ... -+ by 0x........: main (scalar.c:1036) -+ Address 0x........ is not stack'd, malloc'd or (recently) free'd -+ -+----------------------------------------------------- -+ 12: __NR_llistxattr 3s 2m -+----------------------------------------------------- -+Syscall param llistxattr(path) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:1040) -+ -+Syscall param llistxattr(list) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:1040) -+ -+Syscall param llistxattr(size) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:1040) -+ -+Syscall param llistxattr(path) points to unaddressable byte(s) -+ ... -+ by 0x........: main (scalar.c:1040) -+ Address 0x........ is not stack'd, malloc'd or (recently) free'd -+ -+Syscall param llistxattr(list) points to unaddressable byte(s) -+ ... -+ by 0x........: main (scalar.c:1040) -+ Address 0x........ is not stack'd, malloc'd or (recently) free'd -+ -+----------------------------------------------------- -+ 13: __NR_flistxattr 3s 1m -+----------------------------------------------------- -+Syscall param flistxattr(fd) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:1044) -+ -+Syscall param flistxattr(list) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:1044) -+ -+Syscall param flistxattr(size) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:1044) -+ -+Syscall param flistxattr(list) points to unaddressable byte(s) -+ ... -+ by 0x........: main (scalar.c:1044) -+ Address 0x........ is not stack'd, malloc'd or (recently) free'd -+ -+----------------------------------------------------- -+ 14: __NR_removexattr 2s 2m -+----------------------------------------------------- -+Syscall param removexattr(path) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:1048) -+ -+Syscall param removexattr(name) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:1048) -+ -+Syscall param removexattr(path) points to unaddressable byte(s) -+ ... -+ by 0x........: main (scalar.c:1048) -+ Address 0x........ is not stack'd, malloc'd or (recently) free'd -+ -+Syscall param removexattr(name) points to unaddressable byte(s) -+ ... -+ by 0x........: main (scalar.c:1048) -+ Address 0x........ is not stack'd, malloc'd or (recently) free'd -+ -+----------------------------------------------------- -+ 15: __NR_lremovexattr 2s 2m -+----------------------------------------------------- -+Syscall param lremovexattr(path) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:1052) -+ -+Syscall param lremovexattr(name) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:1052) -+ -+Syscall param lremovexattr(path) points to unaddressable byte(s) -+ ... -+ by 0x........: main (scalar.c:1052) -+ Address 0x........ is not stack'd, malloc'd or (recently) free'd -+ -+Syscall param lremovexattr(name) points to unaddressable byte(s) -+ ... -+ by 0x........: main (scalar.c:1052) -+ Address 0x........ is not stack'd, malloc'd or (recently) free'd -+ -+----------------------------------------------------- -+ 16: __NR_fremovexattr 2s 1m -+----------------------------------------------------- -+Syscall param fremovexattr(fd) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:1056) -+ -+Syscall param fremovexattr(name) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:1056) -+ -+Syscall param fremovexattr(name) points to unaddressable byte(s) -+ ... -+ by 0x........: main (scalar.c:1056) -+ Address 0x........ is not stack'd, malloc'd or (recently) free'd -+ -+----------------------------------------------------- -+130: __NR_tkill n/a -+----------------------------------------------------- -+----------------------------------------------------- -+ 98: __NR_futex 5s 2m -+----------------------------------------------------- -+Syscall param futex(futex) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:1072) -+ -+Syscall param futex(op) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:1072) -+ -+Syscall param futex(val) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:1072) -+ -+Syscall param futex(utime) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:1072) -+ -+Syscall param futex(futex) points to unaddressable byte(s) -+ ... -+ by 0x........: main (scalar.c:1072) -+ Address 0x........ is not stack'd, malloc'd or (recently) free'd -+ -+Syscall param futex(timeout) points to unaddressable byte(s) -+ ... -+ by 0x........: main (scalar.c:1072) -+ Address 0x........ is not stack'd, malloc'd or (recently) free'd -+ -+----------------------------------------------------- -+122:__NR_sched_setaffinity 3s 1m -+----------------------------------------------------- -+Syscall param sched_setaffinity(pid) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:1076) -+ -+Syscall param sched_setaffinity(len) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:1076) -+ -+Syscall param sched_setaffinity(mask) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:1076) -+ -+Syscall param sched_setaffinity(mask) points to unaddressable byte(s) -+ ... -+ by 0x........: main (scalar.c:1076) -+ Address 0x........ is not stack'd, malloc'd or (recently) free'd -+ -+----------------------------------------------------- -+123:__NR_sched_getaffinity 3s 1m -+----------------------------------------------------- -+Syscall param sched_getaffinity(pid) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:1080) -+ -+Syscall param sched_getaffinity(len) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:1080) -+ -+Syscall param sched_getaffinity(mask) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:1080) -+ -+Syscall param sched_getaffinity(mask) points to unaddressable byte(s) -+ ... -+ by 0x........: main (scalar.c:1080) -+ Address 0x........ is not stack'd, malloc'd or (recently) free'd -+ -+----------------------------------------------------- -+ 0: __NR_io_setup 2s 1m -+----------------------------------------------------- -+Syscall param io_setup(nr_events) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:1092) -+ -+Syscall param io_setup(ctxp) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:1092) -+ -+Syscall param io_setup(ctxp) points to unaddressable byte(s) -+ ... -+ by 0x........: main (scalar.c:1092) -+ Address 0x........ is not stack'd, malloc'd or (recently) free'd -+ -+----------------------------------------------------- -+ 1: __NR_io_destroy 1s 0m -+----------------------------------------------------- -+Syscall param io_destroy(ctx) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:1105) -+ -+----------------------------------------------------- -+ 4: __NR_io_getevents 5s 2m -+----------------------------------------------------- -+Syscall param io_getevents(ctx_id) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:1110) -+ -+Syscall param io_getevents(min_nr) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:1110) -+ -+Syscall param io_getevents(nr) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:1110) -+ -+Syscall param io_getevents(events) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:1110) -+ -+Syscall param io_getevents(timeout) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:1110) -+ -+Syscall param io_getevents(events) points to unaddressable byte(s) -+ ... -+ by 0x........: main (scalar.c:1110) -+ Address 0x........ is not stack'd, malloc'd or (recently) free'd -+ -+Syscall param io_getevents(timeout) points to unaddressable byte(s) -+ ... -+ by 0x........: main (scalar.c:1110) -+ Address 0x........ is not stack'd, malloc'd or (recently) free'd -+ -+----------------------------------------------------- -+ 2: __NR_io_submit 3s 1m -+----------------------------------------------------- -+Syscall param io_submit(ctx_id) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:1114) -+ -+Syscall param io_submit(nr) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:1114) -+ -+Syscall param io_submit(iocbpp) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:1114) -+ -+Syscall param io_submit(iocbpp) points to unaddressable byte(s) -+ ... -+ by 0x........: main (scalar.c:1114) -+ Address 0x........ is not stack'd, malloc'd or (recently) free'd -+ -+----------------------------------------------------- -+ 3: __NR_io_cancel 3s 2m -+----------------------------------------------------- -+Syscall param io_cancel(ctx_id) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:1118) -+ -+Syscall param io_cancel(iocb) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:1118) -+ -+Syscall param io_cancel(result) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:1118) -+ -+Syscall param io_cancel(iocb) points to unaddressable byte(s) -+ ... -+ by 0x........: main (scalar.c:1118) -+ Address 0x........ is not stack'd, malloc'd or (recently) free'd -+ -+Syscall param io_cancel(result) points to unaddressable byte(s) -+ ... -+ by 0x........: main (scalar.c:1118) -+ Address 0x........ is not stack'd, malloc'd or (recently) free'd -+ -+----------------------------------------------------- -+223: __NR_fadvise64 n/a -+----------------------------------------------------- -+----------------------------------------------------- -+ 94: __NR_exit_group other -+----------------------------------------------------- -+----------------------------------------------------- -+ 18: __NR_lookup_dcookie 4s 1m -+----------------------------------------------------- -+Syscall param lookup_dcookie(cookie) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:1134) -+ -+Syscall param lookup_dcookie(buf) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:1134) -+ -+Syscall param lookup_dcookie(len) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:1134) -+ -+----------------------------------------------------- -+ 21: __NR_epoll_ctl 4s 1m -+----------------------------------------------------- -+Syscall param epoll_ctl(epfd) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:1142) -+ -+Syscall param epoll_ctl(op) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:1142) -+ -+Syscall param epoll_ctl(fd) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:1142) -+ -+Syscall param epoll_ctl(event) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:1142) -+ -+Syscall param epoll_ctl(event) points to unaddressable byte(s) -+ ... -+ by 0x........: main (scalar.c:1142) -+ Address 0x........ is not stack'd, malloc'd or (recently) free'd -+ -+----------------------------------------------------- -+234:__NR_remap_file_pages n/a -+----------------------------------------------------- -+----------------------------------------------------- -+ 96:__NR_set_tid_address 1s 0m -+----------------------------------------------------- -+Syscall param set_tid_address(tidptr) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:1154) -+ -+----------------------------------------------------- -+107: __NR_timer_create 3s 2m -+----------------------------------------------------- -+Syscall param timer_create(clockid) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:1158) -+ -+Syscall param timer_create(evp) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:1158) -+ -+Syscall param timer_create(timerid) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:1158) -+ -+Syscall param timer_create(evp.sigev_value) points to unaddressable byte(s) -+ ... -+ by 0x........: main (scalar.c:1158) -+ Address 0x........ is not stack'd, malloc'd or (recently) free'd -+ -+Syscall param timer_create(evp.sigev_signo) points to unaddressable byte(s) -+ ... -+ by 0x........: main (scalar.c:1158) -+ Address 0x........ is not stack'd, malloc'd or (recently) free'd -+ -+Syscall param timer_create(evp.sigev_notify) points to unaddressable byte(s) -+ ... -+ by 0x........: main (scalar.c:1158) -+ Address 0x........ is not stack'd, malloc'd or (recently) free'd -+ -+Syscall param timer_create(timerid) points to unaddressable byte(s) -+ ... -+ by 0x........: main (scalar.c:1158) -+ Address 0x........ is not stack'd, malloc'd or (recently) free'd -+ -+----------------------------------------------------- -+110: __NR_timer_settime 4s 2m -+----------------------------------------------------- -+Syscall param timer_settime(timerid) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:1162) -+ -+Syscall param timer_settime(flags) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:1162) -+ -+Syscall param timer_settime(value) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:1162) -+ -+Syscall param timer_settime(ovalue) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:1162) -+ -+Syscall param timer_settime(value) points to unaddressable byte(s) -+ ... -+ by 0x........: main (scalar.c:1162) -+ Address 0x........ is not stack'd, malloc'd or (recently) free'd -+ -+Syscall param timer_settime(ovalue) points to unaddressable byte(s) -+ ... -+ by 0x........: main (scalar.c:1162) -+ Address 0x........ is not stack'd, malloc'd or (recently) free'd -+ -+----------------------------------------------------- -+108: __NR_timer_gettime 2s 1m -+----------------------------------------------------- -+Syscall param timer_gettime(timerid) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:1166) -+ -+Syscall param timer_gettime(value) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:1166) -+ -+Syscall param timer_gettime(value) points to unaddressable byte(s) -+ ... -+ by 0x........: main (scalar.c:1166) -+ Address 0x........ is not stack'd, malloc'd or (recently) free'd -+ -+----------------------------------------------------- -+109:__NR_timer_getoverrun 1s 0m -+----------------------------------------------------- -+Syscall param timer_getoverrun(timerid) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:1170) -+ -+----------------------------------------------------- -+111: __NR_timer_delete 1s 0m -+----------------------------------------------------- -+Syscall param timer_delete(timerid) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:1174) -+ -+----------------------------------------------------- -+112: __NR_clock_settime 2s 1m -+----------------------------------------------------- -+Syscall param clock_settime(clk_id) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:1178) -+ -+Syscall param clock_settime(tp) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:1178) -+ -+Syscall param clock_settime(tp) points to unaddressable byte(s) -+ ... -+ by 0x........: main (scalar.c:1178) -+ Address 0x........ is not stack'd, malloc'd or (recently) free'd -+ -+----------------------------------------------------- -+113: __NR_clock_gettime 2s 1m -+----------------------------------------------------- -+Syscall param clock_gettime(clk_id) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:1182) -+ -+Syscall param clock_gettime(tp) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:1182) -+ -+Syscall param clock_gettime(tp) points to unaddressable byte(s) -+ ... -+ by 0x........: main (scalar.c:1182) -+ Address 0x........ is not stack'd, malloc'd or (recently) free'd -+ -+----------------------------------------------------- -+114: __NR_clock_getres 2s 1m -+----------------------------------------------------- -+Syscall param clock_getres(clk_id) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:1186) -+ -+Syscall param clock_getres(res) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:1186) -+ -+Syscall param clock_getres(res) points to unaddressable byte(s) -+ ... -+ by 0x........: main (scalar.c:1186) -+ Address 0x........ is not stack'd, malloc'd or (recently) free'd -+ -+----------------------------------------------------- -+115:__NR_clock_nanosleep n/a -+----------------------------------------------------- -+----------------------------------------------------- -+131: __NR_tgkill n/a -+----------------------------------------------------- -+----------------------------------------------------- -+235: __NR_mbind n/a -+----------------------------------------------------- -+----------------------------------------------------- -+236: __NR_get_mempolicy n/a -+----------------------------------------------------- -+----------------------------------------------------- -+237: __NR_set_mempolicy n/a -+----------------------------------------------------- -+----------------------------------------------------- -+180: __NR_mq_open 4s 3m -+----------------------------------------------------- -+Syscall param mq_open(name) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:1230) -+ -+Syscall param mq_open(oflag) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:1230) -+ -+Syscall param mq_open(mode) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:1230) -+ -+Syscall param mq_open(attr) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:1230) -+ -+Syscall param mq_open(name) points to unaddressable byte(s) -+ ... -+ by 0x........: main (scalar.c:1230) -+ Address 0x........ is not stack'd, malloc'd or (recently) free'd -+ -+Syscall param mq_open(attr->mq_maxmsg) points to unaddressable byte(s) -+ ... -+ by 0x........: main (scalar.c:1230) -+ Address 0x........ is not stack'd, malloc'd or (recently) free'd -+ -+Syscall param mq_open(attr->mq_msgsize) points to unaddressable byte(s) -+ ... -+ by 0x........: main (scalar.c:1230) -+ Address 0x........ is not stack'd, malloc'd or (recently) free'd -+ -+----------------------------------------------------- -+181: __NR_mq_unlink 1s 1m -+----------------------------------------------------- -+Syscall param mq_unlink(name) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:1234) -+ -+Syscall param mq_unlink(name) points to unaddressable byte(s) -+ ... -+ by 0x........: main (scalar.c:1234) -+ Address 0x........ is not stack'd, malloc'd or (recently) free'd -+ -+----------------------------------------------------- -+182: __NR_mq_timedsend 5s 2m -+----------------------------------------------------- -+Syscall param mq_timedsend(mqdes) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:1238) -+ -+Syscall param mq_timedsend(msg_ptr) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:1238) -+ -+Syscall param mq_timedsend(msg_len) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:1238) -+ -+Syscall param mq_timedsend(msg_prio) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:1238) -+ -+Syscall param mq_timedsend(abs_timeout) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:1238) -+ -+Syscall param mq_timedsend(msg_ptr) points to unaddressable byte(s) -+ ... -+ by 0x........: main (scalar.c:1238) -+ Address 0x........ is not stack'd, malloc'd or (recently) free'd -+ -+Syscall param mq_timedsend(abs_timeout) points to unaddressable byte(s) -+ ... -+ by 0x........: main (scalar.c:1238) -+ Address 0x........ is not stack'd, malloc'd or (recently) free'd -+ -+----------------------------------------------------- -+183:__NR_mq_timedreceive 5s 3m -+----------------------------------------------------- -+Syscall param mq_timedreceive(mqdes) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:1242) -+ -+Syscall param mq_timedreceive(msg_ptr) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:1242) -+ -+Syscall param mq_timedreceive(msg_len) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:1242) -+ -+Syscall param mq_timedreceive(msg_prio) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:1242) -+ -+Syscall param mq_timedreceive(abs_timeout) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:1242) -+ -+Syscall param mq_timedreceive(msg_ptr) points to unaddressable byte(s) -+ ... -+ by 0x........: main (scalar.c:1242) -+ Address 0x........ is not stack'd, malloc'd or (recently) free'd -+ -+Syscall param mq_timedreceive(msg_prio) points to unaddressable byte(s) -+ ... -+ by 0x........: main (scalar.c:1242) -+ Address 0x........ is not stack'd, malloc'd or (recently) free'd -+ -+Syscall param mq_timedreceive(abs_timeout) points to unaddressable byte(s) -+ ... -+ by 0x........: main (scalar.c:1242) -+ Address 0x........ is not stack'd, malloc'd or (recently) free'd -+ -+----------------------------------------------------- -+184: __NR_mq_notify 2s 1m -+----------------------------------------------------- -+Syscall param mq_notify(mqdes) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:1246) -+ -+Syscall param mq_notify(notification) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:1246) -+ -+Syscall param mq_notify(notification) points to unaddressable byte(s) -+ ... -+ by 0x........: main (scalar.c:1246) -+ Address 0x........ is not stack'd, malloc'd or (recently) free'd -+ -+----------------------------------------------------- -+185: __NR_mq_getsetattr 3s 2m -+----------------------------------------------------- -+Syscall param mq_getsetattr(mqdes) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:1250) -+ -+Syscall param mq_getsetattr(mqstat) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:1250) -+ -+Syscall param mq_getsetattr(omqstat) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:1250) -+ -+Syscall param mq_getsetattr(mqstat->mq_flags) points to unaddressable byte(s) -+ ... -+ by 0x........: main (scalar.c:1250) -+ Address 0x........ is not stack'd, malloc'd or (recently) free'd -+ -+Syscall param mq_getsetattr(omqstat) points to unaddressable byte(s) -+ ... -+ by 0x........: main (scalar.c:1250) -+ Address 0x........ is not stack'd, malloc'd or (recently) free'd -+ -+----------------------------------------------------- -+104: __NR_kexec_load ni -+----------------------------------------------------- -+----------------------------------------------------- -+ 20: __NR_epoll_create1 1s 0m -+----------------------------------------------------- -+Syscall param epoll_create1(flags) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:1258) -+ -+----------------------------------------------------- -+270:__NR_process_vm_readv 6s 2m -+----------------------------------------------------- -+Syscall param process_vm_readv(pid) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:1262) -+ -+Syscall param process_vm_readv(lvec) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:1262) -+ -+Syscall param process_vm_readv(liovcnt) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:1262) -+ -+Syscall param process_vm_readv(rvec) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:1262) -+ -+Syscall param process_vm_readv(riovcnt) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:1262) -+ -+Syscall param process_vm_readv(flags) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:1262) -+ -+Syscall param process_vm_readv(lvec) points to unaddressable byte(s) -+ ... -+ by 0x........: main (scalar.c:1262) -+ Address 0x........ is not stack'd, malloc'd or (recently) free'd -+ -+Syscall param process_vm_readv(rvec) points to unaddressable byte(s) -+ ... -+ by 0x........: main (scalar.c:1262) -+ Address 0x........ is not stack'd, malloc'd or (recently) free'd -+ -+----------------------------------------------------- -+271:__NR_process_vm_writev 6s 2m -+----------------------------------------------------- -+Syscall param process_vm_writev(pid) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:1266) -+ -+Syscall param process_vm_writev(lvec) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:1266) -+ -+Syscall param process_vm_writev(liovcnt) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:1266) -+ -+Syscall param process_vm_writev(rvec) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:1266) -+ -+Syscall param process_vm_writev(riovcnt) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:1266) -+ -+Syscall param process_vm_writev(flags) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:1266) -+ -+Syscall param process_vm_writev(lvec) points to unaddressable byte(s) -+ ... -+ by 0x........: main (scalar.c:1266) -+ Address 0x........ is not stack'd, malloc'd or (recently) free'd -+ -+Syscall param process_vm_writev(rvec) points to unaddressable byte(s) -+ ... -+ by 0x........: main (scalar.c:1266) -+ Address 0x........ is not stack'd, malloc'd or (recently) free'd -+ -+----------------------------------------------------- -+9999: 9999 1e -+----------------------------------------------------- -+WARNING: unhandled arm64-linux syscall: 9999 -+You may be able to write your own handler. -+Read the file README_MISSING_SYSCALL_OR_IOCTL. -+Nevertheless we consider this a bug. Please report -+it at http://valgrind.org/support/bug_reports.html. -+----------------------------------------------------- -+ 93: __NR_exit 1s 0m -+----------------------------------------------------- -+Syscall param exit(status) contains uninitialised byte(s) -+ ... -+ by 0x........: main (scalar.c:1274) -+ -diff --git a/memcheck/tests/arm64-linux/scalar.vgtest b/memcheck/tests/arm64-linux/scalar.vgtest -new file mode 100644 -index 0000000..897d9e7 ---- /dev/null -+++ b/memcheck/tests/arm64-linux/scalar.vgtest -@@ -0,0 +1,3 @@ -+prog: scalar -+vgopts: -q --error-limit=no -+args: < scalar.c --- -2.5.0 - -From 4d8495affad088be6e8af0a5aa9c55ca7dfe3579 Mon Sep 17 00:00:00 2001 -From: mjw -Date: Wed, 9 Mar 2016 16:18:37 +0000 -Subject: [PATCH 3/3] Bug 359503 - Add missing syscalls for aarch64 (arm64) - -Enable more arm64 syscalls. ioprio_set, ioprio_get, preadv, pwritev, -vmsplice, splice, tee, waitid, clock_nanosleep and perf_event_open. -Reported and patch (mostly) by Marcin Juszkiewicz. - -git-svn-id: svn://svn.valgrind.org/valgrind/trunk@15826 a5019735-40e9-0310-863c-91ae7b9d1cf9 ---- - NEWS | 1 + - coregrind/m_syswrap/syswrap-arm64-linux.c | 31 +++++++++++++------------------ - 2 files changed, 14 insertions(+), 18 deletions(-) - -diff --git a/coregrind/m_syswrap/syswrap-arm64-linux.c b/coregrind/m_syswrap/syswrap-arm64-linux.c -index 8f4efa6..0b78f20 100644 ---- a/coregrind/m_syswrap/syswrap-arm64-linux.c -+++ b/coregrind/m_syswrap/syswrap-arm64-linux.c -@@ -885,7 +885,8 @@ static SyscallTableEntry syscall_main_table[] = { - LINX_(__NR_inotify_add_watch, sys_inotify_add_watch), // 27 - LINX_(__NR_inotify_rm_watch, sys_inotify_rm_watch), // 28 - LINXY(__NR_ioctl, sys_ioctl), // 29 -- -+ LINX_(__NR_ioprio_set, sys_ioprio_set), // 30 -+ LINX_(__NR_ioprio_get, sys_ioprio_get), // 31 - GENX_(__NR_flock, sys_flock), // 32 - LINX_(__NR_mknodat, sys_mknodat), // 33 - LINX_(__NR_mkdirat, sys_mkdirat), // 34 -@@ -922,12 +923,15 @@ static SyscallTableEntry syscall_main_table[] = { - GENX_(__NR_writev, sys_writev), // 66 - GENXY(__NR_pread64, sys_pread64), // 67 - GENX_(__NR_pwrite64, sys_pwrite64), // 68 -- -+ LINXY(__NR_preadv, sys_preadv), // 69 -+ LINX_(__NR_pwritev, sys_pwritev), // 70 - LINXY(__NR_sendfile, sys_sendfile), // 71 - LINXY(__NR_pselect6, sys_pselect6), // 72 - LINXY(__NR_ppoll, sys_ppoll), // 73 - LINXY(__NR_signalfd4, sys_signalfd4), // 74 -- -+ LINX_(__NR_vmsplice, sys_vmsplice), // 75 -+ LINX_(__NR_splice, sys_splice), // 76 -+ LINX_(__NR_tee, sys_tee), // 77 - LINX_(__NR_readlinkat, sys_readlinkat), // 78 - LINXY(__NR_newfstatat, sys_newfstatat), // 79 - GENXY(__NR_fstat, sys_newfstat), // 80 -@@ -945,7 +949,7 @@ static SyscallTableEntry syscall_main_table[] = { - LINX_(__NR_personality, sys_personality), // 92 - GENX_(__NR_exit, sys_exit), // 93 - LINX_(__NR_exit_group, sys_exit_group), // 94 -- -+ LINXY(__NR_waitid, sys_waitid), // 95 - LINX_(__NR_set_tid_address, sys_set_tid_address), // 96 - - LINXY(__NR_futex, sys_futex), // 98 -@@ -965,7 +969,7 @@ static SyscallTableEntry syscall_main_table[] = { - LINX_(__NR_clock_settime, sys_clock_settime), // 112 - LINXY(__NR_clock_gettime, sys_clock_gettime), // 113 - LINXY(__NR_clock_getres, sys_clock_getres), // 114 -- -+ LINXY(__NR_clock_nanosleep, sys_clock_nanosleep), // 115 - LINXY(__NR_syslog, sys_syslog), // 116 - - LINXY(__NR_sched_setparam, sys_sched_setparam), // 118 -@@ -1081,12 +1085,14 @@ static SyscallTableEntry syscall_main_table[] = { - LINX_(__NR_munlockall, sys_munlockall), // 231 - GENXY(__NR_mincore, sys_mincore), // 232 - GENX_(__NR_madvise, sys_madvise), // 233 -+ - LINX_(__NR_mbind, sys_mbind), // 235 - LINXY(__NR_get_mempolicy, sys_get_mempolicy), // 236 - LINX_(__NR_set_mempolicy, sys_set_mempolicy), // 237 - -- LINXY(__NR_recvmmsg, sys_recvmmsg), // 243 -+ LINXY(__NR_perf_event_open, sys_perf_event_open), // 241 - LINXY(__NR_accept4, sys_accept4), // 242 -+ LINXY(__NR_recvmmsg, sys_recvmmsg), // 243 - - GENXY(__NR_wait4, sys_wait4), // 260 - -@@ -1095,6 +1101,7 @@ static SyscallTableEntry syscall_main_table[] = { - LINXY(__NR_sendmmsg, sys_sendmmsg), // 269 - LINXY(__NR_process_vm_readv, sys_process_vm_readv), // 270 - LINX_(__NR_process_vm_writev, sys_process_vm_writev), // 271 -+ - LINXY(__NR_getrandom, sys_getrandom), // 278 - LINXY(__NR_memfd_create, sys_memfd_create), // 279 - -@@ -1308,7 +1315,6 @@ static SyscallTableEntry syscall_main_table[] = { - //ZZ LINX_(__NR_set_tid_address, sys_set_tid_address), // 258 - //ZZ - //ZZ LINXY(__NR_clock_getres, sys_clock_getres), // (timer_create+7) --//ZZ LINXY(__NR_clock_nanosleep, sys_clock_nanosleep),// (timer_create+8) */* - //ZZ GENXY(__NR_statfs64, sys_statfs64), // 268 - //ZZ GENXY(__NR_fstatfs64, sys_fstatfs64), // 269 - //ZZ -@@ -1320,8 +1326,6 @@ static SyscallTableEntry syscall_main_table[] = { - //ZZ LINXY(__NR_get_mempolicy, sys_get_mempolicy), // 275 ?/? - //ZZ LINX_(__NR_set_mempolicy, sys_set_mempolicy), // 276 ?/? - //ZZ --//ZZ LINXY(__NR_waitid, sys_waitid), // 280 --//ZZ - //ZZ LINX_(__NR_send, sys_send), - //ZZ LINXY(__NR_recv, sys_recv), - //ZZ LINXY(__NR_recvfrom, sys_recvfrom), // 292 -@@ -1329,9 +1333,6 @@ static SyscallTableEntry syscall_main_table[] = { - //ZZ LINXY(__NR_semctl, sys_semctl), // 300 - //ZZ - //ZZ LINX_(__NR_request_key, sys_request_key), // 287 --//ZZ // LINX_(__NR_ioprio_set, sys_ioprio_set), // 289 --//ZZ --//ZZ // LINX_(__NR_ioprio_get, sys_ioprio_get), // 290 - //ZZ LINX_(__NR_inotify_init, sys_inotify_init), // 291 - //ZZ // LINX_(__NR_migrate_pages, sys_migrate_pages), // 294 - //ZZ -@@ -1347,11 +1348,8 @@ static SyscallTableEntry syscall_main_table[] = { - //ZZ // LINX_(__NR_unshare, sys_unshare), // 310 - //ZZ LINX_(__NR_set_robust_list, sys_set_robust_list), // 311 - //ZZ LINXY(__NR_get_robust_list, sys_get_robust_list), // 312 --//ZZ // LINX_(__NR_splice, sys_ni_syscall), // 313 - //ZZ // LINX_(__NR_sync_file_range, sys_sync_file_range), // 314 - //ZZ --//ZZ // LINX_(__NR_tee, sys_ni_syscall), // 315 --//ZZ // LINX_(__NR_vmsplice, sys_ni_syscall), // 316 - //ZZ LINXY(__NR_move_pages, sys_move_pages), // 317 - //ZZ // LINX_(__NR_getcpu, sys_ni_syscall), // 318 - //ZZ -@@ -1374,10 +1372,7 @@ static SyscallTableEntry syscall_main_table[] = { - //ZZ - //ZZ LINXY(__NR_eventfd2, sys_eventfd2), // 356 - //ZZ LINXY(__NR_epoll_create1, sys_epoll_create1), // 357 --//ZZ LINXY(__NR_preadv, sys_preadv), // 361 --//ZZ LINX_(__NR_pwritev, sys_pwritev), // 362 - //ZZ LINXY(__NR_rt_tgsigqueueinfo, sys_rt_tgsigqueueinfo),// 363 --//ZZ LINXY(__NR_perf_event_open, sys_perf_event_open), // 364 - //ZZ - //ZZ LINXY(__NR_name_to_handle_at, sys_name_to_handle_at),// 370 - //ZZ LINXY(__NR_open_by_handle_at, sys_open_by_handle_at),// 371 --- -2.5.0 - -diff -rNu valgrind-3.11.0.orig/configure valgrind-3.11.0/configure ---- valgrind-3.11.0.orig/configure 2016-03-09 20:26:02.075924599 +0100 -+++ valgrind-3.11.0/configure 2016-03-09 20:49:09.846378502 +0100 -@@ -14095,7 +14095,7 @@ - #---------------------------------------------------------------------------- - - # Nb: VEX/Makefile is generated from Makefile.vex.in. --ac_config_files="$ac_config_files Makefile VEX/Makefile:Makefile.vex.in valgrind.spec valgrind.pc glibc-2.X.supp docs/Makefile tests/Makefile tests/vg_regtest perf/Makefile perf/vg_perf gdbserver_tests/Makefile gdbserver_tests/solaris/Makefile include/Makefile auxprogs/Makefile mpi/Makefile coregrind/Makefile memcheck/Makefile memcheck/tests/Makefile memcheck/tests/common/Makefile memcheck/tests/amd64/Makefile memcheck/tests/x86/Makefile memcheck/tests/linux/Makefile memcheck/tests/darwin/Makefile memcheck/tests/solaris/Makefile memcheck/tests/amd64-linux/Makefile memcheck/tests/x86-linux/Makefile memcheck/tests/amd64-solaris/Makefile memcheck/tests/x86-solaris/Makefile memcheck/tests/ppc32/Makefile memcheck/tests/ppc64/Makefile memcheck/tests/s390x/Makefile memcheck/tests/vbit-test/Makefile cachegrind/Makefile cachegrind/tests/Makefile cachegrind/tests/x86/Makefile cachegrind/cg_annotate cachegrind/cg_diff callgrind/Makefile callgrind/callgrind_annotate callgrind/callgrind_control callgrind/tests/Makefile helgrind/Makefile helgrind/tests/Makefile massif/Makefile massif/tests/Makefile massif/ms_print lackey/Makefile lackey/tests/Makefile none/Makefile none/tests/Makefile none/tests/scripts/Makefile none/tests/amd64/Makefile none/tests/ppc32/Makefile none/tests/ppc64/Makefile none/tests/x86/Makefile none/tests/arm/Makefile none/tests/arm64/Makefile none/tests/s390x/Makefile none/tests/mips32/Makefile none/tests/mips64/Makefile none/tests/tilegx/Makefile none/tests/linux/Makefile none/tests/darwin/Makefile none/tests/solaris/Makefile none/tests/amd64-linux/Makefile none/tests/x86-linux/Makefile none/tests/amd64-darwin/Makefile none/tests/x86-darwin/Makefile none/tests/amd64-solaris/Makefile none/tests/x86-solaris/Makefile exp-sgcheck/Makefile exp-sgcheck/tests/Makefile drd/Makefile drd/scripts/download-and-build-splash2 drd/tests/Makefile exp-bbv/Makefile exp-bbv/tests/Makefile exp-bbv/tests/x86/Makefile exp-bbv/tests/x86-linux/Makefile exp-bbv/tests/amd64-linux/Makefile exp-bbv/tests/ppc32-linux/Makefile exp-bbv/tests/arm-linux/Makefile exp-dhat/Makefile exp-dhat/tests/Makefile shared/Makefile solaris/Makefile" -+ac_config_files="$ac_config_files Makefile VEX/Makefile:Makefile.vex.in valgrind.spec valgrind.pc glibc-2.X.supp docs/Makefile tests/Makefile tests/vg_regtest perf/Makefile perf/vg_perf gdbserver_tests/Makefile gdbserver_tests/solaris/Makefile include/Makefile auxprogs/Makefile mpi/Makefile coregrind/Makefile memcheck/Makefile memcheck/tests/Makefile memcheck/tests/common/Makefile memcheck/tests/amd64/Makefile memcheck/tests/x86/Makefile memcheck/tests/linux/Makefile memcheck/tests/darwin/Makefile memcheck/tests/solaris/Makefile memcheck/tests/amd64-linux/Makefile memcheck/tests/arm64-linux/Makefile memcheck/tests/x86-linux/Makefile memcheck/tests/amd64-solaris/Makefile memcheck/tests/x86-solaris/Makefile memcheck/tests/ppc32/Makefile memcheck/tests/ppc64/Makefile memcheck/tests/s390x/Makefile memcheck/tests/vbit-test/Makefile cachegrind/Makefile cachegrind/tests/Makefile cachegrind/tests/x86/Makefile cachegrind/cg_annotate cachegrind/cg_diff callgrind/Makefile callgrind/callgrind_annotate callgrind/callgrind_control callgrind/tests/Makefile helgrind/Makefile helgrind/tests/Makefile massif/Makefile massif/tests/Makefile massif/ms_print lackey/Makefile lackey/tests/Makefile none/Makefile none/tests/Makefile none/tests/scripts/Makefile none/tests/amd64/Makefile none/tests/ppc32/Makefile none/tests/ppc64/Makefile none/tests/x86/Makefile none/tests/arm/Makefile none/tests/arm64/Makefile none/tests/s390x/Makefile none/tests/mips32/Makefile none/tests/mips64/Makefile none/tests/tilegx/Makefile none/tests/linux/Makefile none/tests/darwin/Makefile none/tests/solaris/Makefile none/tests/amd64-linux/Makefile none/tests/x86-linux/Makefile none/tests/amd64-darwin/Makefile none/tests/x86-darwin/Makefile none/tests/amd64-solaris/Makefile none/tests/x86-solaris/Makefile exp-sgcheck/Makefile exp-sgcheck/tests/Makefile drd/Makefile drd/scripts/download-and-build-splash2 drd/tests/Makefile exp-bbv/Makefile exp-bbv/tests/Makefile exp-bbv/tests/x86/Makefile exp-bbv/tests/x86-linux/Makefile exp-bbv/tests/amd64-linux/Makefile exp-bbv/tests/ppc32-linux/Makefile exp-bbv/tests/arm-linux/Makefile exp-dhat/Makefile exp-dhat/tests/Makefile shared/Makefile solaris/Makefile" - - ac_config_files="$ac_config_files coregrind/link_tool_exe_linux" - -@@ -15379,6 +15379,7 @@ - "memcheck/tests/darwin/Makefile") CONFIG_FILES="$CONFIG_FILES memcheck/tests/darwin/Makefile" ;; - "memcheck/tests/solaris/Makefile") CONFIG_FILES="$CONFIG_FILES memcheck/tests/solaris/Makefile" ;; - "memcheck/tests/amd64-linux/Makefile") CONFIG_FILES="$CONFIG_FILES memcheck/tests/amd64-linux/Makefile" ;; -+ "memcheck/tests/arm64-linux/Makefile") CONFIG_FILES="$CONFIG_FILES memcheck/tests/arm64-linux/Makefile" ;; - "memcheck/tests/x86-linux/Makefile") CONFIG_FILES="$CONFIG_FILES memcheck/tests/x86-linux/Makefile" ;; - "memcheck/tests/amd64-solaris/Makefile") CONFIG_FILES="$CONFIG_FILES memcheck/tests/amd64-solaris/Makefile" ;; - "memcheck/tests/x86-solaris/Makefile") CONFIG_FILES="$CONFIG_FILES memcheck/tests/x86-solaris/Makefile" ;; -diff -rNu valgrind-3.11.0.orig/memcheck/tests/arm64-linux/Makefile.in valgrind-3.11.0/memcheck/tests/arm64-linux/Makefile.in ---- valgrind-3.11.0.orig/memcheck/tests/arm64-linux/Makefile.in 1970-01-01 01:00:00.000000000 +0100 -+++ valgrind-3.11.0/memcheck/tests/arm64-linux/Makefile.in 2016-03-09 20:49:07.190390855 +0100 -@@ -0,0 +1,912 @@ -+# Makefile.in generated by automake 1.14.1 from Makefile.am. -+# @configure_input@ -+ -+# Copyright (C) 1994-2013 Free Software Foundation, Inc. -+ -+# This Makefile.in is free software; the Free Software Foundation -+# gives unlimited permission to copy and/or distribute it, -+# with or without modifications, as long as this notice is preserved. -+ -+# This program is distributed in the hope that it will be useful, -+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without -+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A -+# PARTICULAR PURPOSE. -+ -+@SET_MAKE@ -+ -+# This file is used for tool tests, and also in perf/Makefile.am. -+ -+# This file should be included (directly or indirectly) by every -+# Makefile.am that builds programs. And also the top-level Makefile.am. -+ -+#---------------------------------------------------------------------------- -+# Global stuff -+#---------------------------------------------------------------------------- -+ -+ -+VPATH = @srcdir@ -+am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' -+am__make_running_with_option = \ -+ case $${target_option-} in \ -+ ?) ;; \ -+ *) echo "am__make_running_with_option: internal error: invalid" \ -+ "target option '$${target_option-}' specified" >&2; \ -+ exit 1;; \ -+ esac; \ -+ has_opt=no; \ -+ sane_makeflags=$$MAKEFLAGS; \ -+ if $(am__is_gnu_make); then \ -+ sane_makeflags=$$MFLAGS; \ -+ else \ -+ case $$MAKEFLAGS in \ -+ *\\[\ \ ]*) \ -+ bs=\\; \ -+ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ -+ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ -+ esac; \ -+ fi; \ -+ skip_next=no; \ -+ strip_trailopt () \ -+ { \ -+ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ -+ }; \ -+ for flg in $$sane_makeflags; do \ -+ test $$skip_next = yes && { skip_next=no; continue; }; \ -+ case $$flg in \ -+ *=*|--*) continue;; \ -+ -*I) strip_trailopt 'I'; skip_next=yes;; \ -+ -*I?*) strip_trailopt 'I';; \ -+ -*O) strip_trailopt 'O'; skip_next=yes;; \ -+ -*O?*) strip_trailopt 'O';; \ -+ -*l) strip_trailopt 'l'; skip_next=yes;; \ -+ -*l?*) strip_trailopt 'l';; \ -+ -[dEDm]) skip_next=yes;; \ -+ -[JT]) skip_next=yes;; \ -+ esac; \ -+ case $$flg in \ -+ *$$target_option*) has_opt=yes; break;; \ -+ esac; \ -+ done; \ -+ test $$has_opt = yes -+am__make_dryrun = (target_option=n; $(am__make_running_with_option)) -+am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) -+pkgdatadir = $(datadir)/@PACKAGE@ -+pkgincludedir = $(includedir)/@PACKAGE@ -+pkglibdir = $(libdir)/@PACKAGE@ -+pkglibexecdir = $(libexecdir)/@PACKAGE@ -+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd -+install_sh_DATA = $(install_sh) -c -m 644 -+install_sh_PROGRAM = $(install_sh) -c -+install_sh_SCRIPT = $(install_sh) -c -+INSTALL_HEADER = $(INSTALL_DATA) -+transform = $(program_transform_name) -+NORMAL_INSTALL = : -+PRE_INSTALL = : -+POST_INSTALL = : -+NORMAL_UNINSTALL = : -+PRE_UNINSTALL = : -+POST_UNINSTALL = : -+build_triplet = @build@ -+host_triplet = @host@ -+DIST_COMMON = $(top_srcdir)/Makefile.tool-tests.am \ -+ $(top_srcdir)/Makefile.all.am $(srcdir)/Makefile.in \ -+ $(srcdir)/Makefile.am $(dist_noinst_SCRIPTS) \ -+ $(top_srcdir)/depcomp $(noinst_HEADERS) -+@COMPILER_IS_CLANG_TRUE@am__append_1 = -Wno-cast-align -Wno-self-assign \ -+@COMPILER_IS_CLANG_TRUE@ -Wno-tautological-compare -+ -+@SOLARIS_XPG_SYMBOLS_PRESENT_TRUE@am__append_2 = -Wl,-M,$(top_srcdir)/solaris/vgpreload-solaris.mapfile -+ -+# The Android toolchain includes all kinds of stdlib helpers present in -+# bionic which is bad because we are not linking with it and the Android -+# linker will panic. -+@VGCONF_PLATVARIANT_IS_ANDROID_TRUE@am__append_3 = -nostdlib -+@VGCONF_HAVE_PLATFORM_SEC_TRUE@am__append_4 = -DVGA_SEC_@VGCONF_ARCH_SEC@=1 \ -+@VGCONF_HAVE_PLATFORM_SEC_TRUE@ -DVGP_SEC_@VGCONF_ARCH_PRI@_@VGCONF_OS@=1 -+ -+ -+# Make sure that all test programs have threaded errno. -+@VGCONF_OS_IS_SOLARIS_TRUE@am__append_5 = -D_REENTRANT -+@COMPILER_IS_CLANG_TRUE@am__append_6 = -Wno-format-extra-args \ -+@COMPILER_IS_CLANG_TRUE@ -Wno-literal-range \ -+@COMPILER_IS_CLANG_TRUE@ -Wno-tautological-constant-out-of-range-compare \ -+@COMPILER_IS_CLANG_TRUE@ -Wno-self-assign -Wno-string-plus-int \ -+@COMPILER_IS_CLANG_TRUE@ -Wno-uninitialized -Wno-unused-value # \ -+@COMPILER_IS_CLANG_TRUE@ clang 3.0.0 -+@COMPILER_IS_CLANG_TRUE@am__append_7 = -Wno-unused-private-field # drd/tests/tsan_unittest.cpp -+check_PROGRAMS = scalar$(EXEEXT) -+subdir = memcheck/tests/arm64-linux -+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -+am__aclocal_m4_deps = $(top_srcdir)/configure.ac -+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ -+ $(ACLOCAL_M4) -+mkinstalldirs = $(install_sh) -d -+CONFIG_HEADER = $(top_builddir)/config.h -+CONFIG_CLEAN_FILES = -+CONFIG_CLEAN_VPATH_FILES = -+scalar_SOURCES = scalar.c -+scalar_OBJECTS = scalar.$(OBJEXT) -+scalar_LDADD = $(LDADD) -+SCRIPTS = $(dist_noinst_SCRIPTS) -+AM_V_P = $(am__v_P_@AM_V@) -+am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) -+am__v_P_0 = false -+am__v_P_1 = : -+AM_V_GEN = $(am__v_GEN_@AM_V@) -+am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) -+am__v_GEN_0 = @echo " GEN " $@; -+am__v_GEN_1 = -+AM_V_at = $(am__v_at_@AM_V@) -+am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) -+am__v_at_0 = @ -+am__v_at_1 = -+DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) -+depcomp = $(SHELL) $(top_srcdir)/depcomp -+am__depfiles_maybe = depfiles -+am__mv = mv -f -+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ -+ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -+AM_V_CC = $(am__v_CC_@AM_V@) -+am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) -+am__v_CC_0 = @echo " CC " $@; -+am__v_CC_1 = -+CCLD = $(CC) -+LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ -+AM_V_CCLD = $(am__v_CCLD_@AM_V@) -+am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) -+am__v_CCLD_0 = @echo " CCLD " $@; -+am__v_CCLD_1 = -+SOURCES = scalar.c -+DIST_SOURCES = scalar.c -+am__can_run_installinfo = \ -+ case $$AM_UPDATE_INFO_DIR in \ -+ n|no|NO) false;; \ -+ *) (install-info --version) >/dev/null 2>&1;; \ -+ esac -+HEADERS = $(noinst_HEADERS) -+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) -+# Read a list of newline-separated strings from the standard input, -+# and print each of them once, without duplicates. Input order is -+# *not* preserved. -+am__uniquify_input = $(AWK) '\ -+ BEGIN { nonempty = 0; } \ -+ { items[$$0] = 1; nonempty = 1; } \ -+ END { if (nonempty) { for (i in items) print i; }; } \ -+' -+# Make sure the list of sources is unique. This is necessary because, -+# e.g., the same source file might be shared among _SOURCES variables -+# for different programs/libraries. -+am__define_uniq_tagged_files = \ -+ list='$(am__tagged_files)'; \ -+ unique=`for i in $$list; do \ -+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ -+ done | $(am__uniquify_input)` -+ETAGS = etags -+CTAGS = ctags -+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) -+ACLOCAL = @ACLOCAL@ -+AMTAR = @AMTAR@ -+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ -+AR = @AR@ -+AUTOCONF = @AUTOCONF@ -+AUTOHEADER = @AUTOHEADER@ -+AUTOMAKE = @AUTOMAKE@ -+AWK = @AWK@ -+BOOST_CFLAGS = @BOOST_CFLAGS@ -+BOOST_LIBS = @BOOST_LIBS@ -+CC = @CC@ -+CCAS = @CCAS@ -+CCASDEPMODE = @CCASDEPMODE@ -+CCASFLAGS = @CCASFLAGS@ -+CCDEPMODE = @CCDEPMODE@ -+CFLAGS = @CFLAGS@ -+CFLAGS_MPI = @CFLAGS_MPI@ -+CPP = @CPP@ -+CPPFLAGS = @CPPFLAGS@ -+CXX = @CXX@ -+CXXDEPMODE = @CXXDEPMODE@ -+CXXFLAGS = @CXXFLAGS@ -+CYGPATH_W = @CYGPATH_W@ -+DEFAULT_SUPP = @DEFAULT_SUPP@ -+DEFS = @DEFS@ -+DEPDIR = @DEPDIR@ -+DIFF = @DIFF@ -+DIS_PATH = @DIS_PATH@ -+ECHO_C = @ECHO_C@ -+ECHO_N = @ECHO_N@ -+ECHO_T = @ECHO_T@ -+EGREP = @EGREP@ -+EXEEXT = @EXEEXT@ -+FLAG_FNO_IPA_ICF = @FLAG_FNO_IPA_ICF@ -+FLAG_FNO_STACK_PROTECTOR = @FLAG_FNO_STACK_PROTECTOR@ -+FLAG_FSANITIZE = @FLAG_FSANITIZE@ -+FLAG_M32 = @FLAG_M32@ -+FLAG_M64 = @FLAG_M64@ -+FLAG_MIPS32 = @FLAG_MIPS32@ -+FLAG_MIPS64 = @FLAG_MIPS64@ -+FLAG_MLONG_DOUBLE_128 = @FLAG_MLONG_DOUBLE_128@ -+FLAG_MMMX = @FLAG_MMMX@ -+FLAG_MSSE = @FLAG_MSSE@ -+FLAG_NO_BUILD_ID = @FLAG_NO_BUILD_ID@ -+FLAG_OCTEON = @FLAG_OCTEON@ -+FLAG_OCTEON2 = @FLAG_OCTEON2@ -+FLAG_T_TEXT = @FLAG_T_TEXT@ -+FLAG_UNLIMITED_INLINE_UNIT_GROWTH = @FLAG_UNLIMITED_INLINE_UNIT_GROWTH@ -+FLAG_W_CAST_ALIGN = @FLAG_W_CAST_ALIGN@ -+FLAG_W_CAST_QUAL = @FLAG_W_CAST_QUAL@ -+FLAG_W_EMPTY_BODY = @FLAG_W_EMPTY_BODY@ -+FLAG_W_EXTRA = @FLAG_W_EXTRA@ -+FLAG_W_FORMAT = @FLAG_W_FORMAT@ -+FLAG_W_FORMAT_SECURITY = @FLAG_W_FORMAT_SECURITY@ -+FLAG_W_FORMAT_SIGNEDNESS = @FLAG_W_FORMAT_SIGNEDNESS@ -+FLAG_W_IGNORED_QUALIFIERS = @FLAG_W_IGNORED_QUALIFIERS@ -+FLAG_W_MISSING_PARAMETER_TYPE = @FLAG_W_MISSING_PARAMETER_TYPE@ -+FLAG_W_NO_INFINITE_RECURSION = @FLAG_W_NO_INFINITE_RECURSION@ -+FLAG_W_NO_MEMSET_TRANSPOSED_ARGS = @FLAG_W_NO_MEMSET_TRANSPOSED_ARGS@ -+FLAG_W_NO_MISMATCHED_NEW_DELETE = @FLAG_W_NO_MISMATCHED_NEW_DELETE@ -+FLAG_W_NO_NONNULL = @FLAG_W_NO_NONNULL@ -+FLAG_W_NO_OVERFLOW = @FLAG_W_NO_OVERFLOW@ -+FLAG_W_NO_POINTER_SIGN = @FLAG_W_NO_POINTER_SIGN@ -+FLAG_W_NO_STATIC_LOCAL_IN_INLINE = @FLAG_W_NO_STATIC_LOCAL_IN_INLINE@ -+FLAG_W_NO_UNINITIALIZED = @FLAG_W_NO_UNINITIALIZED@ -+FLAG_W_NO_UNUSED_FUNCTION = @FLAG_W_NO_UNUSED_FUNCTION@ -+FLAG_W_OLD_STYLE_DECLARATION = @FLAG_W_OLD_STYLE_DECLARATION@ -+FLAG_W_WRITE_STRINGS = @FLAG_W_WRITE_STRINGS@ -+GDB = @GDB@ -+GLIBC_VERSION = @GLIBC_VERSION@ -+GREP = @GREP@ -+HWCAP_HAS_ALTIVEC = @HWCAP_HAS_ALTIVEC@ -+HWCAP_HAS_DFP = @HWCAP_HAS_DFP@ -+HWCAP_HAS_HTM = @HWCAP_HAS_HTM@ -+HWCAP_HAS_ISA_2_05 = @HWCAP_HAS_ISA_2_05@ -+HWCAP_HAS_ISA_2_06 = @HWCAP_HAS_ISA_2_06@ -+HWCAP_HAS_ISA_2_07 = @HWCAP_HAS_ISA_2_07@ -+HWCAP_HAS_VSX = @HWCAP_HAS_VSX@ -+INSTALL = @INSTALL@ -+INSTALL_DATA = @INSTALL_DATA@ -+INSTALL_PROGRAM = @INSTALL_PROGRAM@ -+INSTALL_SCRIPT = @INSTALL_SCRIPT@ -+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ -+LDFLAGS = @LDFLAGS@ -+LDFLAGS_MPI = @LDFLAGS_MPI@ -+LIBOBJS = @LIBOBJS@ -+LIBS = @LIBS@ -+LIB_UBSAN = @LIB_UBSAN@ -+LN_S = @LN_S@ -+LTLIBOBJS = @LTLIBOBJS@ -+MAINT = @MAINT@ -+MAKEINFO = @MAKEINFO@ -+MKDIR_P = @MKDIR_P@ -+MPI_CC = @MPI_CC@ -+OBJEXT = @OBJEXT@ -+PACKAGE = @PACKAGE@ -+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ -+PACKAGE_NAME = @PACKAGE_NAME@ -+PACKAGE_STRING = @PACKAGE_STRING@ -+PACKAGE_TARNAME = @PACKAGE_TARNAME@ -+PACKAGE_URL = @PACKAGE_URL@ -+PACKAGE_VERSION = @PACKAGE_VERSION@ -+PATH_SEPARATOR = @PATH_SEPARATOR@ -+PERL = @PERL@ -+PREFERRED_STACK_BOUNDARY_2 = @PREFERRED_STACK_BOUNDARY_2@ -+RANLIB = @RANLIB@ -+SED = @SED@ -+SET_MAKE = @SET_MAKE@ -+SHELL = @SHELL@ -+STRIP = @STRIP@ -+VALT_LOAD_ADDRESS_PRI = @VALT_LOAD_ADDRESS_PRI@ -+VALT_LOAD_ADDRESS_SEC = @VALT_LOAD_ADDRESS_SEC@ -+VERSION = @VERSION@ -+VGCONF_ARCH_PRI = @VGCONF_ARCH_PRI@ -+VGCONF_ARCH_SEC = @VGCONF_ARCH_SEC@ -+VGCONF_OS = @VGCONF_OS@ -+VGCONF_PLATFORM_PRI_CAPS = @VGCONF_PLATFORM_PRI_CAPS@ -+VGCONF_PLATFORM_SEC_CAPS = @VGCONF_PLATFORM_SEC_CAPS@ -+VGCONF_PLATVARIANT = @VGCONF_PLATVARIANT@ -+VG_TMPDIR = @VG_TMPDIR@ -+abs_builddir = @abs_builddir@ -+abs_srcdir = @abs_srcdir@ -+abs_top_builddir = @abs_top_builddir@ -+abs_top_srcdir = @abs_top_srcdir@ -+ac_ct_CC = @ac_ct_CC@ -+ac_ct_CXX = @ac_ct_CXX@ -+am__include = @am__include@ -+am__leading_dot = @am__leading_dot@ -+am__quote = @am__quote@ -+am__tar = @am__tar@ -+am__untar = @am__untar@ -+bindir = @bindir@ -+build = @build@ -+build_alias = @build_alias@ -+build_cpu = @build_cpu@ -+build_os = @build_os@ -+build_vendor = @build_vendor@ -+builddir = @builddir@ -+datadir = @datadir@ -+datarootdir = @datarootdir@ -+docdir = @docdir@ -+dvidir = @dvidir@ -+exec_prefix = @exec_prefix@ -+host = @host@ -+host_alias = @host_alias@ -+host_cpu = @host_cpu@ -+host_os = @host_os@ -+host_vendor = @host_vendor@ -+htmldir = @htmldir@ -+includedir = @includedir@ -+infodir = @infodir@ -+install_sh = @install_sh@ -+libdir = @libdir@ -+libexecdir = @libexecdir@ -+localedir = @localedir@ -+localstatedir = @localstatedir@ -+mandir = @mandir@ -+mkdir_p = @mkdir_p@ -+oldincludedir = @oldincludedir@ -+pdfdir = @pdfdir@ -+prefix = @prefix@ -+program_transform_name = @program_transform_name@ -+psdir = @psdir@ -+sbindir = @sbindir@ -+sharedstatedir = @sharedstatedir@ -+srcdir = @srcdir@ -+sysconfdir = @sysconfdir@ -+target_alias = @target_alias@ -+top_build_prefix = @top_build_prefix@ -+top_builddir = @top_builddir@ -+top_srcdir = @top_srcdir@ -+inplacedir = $(top_builddir)/.in_place -+ -+#---------------------------------------------------------------------------- -+# Flags -+#---------------------------------------------------------------------------- -+ -+# Baseline flags for all compilations. Aim here is to maximise -+# performance and get whatever useful warnings we can out of gcc. -+# -fno-builtin is important for defeating LLVM's idiom recognition -+# that somehow causes VG_(memset) to get into infinite recursion. -+AM_CFLAGS_BASE = -O2 -g -std=gnu99 -Wall -Wmissing-prototypes -Wshadow \ -+ -Wpointer-arith -Wstrict-prototypes -Wmissing-declarations \ -+ @FLAG_W_CAST_ALIGN@ @FLAG_W_CAST_QUAL@ @FLAG_W_WRITE_STRINGS@ \ -+ @FLAG_W_EMPTY_BODY@ @FLAG_W_FORMAT@ @FLAG_W_FORMAT_SIGNEDNESS@ \ -+ @FLAG_W_FORMAT_SECURITY@ @FLAG_W_IGNORED_QUALIFIERS@ \ -+ @FLAG_W_MISSING_PARAMETER_TYPE@ @FLAG_W_OLD_STYLE_DECLARATION@ \ -+ @FLAG_FNO_STACK_PROTECTOR@ @FLAG_FSANITIZE@ \ -+ -fno-strict-aliasing -fno-builtin $(am__append_1) -+@VGCONF_OS_IS_DARWIN_FALSE@AM_CFLAGS_PSO_BASE = -O -g -fno-omit-frame-pointer -fno-strict-aliasing \ -+@VGCONF_OS_IS_DARWIN_FALSE@ -fpic -fno-builtin @FLAG_FNO_IPA_ICF@ -+ -+ -+# These flags are used for building the preload shared objects (PSOs). -+# The aim is to give reasonable performance but also to have good -+# stack traces, since users often see stack traces extending -+# into (and through) the preloads. Also, we must use any -+# -mpreferred-stack-boundary flag to build the preload shared -+# objects, since that risks misaligning the client's stack and -+# results in segfaults like (eg) #324050. -+@VGCONF_OS_IS_DARWIN_TRUE@AM_CFLAGS_PSO_BASE = -dynamic \ -+@VGCONF_OS_IS_DARWIN_TRUE@ -O -g -fno-omit-frame-pointer -fno-strict-aliasing \ -+@VGCONF_OS_IS_DARWIN_TRUE@ -fpic -fPIC -fno-builtin @FLAG_FNO_IPA_ICF@ -+ -+ -+# Flags for specific targets. -+# -+# Nb: the AM_CPPFLAGS_* values are suitable for building tools and auxprogs. -+# For building the core, coregrind/Makefile.am files add some extra things. -+AM_CPPFLAGS_@VGCONF_PLATFORM_PRI_CAPS@ = \ -+ -I$(top_srcdir) \ -+ -I$(top_srcdir)/include \ -+ -I$(top_srcdir)/VEX/pub \ -+ -I$(top_builddir)/VEX/pub \ -+ -DVGA_@VGCONF_ARCH_PRI@=1 \ -+ -DVGO_@VGCONF_OS@=1 \ -+ -DVGP_@VGCONF_ARCH_PRI@_@VGCONF_OS@=1 \ -+ -DVGPV_@VGCONF_ARCH_PRI@_@VGCONF_OS@_@VGCONF_PLATVARIANT@=1 -+ -+@VGCONF_HAVE_PLATFORM_SEC_TRUE@AM_CPPFLAGS_@VGCONF_PLATFORM_SEC_CAPS@ = \ -+@VGCONF_HAVE_PLATFORM_SEC_TRUE@ -I$(top_srcdir) \ -+@VGCONF_HAVE_PLATFORM_SEC_TRUE@ -I$(top_srcdir)/include \ -+@VGCONF_HAVE_PLATFORM_SEC_TRUE@ -I$(top_srcdir)/VEX/pub \ -+@VGCONF_HAVE_PLATFORM_SEC_TRUE@ -I$(top_builddir)/VEX/pub \ -+@VGCONF_HAVE_PLATFORM_SEC_TRUE@ -DVGA_@VGCONF_ARCH_SEC@=1 \ -+@VGCONF_HAVE_PLATFORM_SEC_TRUE@ -DVGO_@VGCONF_OS@=1 \ -+@VGCONF_HAVE_PLATFORM_SEC_TRUE@ -DVGP_@VGCONF_ARCH_SEC@_@VGCONF_OS@=1 \ -+@VGCONF_HAVE_PLATFORM_SEC_TRUE@ -DVGPV_@VGCONF_ARCH_SEC@_@VGCONF_OS@_@VGCONF_PLATVARIANT@=1 -+ -+AM_FLAG_M3264_X86_LINUX = @FLAG_M32@ -+AM_CFLAGS_X86_LINUX = @FLAG_M32@ @PREFERRED_STACK_BOUNDARY_2@ \ -+ $(AM_CFLAGS_BASE) -fomit-frame-pointer -+ -+AM_CFLAGS_PSO_X86_LINUX = @FLAG_M32@ $(AM_CFLAGS_BASE) $(AM_CFLAGS_PSO_BASE) -+AM_CCASFLAGS_X86_LINUX = @FLAG_M32@ -g -+AM_FLAG_M3264_AMD64_LINUX = @FLAG_M64@ -+AM_CFLAGS_AMD64_LINUX = @FLAG_M64@ \ -+ $(AM_CFLAGS_BASE) -fomit-frame-pointer -+ -+AM_CFLAGS_PSO_AMD64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) $(AM_CFLAGS_PSO_BASE) -+AM_CCASFLAGS_AMD64_LINUX = @FLAG_M64@ -g -+AM_FLAG_M3264_PPC32_LINUX = @FLAG_M32@ -+AM_CFLAGS_PPC32_LINUX = @FLAG_M32@ $(AM_CFLAGS_BASE) -+AM_CFLAGS_PSO_PPC32_LINUX = @FLAG_M32@ $(AM_CFLAGS_BASE) $(AM_CFLAGS_PSO_BASE) -+AM_CCASFLAGS_PPC32_LINUX = @FLAG_M32@ -g -+AM_FLAG_M3264_PPC64BE_LINUX = @FLAG_M64@ -+AM_CFLAGS_PPC64BE_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) -+AM_CFLAGS_PSO_PPC64BE_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) $(AM_CFLAGS_PSO_BASE) -+AM_CCASFLAGS_PPC64BE_LINUX = @FLAG_M64@ -g -+AM_FLAG_M3264_PPC64LE_LINUX = @FLAG_M64@ -+AM_CFLAGS_PPC64LE_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) -+AM_CFLAGS_PSO_PPC64LE_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) $(AM_CFLAGS_PSO_BASE) -+AM_CCASFLAGS_PPC64LE_LINUX = @FLAG_M64@ -g -+AM_FLAG_M3264_ARM_LINUX = @FLAG_M32@ -+AM_CFLAGS_ARM_LINUX = @FLAG_M32@ \ -+ $(AM_CFLAGS_BASE) -marm -mcpu=cortex-a8 -+ -+AM_CFLAGS_PSO_ARM_LINUX = @FLAG_M32@ $(AM_CFLAGS_BASE) \ -+ -marm -mcpu=cortex-a8 $(AM_CFLAGS_PSO_BASE) -+ -+AM_CCASFLAGS_ARM_LINUX = @FLAG_M32@ \ -+ -marm -mcpu=cortex-a8 -g -+ -+AM_FLAG_M3264_ARM64_LINUX = @FLAG_M64@ -+AM_CFLAGS_ARM64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) -+AM_CFLAGS_PSO_ARM64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) $(AM_CFLAGS_PSO_BASE) -+AM_CCASFLAGS_ARM64_LINUX = @FLAG_M64@ -g -+AM_FLAG_M3264_X86_DARWIN = -arch i386 -+AM_CFLAGS_X86_DARWIN = $(WERROR) -arch i386 $(AM_CFLAGS_BASE) \ -+ -mmacosx-version-min=10.5 \ -+ -fno-stack-protector -fno-pic -fno-PIC -+ -+AM_CFLAGS_PSO_X86_DARWIN = $(AM_CFLAGS_X86_DARWIN) $(AM_CFLAGS_PSO_BASE) -+AM_CCASFLAGS_X86_DARWIN = -arch i386 -g -+AM_FLAG_M3264_AMD64_DARWIN = -arch x86_64 -+AM_CFLAGS_AMD64_DARWIN = $(WERROR) -arch x86_64 $(AM_CFLAGS_BASE) \ -+ -mmacosx-version-min=10.5 -fno-stack-protector -+ -+AM_CFLAGS_PSO_AMD64_DARWIN = $(AM_CFLAGS_AMD64_DARWIN) $(AM_CFLAGS_PSO_BASE) -+AM_CCASFLAGS_AMD64_DARWIN = -arch x86_64 -g -+AM_FLAG_M3264_S390X_LINUX = @FLAG_M64@ -+AM_CFLAGS_S390X_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) -fomit-frame-pointer -+AM_CFLAGS_PSO_S390X_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) $(AM_CFLAGS_PSO_BASE) -+AM_CCASFLAGS_S390X_LINUX = @FLAG_M64@ -g -mzarch -march=z900 -+AM_FLAG_M3264_MIPS32_LINUX = @FLAG_M32@ -+AM_CFLAGS_MIPS32_LINUX = @FLAG_M32@ $(AM_CFLAGS_BASE) @FLAG_MIPS32@ -+AM_CFLAGS_PSO_MIPS32_LINUX = @FLAG_M32@ $(AM_CFLAGS_BASE) @FLAG_MIPS32@ \ -+ $(AM_CFLAGS_PSO_BASE) -+ -+AM_CCASFLAGS_MIPS32_LINUX = @FLAG_M32@ -g @FLAG_MIPS32@ -+AM_FLAG_M3264_MIPS64_LINUX = @FLAG_M64@ -+AM_CFLAGS_MIPS64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) @FLAG_MIPS64@ -+AM_CFLAGS_PSO_MIPS64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) @FLAG_MIPS64@ \ -+ $(AM_CFLAGS_PSO_BASE) -+ -+AM_CCASFLAGS_MIPS64_LINUX = @FLAG_M64@ -g @FLAG_MIPS64@ -+AM_CFLAGS_TILEGX_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) -+AM_CFLAGS_PSO_TILEGX_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) $(AM_CFLAGS_PSO_BASE) -+AM_FLAG_M3264_X86_SOLARIS = @FLAG_M32@ -+AM_CFLAGS_X86_SOLARIS = @FLAG_M32@ @PREFERRED_STACK_BOUNDARY_2@ \ -+ $(AM_CFLAGS_BASE) -fomit-frame-pointer -+ -+AM_CFLAGS_PSO_X86_SOLARIS = @FLAG_M32@ $(AM_CFLAGS_BASE) $(AM_CFLAGS_PSO_BASE) -+AM_CCASFLAGS_X86_SOLARIS = @FLAG_M32@ -g -D_ASM -+AM_FLAG_M3264_AMD64_SOLARIS = @FLAG_M64@ -+AM_CFLAGS_AMD64_SOLARIS = @FLAG_M64@ \ -+ $(AM_CFLAGS_BASE) -fomit-frame-pointer -+ -+AM_CFLAGS_PSO_AMD64_SOLARIS = @FLAG_M64@ $(AM_CFLAGS_BASE) $(AM_CFLAGS_PSO_BASE) -+AM_CCASFLAGS_AMD64_SOLARIS = @FLAG_M64@ -g -D_ASM -+ -+# Flags for the primary target. These must be used to build the -+# regtests and performance tests. In fact, these must be used to -+# build anything which is built only once on a dual-arch build. -+# -+AM_FLAG_M3264_PRI = $(AM_FLAG_M3264_@VGCONF_PLATFORM_PRI_CAPS@) -+AM_CPPFLAGS_PRI = $(AM_CPPFLAGS_@VGCONF_PLATFORM_PRI_CAPS@) -+AM_CFLAGS_PRI = $(AM_CFLAGS_@VGCONF_PLATFORM_PRI_CAPS@) -+AM_CCASFLAGS_PRI = $(AM_CCASFLAGS_@VGCONF_PLATFORM_PRI_CAPS@) -+@VGCONF_HAVE_PLATFORM_SEC_FALSE@AM_FLAG_M3264_SEC = -+@VGCONF_HAVE_PLATFORM_SEC_TRUE@AM_FLAG_M3264_SEC = $(AM_FLAG_M3264_@VGCONF_PLATFORM_SEC_CAPS@) -+ -+# Baseline link flags for making vgpreload shared objects. -+# -+PRELOAD_LDFLAGS_COMMON_LINUX = -nodefaultlibs -shared \ -+ -Wl,-z,interpose,-z,initfirst $(am__append_3) -+PRELOAD_LDFLAGS_COMMON_DARWIN = -dynamic -dynamiclib -all_load -+PRELOAD_LDFLAGS_COMMON_SOLARIS = -nodefaultlibs -shared \ -+ -Wl,-z,interpose,-z,initfirst $(am__append_2) -+PRELOAD_LDFLAGS_X86_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ -+PRELOAD_LDFLAGS_AMD64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ -+PRELOAD_LDFLAGS_PPC32_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ -+PRELOAD_LDFLAGS_PPC64BE_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ -+PRELOAD_LDFLAGS_PPC64LE_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ -+PRELOAD_LDFLAGS_ARM_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ -+PRELOAD_LDFLAGS_ARM64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ -+PRELOAD_LDFLAGS_X86_DARWIN = $(PRELOAD_LDFLAGS_COMMON_DARWIN) -arch i386 -+PRELOAD_LDFLAGS_AMD64_DARWIN = $(PRELOAD_LDFLAGS_COMMON_DARWIN) -arch x86_64 -+PRELOAD_LDFLAGS_S390X_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ -+PRELOAD_LDFLAGS_MIPS32_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ -+PRELOAD_LDFLAGS_MIPS64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ -+PRELOAD_LDFLAGS_TILEGX_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ -+PRELOAD_LDFLAGS_X86_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M32@ -+PRELOAD_LDFLAGS_AMD64_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M64@ -+AM_CPPFLAGS = -I$(top_srcdir) -I$(top_srcdir)/include \ -+ -I$(top_srcdir)/coregrind -I$(top_builddir)/include \ -+ -I$(top_srcdir)/VEX/pub -I$(top_builddir)/VEX/pub \ -+ -DVGA_@VGCONF_ARCH_PRI@=1 -DVGO_@VGCONF_OS@=1 \ -+ -DVGP_@VGCONF_ARCH_PRI@_@VGCONF_OS@=1 \ -+ -DVGPV_@VGCONF_ARCH_PRI@_@VGCONF_OS@_@VGCONF_PLATVARIANT@=1 \ -+ $(am__append_4) -+ -+# Nb: Tools need to augment these flags with an arch-selection option, such -+# as $(AM_FLAG_M3264_PRI). -+AM_CFLAGS = -Winline -Wall -Wshadow -Wno-long-long -g \ -+ @FLAG_FNO_STACK_PROTECTOR@ $(am__append_5) $(am__append_6) \ -+ @FLAG_M64@ $(am__empty) -+AM_CXXFLAGS = -Winline -Wall -Wshadow -Wno-long-long -g \ -+ @FLAG_FNO_STACK_PROTECTOR@ $(am__append_7) @FLAG_M64@ -+# Include AM_CPPFLAGS in AM_CCASFLAGS to allow for older versions of -+# automake; see comments in Makefile.all.am for more detail. -+AM_CCASFLAGS = $(AM_CPPFLAGS) @FLAG_M64@ -+@VGCONF_OS_IS_DARWIN_TRUE@noinst_DSYMS = $(check_PROGRAMS) -+dist_noinst_SCRIPTS = \ -+ filter_stderr -+ -+noinst_HEADERS = scalar.h -+EXTRA_DIST = \ -+ scalar.stderr.exp scalar.vgtest -+ -+all: all-am -+ -+.SUFFIXES: -+.SUFFIXES: .c .o .obj -+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/Makefile.tool-tests.am $(top_srcdir)/Makefile.all.am $(am__configure_deps) -+ @for dep in $?; do \ -+ case '$(am__configure_deps)' in \ -+ *$$dep*) \ -+ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ -+ && { if test -f $@; then exit 0; else break; fi; }; \ -+ exit 1;; \ -+ esac; \ -+ done; \ -+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign memcheck/tests/arm64-linux/Makefile'; \ -+ $(am__cd) $(top_srcdir) && \ -+ $(AUTOMAKE) --foreign memcheck/tests/arm64-linux/Makefile -+.PRECIOUS: Makefile -+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status -+ @case '$?' in \ -+ *config.status*) \ -+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ -+ *) \ -+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ -+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ -+ esac; -+$(top_srcdir)/Makefile.tool-tests.am $(top_srcdir)/Makefile.all.am: -+ -+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) -+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -+ -+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) -+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) -+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -+$(am__aclocal_m4_deps): -+ -+clean-checkPROGRAMS: -+ -test -z "$(check_PROGRAMS)" || rm -f $(check_PROGRAMS) -+ -+scalar$(EXEEXT): $(scalar_OBJECTS) $(scalar_DEPENDENCIES) $(EXTRA_scalar_DEPENDENCIES) -+ @rm -f scalar$(EXEEXT) -+ $(AM_V_CCLD)$(LINK) $(scalar_OBJECTS) $(scalar_LDADD) $(LIBS) -+ -+mostlyclean-compile: -+ -rm -f *.$(OBJEXT) -+ -+distclean-compile: -+ -rm -f *.tab.c -+ -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/scalar.Po@am__quote@ -+ -+.c.o: -+@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ -+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ -+@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< -+ -+.c.obj: -+@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ -+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ -+@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` -+ -+ID: $(am__tagged_files) -+ $(am__define_uniq_tagged_files); mkid -fID $$unique -+tags: tags-am -+TAGS: tags -+ -+tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) -+ set x; \ -+ here=`pwd`; \ -+ $(am__define_uniq_tagged_files); \ -+ shift; \ -+ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ -+ test -n "$$unique" || unique=$$empty_fix; \ -+ if test $$# -gt 0; then \ -+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ -+ "$$@" $$unique; \ -+ else \ -+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ -+ $$unique; \ -+ fi; \ -+ fi -+ctags: ctags-am -+ -+CTAGS: ctags -+ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) -+ $(am__define_uniq_tagged_files); \ -+ test -z "$(CTAGS_ARGS)$$unique" \ -+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ -+ $$unique -+ -+GTAGS: -+ here=`$(am__cd) $(top_builddir) && pwd` \ -+ && $(am__cd) $(top_srcdir) \ -+ && gtags -i $(GTAGS_ARGS) "$$here" -+cscopelist: cscopelist-am -+ -+cscopelist-am: $(am__tagged_files) -+ list='$(am__tagged_files)'; \ -+ case "$(srcdir)" in \ -+ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ -+ *) sdir=$(subdir)/$(srcdir) ;; \ -+ esac; \ -+ for i in $$list; do \ -+ if test -f "$$i"; then \ -+ echo "$(subdir)/$$i"; \ -+ else \ -+ echo "$$sdir/$$i"; \ -+ fi; \ -+ done >> $(top_builddir)/cscope.files -+ -+distclean-tags: -+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags -+ -+distdir: $(DISTFILES) -+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ -+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ -+ list='$(DISTFILES)'; \ -+ dist_files=`for file in $$list; do echo $$file; done | \ -+ sed -e "s|^$$srcdirstrip/||;t" \ -+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ -+ case $$dist_files in \ -+ */*) $(MKDIR_P) `echo "$$dist_files" | \ -+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ -+ sort -u` ;; \ -+ esac; \ -+ for file in $$dist_files; do \ -+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ -+ if test -d $$d/$$file; then \ -+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ -+ if test -d "$(distdir)/$$file"; then \ -+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ -+ fi; \ -+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ -+ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ -+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ -+ fi; \ -+ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ -+ else \ -+ test -f "$(distdir)/$$file" \ -+ || cp -p $$d/$$file "$(distdir)/$$file" \ -+ || exit 1; \ -+ fi; \ -+ done -+check-am: all-am -+ $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS) -+ $(MAKE) $(AM_MAKEFLAGS) check-local -+check: check-am -+all-am: Makefile $(SCRIPTS) $(HEADERS) -+installdirs: -+install: install-am -+install-exec: install-exec-am -+install-data: install-data-am -+uninstall: uninstall-am -+ -+install-am: all-am -+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am -+ -+installcheck: installcheck-am -+install-strip: -+ if test -z '$(STRIP)'; then \ -+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ -+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ -+ install; \ -+ else \ -+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ -+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ -+ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ -+ fi -+mostlyclean-generic: -+ -+clean-generic: -+ -+distclean-generic: -+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -+ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) -+ -+maintainer-clean-generic: -+ @echo "This command is intended for maintainers to use" -+ @echo "it deletes files that may require special tools to rebuild." -+clean: clean-am -+ -+clean-am: clean-checkPROGRAMS clean-generic clean-local mostlyclean-am -+ -+distclean: distclean-am -+ -rm -rf ./$(DEPDIR) -+ -rm -f Makefile -+distclean-am: clean-am distclean-compile distclean-generic \ -+ distclean-tags -+ -+dvi: dvi-am -+ -+dvi-am: -+ -+html: html-am -+ -+html-am: -+ -+info: info-am -+ -+info-am: -+ -+install-data-am: -+ -+install-dvi: install-dvi-am -+ -+install-dvi-am: -+ -+install-exec-am: -+ -+install-html: install-html-am -+ -+install-html-am: -+ -+install-info: install-info-am -+ -+install-info-am: -+ -+install-man: -+ -+install-pdf: install-pdf-am -+ -+install-pdf-am: -+ -+install-ps: install-ps-am -+ -+install-ps-am: -+ -+installcheck-am: -+ -+maintainer-clean: maintainer-clean-am -+ -rm -rf ./$(DEPDIR) -+ -rm -f Makefile -+maintainer-clean-am: distclean-am maintainer-clean-generic -+ -+mostlyclean: mostlyclean-am -+ -+mostlyclean-am: mostlyclean-compile mostlyclean-generic -+ -+pdf: pdf-am -+ -+pdf-am: -+ -+ps: ps-am -+ -+ps-am: -+ -+uninstall-am: -+ -+.MAKE: check-am install-am install-strip -+ -+.PHONY: CTAGS GTAGS TAGS all all-am check check-am check-local clean \ -+ clean-checkPROGRAMS clean-generic clean-local cscopelist-am \ -+ ctags ctags-am distclean distclean-compile distclean-generic \ -+ distclean-tags distdir dvi dvi-am html html-am info info-am \ -+ install install-am install-data install-data-am install-dvi \ -+ install-dvi-am install-exec install-exec-am install-html \ -+ install-html-am install-info install-info-am install-man \ -+ install-pdf install-pdf-am install-ps install-ps-am \ -+ install-strip installcheck installcheck-am installdirs \ -+ maintainer-clean maintainer-clean-generic mostlyclean \ -+ mostlyclean-compile mostlyclean-generic pdf pdf-am ps ps-am \ -+ tags tags-am uninstall uninstall-am -+ -+ -+# This used to be required when Vex had a handwritten Makefile. It -+# shouldn't be needed any more, though. -+ -+#---------------------------------------------------------------------------- -+# noinst_PROGRAMS and noinst_DSYMS targets -+#---------------------------------------------------------------------------- -+ -+# On Darwin, for a program 'p', the DWARF debug info is stored in the -+# directory 'p.dSYM'. This must be generated after the executable is -+# created, with 'dsymutil p'. We could redefine LINK with a script that -+# executes 'dsymutil' after linking, but that's a pain. Instead we use this -+# hook so that every time "make check" is run, we subsequently invoke -+# 'dsymutil' on all the executables that lack a .dSYM directory, or that are -+# newer than their corresponding .dSYM directory. -+build-noinst_DSYMS: $(noinst_DSYMS) -+ for f in $(noinst_DSYMS); do \ -+ if [ ! -e $$f.dSYM -o $$f -nt $$f.dSYM ] ; then \ -+ echo "dsymutil $$f"; \ -+ dsymutil $$f; \ -+ fi; \ -+ done -+ -+# This is used by coregrind/Makefile.am and Makefile.tool.am for doing -+# "in-place" installs. It copies $(noinst_PROGRAMS) into $inplacedir. -+# It needs to be depended on by an 'all-local' rule. -+inplace-noinst_PROGRAMS: $(noinst_PROGRAMS) -+ mkdir -p $(inplacedir); \ -+ for f in $(noinst_PROGRAMS) ; do \ -+ rm -f $(inplacedir)/$$f; \ -+ ln -f -s ../$(subdir)/$$f $(inplacedir); \ -+ done -+ -+# Similar to inplace-noinst_PROGRAMS -+inplace-noinst_DSYMS: build-noinst_DSYMS -+ mkdir -p $(inplacedir); \ -+ for f in $(noinst_DSYMS); do \ -+ rm -f $(inplacedir)/$$f.dSYM; \ -+ ln -f -s ../$(subdir)/$$f.dSYM $(inplacedir); \ -+ done -+ -+# This is used by coregrind/Makefile.am and by /Makefile.am for doing -+# "make install". It copies $(noinst_PROGRAMS) into $prefix/lib/valgrind/. -+# It needs to be depended on by an 'install-exec-local' rule. -+install-noinst_PROGRAMS: $(noinst_PROGRAMS) -+ $(mkinstalldirs) $(DESTDIR)$(pkglibdir); \ -+ for f in $(noinst_PROGRAMS); do \ -+ $(INSTALL_PROGRAM) $$f $(DESTDIR)$(pkglibdir); \ -+ done -+ -+# This is used by coregrind/Makefile.am and by /Makefile.am for doing -+# "make uninstall". It removes $(noinst_PROGRAMS) from $prefix/lib/valgrind/. -+# It needs to be depended on by an 'uninstall-local' rule. -+uninstall-noinst_PROGRAMS: -+ for f in $(noinst_PROGRAMS); do \ -+ rm -f $(DESTDIR)$(pkglibdir)/$$f; \ -+ done -+ -+# Similar to install-noinst_PROGRAMS. -+# Nb: we don't use $(INSTALL_PROGRAM) here because it doesn't work with -+# directories. XXX: not sure whether the resulting permissions will be -+# correct when using 'cp -R'... -+install-noinst_DSYMS: build-noinst_DSYMS -+ $(mkinstalldirs) $(DESTDIR)$(pkglibdir); \ -+ for f in $(noinst_DSYMS); do \ -+ cp -R $$f.dSYM $(DESTDIR)$(pkglibdir); \ -+ done -+ -+# Similar to uninstall-noinst_PROGRAMS. -+uninstall-noinst_DSYMS: -+ for f in $(noinst_DSYMS); do \ -+ rm -f $(DESTDIR)$(pkglibdir)/$$f.dSYM; \ -+ done -+ -+# This needs to be depended on by a 'clean-local' rule. -+clean-noinst_DSYMS: -+ for f in $(noinst_DSYMS); do \ -+ rm -rf $$f.dSYM; \ -+ done -+ -+check-local: build-noinst_DSYMS -+ -+clean-local: clean-noinst_DSYMS -+ -+# Tell versions [3.59,3.63) of GNU make to not export all variables. -+# Otherwise a system limit (for SysV at least) may be exceeded. -+.NOEXPORT: -diff -rNu valgrind-3.11.0.orig/memcheck/tests/Makefile.in valgrind-3.11.0/memcheck/tests/Makefile.in ---- valgrind-3.11.0.orig/memcheck/tests/Makefile.in 2016-03-09 20:26:02.217923922 +0100 -+++ valgrind-3.11.0/memcheck/tests/Makefile.in 2016-03-09 20:49:06.995391762 +0100 -@@ -130,8 +130,9 @@ - # Platform-specific tests - @VGCONF_PLATFORMS_INCLUDE_X86_LINUX_TRUE@am__append_16 = x86-linux - @VGCONF_PLATFORMS_INCLUDE_AMD64_LINUX_TRUE@am__append_17 = amd64-linux --@VGCONF_PLATFORMS_INCLUDE_X86_SOLARIS_TRUE@am__append_18 = x86-solaris --@VGCONF_PLATFORMS_INCLUDE_AMD64_SOLARIS_TRUE@am__append_19 = amd64-solaris -+@VGCONF_PLATFORMS_INCLUDE_ARM64_LINUX_TRUE@am__append_18 = arm64-linux -+@VGCONF_PLATFORMS_INCLUDE_X86_SOLARIS_TRUE@am__append_19 = x86-solaris -+@VGCONF_PLATFORMS_INCLUDE_AMD64_SOLARIS_TRUE@am__append_20 = amd64-solaris - check_PROGRAMS = accounting$(EXEEXT) addressable$(EXEEXT) \ - atomic_incs$(EXEEXT) badaddrvalue$(EXEEXT) badfree$(EXEEXT) \ - badjump$(EXEEXT) badjump2$(EXEEXT) badloop$(EXEEXT) \ -@@ -191,14 +192,14 @@ - $(am__EXEEXT_5) - - # Sun Studio assembler fails on "IDENT too long" --@SOLARIS_SUN_STUDIO_AS_FALSE@am__append_20 = long_namespace_xml --@DWARF4_TRUE@am__append_21 = dw4 --@HAVE_GNU_STPNCPY_TRUE@am__append_22 = stpncpy --@HAVE_PTHREAD_SETNAME_NP_TRUE@am__append_23 = threadname --@HAVE_PTHREAD_BARRIER_TRUE@am__append_24 = reach_thread_register --@VGCONF_OS_IS_SOLARIS_TRUE@am__append_25 = -D_XOPEN_SOURCE=500 --@VGCONF_OS_IS_SOLARIS_TRUE@am__append_26 = -std=c99 -D__EXTENSIONS__ --@VGCONF_OS_IS_SOLARIS_TRUE@am__append_27 = -D_XOPEN_SOURCE=500 -+@SOLARIS_SUN_STUDIO_AS_FALSE@am__append_21 = long_namespace_xml -+@DWARF4_TRUE@am__append_22 = dw4 -+@HAVE_GNU_STPNCPY_TRUE@am__append_23 = stpncpy -+@HAVE_PTHREAD_SETNAME_NP_TRUE@am__append_24 = threadname -+@HAVE_PTHREAD_BARRIER_TRUE@am__append_25 = reach_thread_register -+@VGCONF_OS_IS_SOLARIS_TRUE@am__append_26 = -D_XOPEN_SOURCE=500 -+@VGCONF_OS_IS_SOLARIS_TRUE@am__append_27 = -std=c99 -D__EXTENSIONS__ -+@VGCONF_OS_IS_SOLARIS_TRUE@am__append_28 = -D_XOPEN_SOURCE=500 - subdir = memcheck/tests - ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 - am__aclocal_m4_deps = $(top_srcdir)/configure.ac -@@ -1313,9 +1314,11 @@ - SUBDIRS = . $(am__append_8) $(am__append_9) $(am__append_10) \ - $(am__append_11) $(am__append_12) $(am__append_13) \ - $(am__append_14) $(am__append_15) $(am__append_16) \ -- $(am__append_17) $(am__append_18) $(am__append_19) -+ $(am__append_17) $(am__append_18) $(am__append_19) \ -+ $(am__append_20) - DIST_SUBDIRS = x86 amd64 ppc32 ppc64 s390x linux \ -- darwin solaris x86-linux amd64-linux x86-solaris amd64-solaris \ -+ darwin solaris x86-linux amd64-linux arm64-linux \ -+ x86-solaris amd64-solaris \ - common . - - dist_noinst_SCRIPTS = \ -@@ -1580,7 +1583,7 @@ - descr_belowsp_LDADD = -lpthread - err_disable3_LDADD = -lpthread - err_disable4_LDADD = -lpthread --err_disable4_CFLAGS = $(AM_CFLAGS) $(am__append_25) -+err_disable4_CFLAGS = $(AM_CFLAGS) $(am__append_26) - reach_thread_register_CFLAGS = $(AM_CFLAGS) -O2 - reach_thread_register_LDADD = -lpthread - thread_alloca_LDADD = -lpthread -@@ -1595,7 +1598,7 @@ - inltemplate_CXXFLAGS = $(AM_CXXFLAGS) @FLAG_W_NO_UNINITIALIZED@ - long_namespace_xml_SOURCES = long_namespace_xml.cpp - manuel1_CFLAGS = $(AM_CFLAGS) @FLAG_W_NO_UNINITIALIZED@ --memalign2_CFLAGS = $(AM_CFLAGS) $(am__append_26) -+memalign2_CFLAGS = $(AM_CFLAGS) $(am__append_27) - memcmptest_CFLAGS = $(AM_CFLAGS) -fno-builtin-memcmp - mismatches_SOURCES = mismatches.cpp - mismatches_CXXFLAGS = $(AM_CXXFLAGS) @FLAG_W_NO_MISMATCHED_NEW_DELETE@ -@@ -1617,7 +1620,7 @@ - # because then we can't intercept it - overlap_CFLAGS = $(AM_CFLAGS) -fno-builtin-memcpy -fno-builtin-strcpy - resvn_stack_CFLAGS = $(AM_CFLAGS) @FLAG_W_NO_UNINITIALIZED@ --sendmsg_CFLAGS = $(AM_CFLAGS) $(am__append_27) -+sendmsg_CFLAGS = $(AM_CFLAGS) $(am__append_28) - @VGCONF_OS_IS_SOLARIS_TRUE@sendmsg_LDADD = -lsocket -lnsl - str_tester_CFLAGS = $(AM_CFLAGS) -Wno-shadow \ - @FLAG_W_NO_MEMSET_TRANSPOSED_ARGS@ -commit 366319c50f4d80b33c286f37b0228b3c0e626ffa -Author: mjw -Date: Thu Mar 10 07:59:33 2016 +0000 - - Add arm64-linux to tests/platform_test. - - Prevent executing arm64-linux specific tests on other arches. - - git-svn-id: svn://svn.valgrind.org/valgrind/trunk@15827 a5019735-40e9-0310-863c-91ae7b9d1cf9 - -diff --git a/tests/platform_test b/tests/platform_test -index 9653921..376f62e 100644 ---- a/tests/platform_test -+++ b/tests/platform_test -@@ -12,7 +12,7 @@ - - all_platforms= - all_platforms="$all_platforms x86-linux amd64-linux ppc32-linux ppc64-linux" --all_platforms="$all_platforms arm-linux" -+all_platforms="$all_platforms arm-linux arm64-linux" - all_platforms="$all_platforms s390x-linux mips32-linux mips64-linux" - all_platforms="$all_platforms x86-darwin amd64-darwin" - all_platforms="$all_platforms x86-solaris amd64-solaris" diff --git a/SOURCES/valgrind-3.11.0-arm64-sigpending.patch b/SOURCES/valgrind-3.11.0-arm64-sigpending.patch deleted file mode 100644 index 2530d19..0000000 --- a/SOURCES/valgrind-3.11.0-arm64-sigpending.patch +++ /dev/null @@ -1,28 +0,0 @@ -commit b78a32e41a8b5918c706b0ac1b8fbe02fcec854b -Author: mjw -Date: Wed Sep 23 12:15:36 2015 +0000 - - Bug 353084 arm64 doesn't support sigpending system call. - - git-svn-id: svn://svn.valgrind.org/valgrind/trunk@15676 a5019735-40e9-0310-863c-91ae7b9d1cf9 - -diff --git a/coregrind/m_syswrap/syswrap-arm64-linux.c b/coregrind/m_syswrap/syswrap-arm64-linux.c -index 6cf3ba5..8d3027d 100644 ---- a/coregrind/m_syswrap/syswrap-arm64-linux.c -+++ b/coregrind/m_syswrap/syswrap-arm64-linux.c -@@ -959,6 +959,7 @@ static SyscallTableEntry syscall_main_table[] = { - LINX_(__NR_rt_sigsuspend, sys_rt_sigsuspend), // 133 - LINXY(__NR_rt_sigaction, sys_rt_sigaction), // 134 - LINXY(__NR_rt_sigprocmask, sys_rt_sigprocmask), // 135 -+ LINXY(__NR_rt_sigpending, sys_rt_sigpending), // 136 - LINXY(__NR_rt_sigtimedwait, sys_rt_sigtimedwait), // 137 - LINXY(__NR_rt_sigqueueinfo, sys_rt_sigqueueinfo), // 138 - PLAX_(__NR_rt_sigreturn, sys_rt_sigreturn), // 139 -@@ -1231,7 +1232,6 @@ static SyscallTableEntry syscall_main_table[] = { - //ZZ LINXY(__NR_prctl, sys_prctl), // 172 - //ZZ LINXY(__NR_rt_sigaction, sys_rt_sigaction), // 174 - //ZZ --//ZZ LINXY(__NR_rt_sigpending, sys_rt_sigpending), // 176 - //ZZ LINXY(__NR_rt_sigtimedwait, sys_rt_sigtimedwait),// 177 - //ZZ - //ZZ LINX_(__NR_chown, sys_chown16), // 182 diff --git a/SOURCES/valgrind-3.11.0-arm64-xattr.patch b/SOURCES/valgrind-3.11.0-arm64-xattr.patch deleted file mode 100644 index 36c0883..0000000 --- a/SOURCES/valgrind-3.11.0-arm64-xattr.patch +++ /dev/null @@ -1,54 +0,0 @@ -commit 9f20263f224cf85a81b16fe1570439cecf5ef48b -Author: mjw -Date: Wed Sep 23 11:51:47 2015 +0000 - - Bug 353083 arm64 doesn't implement various xattr system calls. - - This enables setxattr, lsetxattr, fsetxattr, fgetxattr, removexattr, - lremovexattr, fremovexattr, listxattr, llistxattr and flistxattr on - arm64-linux. - - git-svn-id: svn://svn.valgrind.org/valgrind/trunk@15675 a5019735-40e9-0310-863c-91ae7b9d1cf9 - -diff --git a/coregrind/m_syswrap/syswrap-arm64-linux.c b/coregrind/m_syswrap/syswrap-arm64-linux.c -index 6661d1d..6cf3ba5 100644 ---- a/coregrind/m_syswrap/syswrap-arm64-linux.c -+++ b/coregrind/m_syswrap/syswrap-arm64-linux.c -@@ -855,8 +855,18 @@ PRE(sys_rt_sigreturn) - // (unknown). - - static SyscallTableEntry syscall_main_table[] = { -+ LINX_(__NR_setxattr, sys_setxattr), // 5 -+ LINX_(__NR_lsetxattr, sys_lsetxattr), // 6 -+ LINX_(__NR_fsetxattr, sys_fsetxattr), // 7 - LINXY(__NR_getxattr, sys_getxattr), // 8 - LINXY(__NR_lgetxattr, sys_lgetxattr), // 9 -+ LINXY(__NR_fgetxattr, sys_fgetxattr), // 10 -+ LINXY(__NR_listxattr, sys_listxattr), // 11 -+ LINXY(__NR_llistxattr, sys_llistxattr), // 12 -+ LINXY(__NR_flistxattr, sys_flistxattr), // 13 -+ LINX_(__NR_removexattr, sys_removexattr), // 14 -+ LINX_(__NR_lremovexattr, sys_lremovexattr), // 15 -+ LINX_(__NR_fremovexattr, sys_fremovexattr), // 16 - GENXY(__NR_getcwd, sys_getcwd), // 17 - LINXY(__NR_eventfd2, sys_eventfd2), // 19 - LINXY(__NR_epoll_create1, sys_epoll_create1), // 20 -@@ -1267,18 +1277,6 @@ static SyscallTableEntry syscall_main_table[] = { - //ZZ // GENX_(222, sys_ni_syscall), // 222 - //ZZ // PLAXY(223, sys_syscall223), // 223 // sys_bproc? - //ZZ --//ZZ LINX_(__NR_setxattr, sys_setxattr), // 226 --//ZZ LINX_(__NR_lsetxattr, sys_lsetxattr), // 227 --//ZZ LINX_(__NR_fsetxattr, sys_fsetxattr), // 228 --//ZZ --//ZZ LINXY(__NR_fgetxattr, sys_fgetxattr), // 231 --//ZZ LINXY(__NR_listxattr, sys_listxattr), // 232 --//ZZ LINXY(__NR_llistxattr, sys_llistxattr), // 233 --//ZZ LINXY(__NR_flistxattr, sys_flistxattr), // 234 --//ZZ --//ZZ LINX_(__NR_removexattr, sys_removexattr), // 235 --//ZZ LINX_(__NR_lremovexattr, sys_lremovexattr), // 236 --//ZZ LINX_(__NR_fremovexattr, sys_fremovexattr), // 237 - //ZZ LINXY(__NR_tkill, sys_tkill), // 238 */Linux - //ZZ LINXY(__NR_sendfile64, sys_sendfile64), // 239 - //ZZ diff --git a/SOURCES/valgrind-3.11.0-aspacemgr.patch b/SOURCES/valgrind-3.11.0-aspacemgr.patch deleted file mode 100644 index 0688022..0000000 --- a/SOURCES/valgrind-3.11.0-aspacemgr.patch +++ /dev/null @@ -1,80 +0,0 @@ -commit b28a423827a1c7917c6f3f3eba23b9432077dfbd -Author: florian -Date: Sat Jan 16 21:44:31 2016 +0000 - - In ML_(am_allocate_segname) do not set the reference count of the - slot to 1. Rather do that in add_segment which is where the segment - refering to that name actually comes into existence. - Properly handle the case in add_segment where the to-be-added segment - and one (or more) of the segments it replaces have the same name - This may occur when doing a mremap. - - - git-svn-id: svn://svn.valgrind.org/valgrind/trunk@15761 a5019735-40e9-0310-863c-91ae7b9d1cf9 - -diff --git a/coregrind/m_aspacemgr/aspacemgr-linux.c b/coregrind/m_aspacemgr/aspacemgr-linux.c -index 0a8f675..f6c1a41 100644 ---- a/coregrind/m_aspacemgr/aspacemgr-linux.c -+++ b/coregrind/m_aspacemgr/aspacemgr-linux.c -@@ -1445,6 +1445,15 @@ static void add_segment ( const NSegment* seg ) - - split_nsegments_lo_and_hi( sStart, sEnd, &iLo, &iHi ); - -+ /* Increase the reference count of SEG's name. We need to do this -+ *before* decreasing the reference count of the names of the replaced -+ segments. Consider the case where the segment name of SEG and one of -+ the replaced segments are the same. If the refcount of that name is 1, -+ then decrementing first would put the slot for that name on the free -+ list. Attempting to increment the refcount later would then fail -+ because the slot is no longer allocated. */ -+ ML_(am_inc_refcount)(seg->fnIdx); -+ - /* Now iLo .. iHi inclusive is the range of segment indices which - seg will replace. If we're replacing more than one segment, - slide those above the range down to fill the hole. Before doing -diff --git a/coregrind/m_aspacemgr/aspacemgr-segnames.c b/coregrind/m_aspacemgr/aspacemgr-segnames.c -index ef3d3ef..8e74356 100644 ---- a/coregrind/m_aspacemgr/aspacemgr-segnames.c -+++ b/coregrind/m_aspacemgr/aspacemgr-segnames.c -@@ -309,7 +309,7 @@ ML_(am_allocate_segname)(const HChar *name) - freeslot_chain = next_freeslot; - else - put_slotindex(prev, next_freeslot); -- put_refcount(ix, 1); -+ put_refcount(ix, 0); - put_slotsize(ix, size); - VG_(strcpy)(segnames + ix, name); - ++num_segnames; -@@ -336,7 +336,7 @@ ML_(am_allocate_segname)(const HChar *name) - - /* copy it in */ - ix = segnames_used; -- put_refcount(ix, 1); -+ put_refcount(ix, 0); - put_slotsize(ix, len + 1); - VG_(strcpy)(segnames + ix, name); - segnames_used += need; -commit e345eb50c0c5e96ac60b2bc21fbe9f281c20b9e6 -Author: florian -Date: Sat Jan 16 21:12:57 2016 +0000 - - Remove code that has no effect. Looks like a leftover from early - debugging days. - - - git-svn-id: svn://svn.valgrind.org/valgrind/trunk@15760 a5019735-40e9-0310-863c-91ae7b9d1cf9 - -diff --git a/coregrind/m_aspacemgr/aspacemgr-segnames.c b/coregrind/m_aspacemgr/aspacemgr-segnames.c -index 761608d..ef3d3ef 100644 ---- a/coregrind/m_aspacemgr/aspacemgr-segnames.c -+++ b/coregrind/m_aspacemgr/aspacemgr-segnames.c -@@ -250,9 +250,7 @@ dec_refcount(UInt ix) - UInt size = get_slotsize(ix); - /* Chain this slot in the freelist */ - put_slotindex(ix, freeslot_chain); -- get_slotindex(ix); - put_slotsize(ix + slotsize_size, size); -- get_slotindex(ix); - freeslot_chain = ix; - --num_segnames; - if (0) VG_(am_show_nsegments)(0, "AFTER DECREASE rc -> 0"); diff --git a/SOURCES/valgrind-3.11.0-cxx-freeres.patch b/SOURCES/valgrind-3.11.0-cxx-freeres.patch deleted file mode 100644 index 231655e..0000000 --- a/SOURCES/valgrind-3.11.0-cxx-freeres.patch +++ /dev/null @@ -1,639 +0,0 @@ -commit b5dde4a2ff59cc87390a33d85c7bf0ad6443cb6c -Author: iraisr -Date: Wed Mar 30 17:53:03 2016 +0000 - - Run __gnu_cxx::__freeres() cleanup function available - from libstdc++ when available, similar to existing __libc_freeres(). - New option --run-cxx-freeres= can be used to change whether - this cleanup function is called or not. - - Note that __gnu_cxx::__freeres() is currently available - only in gcc 6. It is not yet decided what to do about - libstdc++ from gcc 5. - Tracked under https://gcc.gnu.org/bugzilla/show_bug.cgi?id=69945 - for libstdc++. - - Fixes BZ#345307 (partially). - - - git-svn-id: svn://svn.valgrind.org/valgrind/trunk@15840 a5019735-40e9-0310-863c-91ae7b9d1cf9 - -diff --git a/coregrind/m_clientstate.c b/coregrind/m_clientstate.c -index 7cbc7c7..296d658 100644 ---- a/coregrind/m_clientstate.c -+++ b/coregrind/m_clientstate.c -@@ -106,9 +106,9 @@ HChar* VG_(name_of_launcher) = NULL; - Int VG_(fd_soft_limit) = -1; - Int VG_(fd_hard_limit) = -1; - --/* Useful addresses extracted from the client */ --/* Where is the __libc_freeres_wrapper routine we made? */ --Addr VG_(client___libc_freeres_wrapper) = 0; -+/* Useful addresses extracted from the client. */ -+/* Where is the freeres_wrapper routine we made? */ -+Addr VG_(client_freeres_wrapper) = 0; - - /* x86-linux only: where is glibc's _dl_sysinfo_int80 function? - Finding it isn't essential, but knowing where it is does sometimes -diff --git a/coregrind/m_main.c b/coregrind/m_main.c -index 54997bd..8cfaf82 100644 ---- a/coregrind/m_main.c -+++ b/coregrind/m_main.c -@@ -36,6 +36,7 @@ - #include "pub_core_clientstate.h" - #include "pub_core_aspacemgr.h" - #include "pub_core_aspacehl.h" -+#include "pub_core_clreq.h" - #include "pub_core_commandline.h" - #include "pub_core_debuglog.h" - #include "pub_core_errormgr.h" -@@ -176,6 +177,8 @@ static void usage_NORETURN ( Bool debug_help ) - " --vgdb-shadow-registers=no|yes let gdb see the shadow registers [no]\n" - " --vgdb-prefix= prefix for vgdb FIFOs [%s]\n" - " --run-libc-freeres=no|yes free up glibc memory at exit on Linux? [yes]\n" -+" --run-cxx-freeres=no|yes free up libstdc++ memory at exit on Linux\n" -+" and Solaris? [yes]\n" - " --sim-hints=hint1,hint2,... activate unusual sim behaviours [none] \n" - " where hint is one of:\n" - " lax-ioctls lax-doors fuse-compatible enable-outer\n" -@@ -644,6 +647,7 @@ void main_process_cmd_line_options ( /*OUT*/Bool* logging_to_fd, - else if VG_BOOL_CLO(arg, "--show-emwarns", VG_(clo_show_emwarns)) {} - - else if VG_BOOL_CLO(arg, "--run-libc-freeres", VG_(clo_run_libc_freeres)) {} -+ else if VG_BOOL_CLO(arg, "--run-cxx-freeres", VG_(clo_run_cxx_freeres)) {} - else if VG_BOOL_CLO(arg, "--show-below-main", VG_(clo_show_below_main)) {} - else if VG_BOOL_CLO(arg, "--time-stamp", VG_(clo_time_stamp)) {} - else if VG_BOOL_CLO(arg, "--track-fds", VG_(clo_track_fds)) {} -@@ -2560,8 +2564,8 @@ Int valgrind_main ( Int argc, HChar **argv, HChar **envp ) - So don't. - - The final_tidyup call makes a bit of a nonsense of the ExitProcess -- case, since it will run the libc_freeres function, thus allowing -- other lurking threads to run again. Hmm. */ -+ case, since it will run __gnu_cxx::__freeres and libc_freeres functions, -+ thus allowing other lurking threads to run again. Hmm. */ - - static - void shutdown_actions_NORETURN( ThreadId tid, -@@ -2584,8 +2588,8 @@ void shutdown_actions_NORETURN( ThreadId tid, - // jrs: Huh? but they surely are already gone - VG_(reap_threads)(tid); - -- // Clean the client up before the final report -- // this causes the libc_freeres function to run -+ // Clean the client up before the final report. -+ // This causes __gnu_cxx::__freeres and libc_freeres functions to run. - final_tidyup(tid); - - /* be paranoid */ -@@ -2600,9 +2604,9 @@ void shutdown_actions_NORETURN( ThreadId tid, - // that none of the other threads ever run again. - vg_assert( VG_(count_living_threads)() >= 1 ); - -- // Clean the client up before the final report -- // this causes the libc_freeres function to run -- // perhaps this is unsafe, as per comment above -+ // Clean the client up before the final report. -+ // This causes __gnu_cxx::__freeres and libc_freeres functions to run. -+ // Perhaps this is unsafe, as per comment above. - final_tidyup(tid); - - /* be paranoid */ -@@ -2742,63 +2746,141 @@ void shutdown_actions_NORETURN( ThreadId tid, - /* -------------------- */ - - /* Final clean-up before terminating the process. -- Clean up the client by calling __libc_freeres() (if requested) -- This is Linux-specific? -- GrP fixme glibc-specific, anyway -+ Clean up the client by calling __gnu_cxx::__freeres() (if requested) -+ and __libc_freeres() (if requested). - */ - static void final_tidyup(ThreadId tid) - { --#if !defined(VGO_darwin) -- Addr __libc_freeres_wrapper = VG_(client___libc_freeres_wrapper); -+#if defined(VGO_linux) || defined(VGO_solaris) -+ Addr freeres_wrapper = VG_(client_freeres_wrapper); - - vg_assert(VG_(is_running_thread)(tid)); -- -- if ( !VG_(needs).libc_freeres || -- !VG_(clo_run_libc_freeres) || -- 0 == __libc_freeres_wrapper ) -- return; /* can't/won't do it */ -+ -+ if (freeres_wrapper == 0) { -+ return; /* can't do it */ -+ } -+ -+ Vg_FreeresToRun to_run = 0; -+ if (VG_(needs).cxx_freeres && VG_(clo_run_cxx_freeres)) { -+ to_run |= VG_RUN__GNU_CXX__FREERES; -+ } -+ -+ if (VG_(needs).libc_freeres && VG_(clo_run_libc_freeres)) { -+ to_run |= VG_RUN__LIBC_FREERES; -+ } -+ -+ if (to_run == 0) { -+ return; /* won't do it */ -+ } - - # if defined(VGP_ppc64be_linux) -- Addr r2 = VG_(get_tocptr)( __libc_freeres_wrapper ); -+ Addr r2 = VG_(get_tocptr)(freeres_wrapper); - if (r2 == 0) { - VG_(message)(Vg_UserMsg, -- "Caught __NR_exit, but can't run __libc_freeres()\n"); -+ "Caught __NR_exit, but can't run __gnu_cxx::__freeres()\n"); - VG_(message)(Vg_UserMsg, -- " since cannot establish TOC pointer for it.\n"); -+ " or __libc_freeres() since cannot establish TOC pointer " -+ "for it.\n"); - return; - } - # endif - - if (VG_(clo_verbosity) > 2 || - VG_(clo_trace_syscalls) || -- VG_(clo_trace_sched)) -- VG_(message)(Vg_DebugMsg, -- "Caught __NR_exit; running __libc_freeres()\n"); -+ VG_(clo_trace_sched)) { -+ -+ vg_assert(to_run > 0); -+ vg_assert(to_run <= (VG_RUN__GNU_CXX__FREERES | VG_RUN__LIBC_FREERES)); -+ -+ const HChar *msgs[] = {"__gnu_cxx::__freeres()", "__libc_freeres()", -+ "__gnu_cxx::__freeres and __libc_freeres()"}; -+ VG_(message)(Vg_DebugMsg, -+ "Caught __NR_exit; running %s wrapper\n", msgs[to_run - 1]); -+ } - -- /* set thread context to point to libc_freeres_wrapper */ -- /* ppc64be-linux note: __libc_freeres_wrapper gives us the real -+ /* set thread context to point to freeres_wrapper */ -+ /* ppc64be-linux note: freeres_wrapper gives us the real - function entry point, not a fn descriptor, so can use it - directly. However, we need to set R2 (the toc pointer) - appropriately. */ -- VG_(set_IP)(tid, __libc_freeres_wrapper); -+ VG_(set_IP)(tid, freeres_wrapper); - # if defined(VGP_ppc64be_linux) - VG_(threads)[tid].arch.vex.guest_GPR2 = r2; - # elif defined(VGP_ppc64le_linux) - /* setting GPR2 but not really needed, GPR12 is needed */ -- VG_(threads)[tid].arch.vex.guest_GPR2 = __libc_freeres_wrapper; -- VG_(threads)[tid].arch.vex.guest_GPR12 = __libc_freeres_wrapper; -+ VG_(threads)[tid].arch.vex.guest_GPR2 = freeres_wrapper; -+ VG_(threads)[tid].arch.vex.guest_GPR12 = freeres_wrapper; - # endif - /* mips-linux note: we need to set t9 */ - # if defined(VGP_mips32_linux) || defined(VGP_mips64_linux) -- VG_(threads)[tid].arch.vex.guest_r25 = __libc_freeres_wrapper; -+ VG_(threads)[tid].arch.vex.guest_r25 = freeres_wrapper; - # endif - -+ /* Pass a parameter to freeres_wrapper(). */ -+# if defined(VGA_x86) -+ Addr sp = VG_(threads)[tid].arch.vex.guest_ESP; -+ sp = sp - sizeof(UWord); -+ *((UWord *) sp) = to_run; -+ VG_TRACK(post_mem_write, Vg_CoreClientReq, tid, sp, sizeof(UWord)); -+ VG_(threads)[tid].arch.vex.guest_ESP = sp; -+ VG_TRACK(post_reg_write, Vg_CoreClientReq, tid, -+ offsetof(VexGuestX86State, guest_ESP), -+ sizeof(VG_(threads)[tid].arch.vex.guest_ESP)); -+# elif defined(VGA_amd64) -+ VG_(threads)[tid].arch.vex.guest_RDI = to_run; -+ VG_TRACK(post_reg_write, Vg_CoreClientReq, tid, -+ offsetof(VexGuestAMD64State, guest_RDI), -+ sizeof(VG_(threads)[tid].arch.vex.guest_RDI)); -+# elif defined(VGA_arm) -+ VG_(threads)[tid].arch.vex.guest_R0 = to_run; -+ VG_TRACK(post_reg_write, Vg_CoreClientReq, tid, -+ offsetof(VexGuestARMState, guest_R0), -+ sizeof(VG_(threads)[tid].arch.vex.guest_R0)); -+# elif defined(VGA_arm64) -+ VG_(threads)[tid].arch.vex.guest_X0 = to_run; -+ VG_TRACK(post_reg_write, Vg_CoreClientReq, tid, -+ offsetof(VexGuestARM64State, guest_X0), -+ sizeof(VG_(threads)[tid].arch.vex.guest_X0)); -+# elif defined(VGA_mips32) -+ VG_(threads)[tid].arch.vex.guest_r4 = to_run; -+ VG_TRACK(post_reg_write, Vg_CoreClientReq, tid, -+ offsetof(VexGuestMIPS32State, guest_r4), -+ sizeof(VG_(threads)[tid].arch.vex.guest_r4)); -+# elif defined(VGA_mips64) -+ VG_(threads)[tid].arch.vex.guest_r4 = to_run; -+ VG_TRACK(post_reg_write, Vg_CoreClientReq, tid, -+ offsetof(VexGuestMIPS64State, guest_r4), -+ sizeof(VG_(threads)[tid].arch.vex.guest_r4)); -+# elif defined(VGA_ppc32) -+ VG_(threads)[tid].arch.vex.guest_GPR3 = to_run; -+ VG_TRACK(post_reg_write, Vg_CoreClientReq, tid, -+ offsetof(VexGuestPPC32State, guest_GPR3), -+ sizeof(VG_(threads)[tid].arch.vex.guest_GPR3)); -+# elif defined(VGA_ppc64be) || defined(VGA_ppc64le) -+ VG_(threads)[tid].arch.vex.guest_GPR3 = to_run; -+ VG_TRACK(post_reg_write, Vg_CoreClientReq, tid, -+ offsetof(VexGuestPPC64State, guest_GPR3), -+ sizeof(VG_(threads)[tid].arch.vex.guest_GPR3)); -+# elif defined(VGA_s390x) -+ VG_(threads)[tid].arch.vex.guest_r2 = to_run; -+ VG_TRACK(post_reg_write, Vg_CoreClientReq, tid, -+ offsetof(VexGuestS390XState, guest_r2), -+ sizeof(VG_(threads)[tid].arch.vex.guest_r2)); -+# elif defined(VGA_tilegx) -+ VG_(threads)[tid].arch.vex.guest_r0 = to_run; -+ VG_TRACK(post_reg_write, Vg_CoreClientReq, tid, -+ offsetof(VexGuestTILEGXState, guest_r0), -+ sizeof(VG_(threads)[tid].arch.vex.guest_r0)); -+#else -+ I_die_here : architecture missing in m_main.c -+#endif -+ - /* Block all blockable signals by copying the real block state into -- the thread's block state*/ -+ the thread's block state */ - VG_(sigprocmask)(VKI_SIG_BLOCK, NULL, &VG_(threads)[tid].sig_mask); - VG_(threads)[tid].tmp_sig_mask = VG_(threads)[tid].sig_mask; - -- /* and restore handlers to default */ -+ /* and restore handlers to default. */ - VG_(set_default_handler)(VKI_SIGSEGV); - VG_(set_default_handler)(VKI_SIGBUS); - VG_(set_default_handler)(VKI_SIGILL); -@@ -2806,11 +2888,11 @@ static void final_tidyup(ThreadId tid) - - // We were exiting, so assert that... - vg_assert(VG_(is_exiting)(tid)); -- // ...but now we're not again -+ // ...but now we're not again. - VG_(threads)[tid].exitreason = VgSrc_None; - -- // run until client thread exits - ideally with LIBC_FREERES_DONE, -- // but exit/exitgroup/signal will do -+ // Run until client thread exits - ideally with FREERES_DONE, -+ // but exit/exitgroup/signal will do. - VG_(scheduler)(tid); - - vg_assert(VG_(is_exiting)(tid)); -diff --git a/coregrind/m_options.c b/coregrind/m_options.c -index 7e920e0..83d6018 100644 ---- a/coregrind/m_options.c -+++ b/coregrind/m_options.c -@@ -121,6 +121,7 @@ Bool VG_(clo_read_inline_info) = False; // Or should be put it to True by defa - Bool VG_(clo_read_var_info) = False; - XArray *VG_(clo_req_tsyms); // array of strings - Bool VG_(clo_run_libc_freeres) = True; -+Bool VG_(clo_run_cxx_freeres) = True; - Bool VG_(clo_track_fds) = False; - Bool VG_(clo_show_below_main)= False; - Bool VG_(clo_show_emwarns) = False; -diff --git a/coregrind/m_redir.c b/coregrind/m_redir.c -index dae47f1..62cb45a 100644 ---- a/coregrind/m_redir.c -+++ b/coregrind/m_redir.c -@@ -49,7 +49,7 @@ - #include "pub_core_machine.h" // VG_(fnptr_to_fnentry) - #include "pub_core_aspacemgr.h" // VG_(am_find_nsegment) - #include "pub_core_xarray.h" --#include "pub_core_clientstate.h" // VG_(client___libc_freeres_wrapper) -+#include "pub_core_clientstate.h" // VG_(client_freeres_wrapper) - #include "pub_core_demangle.h" // VG_(maybe_Z_demangle) - #include "pub_core_libcproc.h" // VG_(libdir) - -@@ -1688,7 +1688,7 @@ void handle_maybe_load_notifier( const HChar* soname, - return; - - if (VG_(strcmp)(symbol, VG_STRINGIFY(VG_NOTIFY_ON_LOAD(freeres))) == 0) -- VG_(client___libc_freeres_wrapper) = addr; -+ VG_(client_freeres_wrapper) = addr; - else - if (VG_(strcmp)(symbol, VG_STRINGIFY(VG_NOTIFY_ON_LOAD(ifunc_wrapper))) == 0) - iFuncWrapper = addr; -diff --git a/coregrind/m_scheduler/scheduler.c b/coregrind/m_scheduler/scheduler.c -index 1234d56..9aa854d 100644 ---- a/coregrind/m_scheduler/scheduler.c -+++ b/coregrind/m_scheduler/scheduler.c -@@ -1744,12 +1744,13 @@ static Bool os_client_request(ThreadId tid, UWord *args) - vg_assert(VG_(is_running_thread)(tid)); - - switch(args[0]) { -- case VG_USERREQ__LIBC_FREERES_DONE: -+ case VG_USERREQ__FREERES_DONE: - /* This is equivalent to an exit() syscall, but we don't set the - exitcode (since it might already be set) */ - if (0 || VG_(clo_trace_syscalls) || VG_(clo_trace_sched)) - VG_(message)(Vg_DebugMsg, -- "__libc_freeres() done; really quitting!\n"); -+ "__gnu_cxx::__freeres() and __libc_freeres() wrapper " -+ "done; really quitting!\n"); - VG_(threads)[tid].exitreason = VgSrc_ExitThread; - break; - -diff --git a/coregrind/m_tooliface.c b/coregrind/m_tooliface.c -index 6971a47..38bc7c2 100644 ---- a/coregrind/m_tooliface.c -+++ b/coregrind/m_tooliface.c -@@ -88,6 +88,7 @@ VgNeeds VG_(needs) = { - .core_errors = False, - .tool_errors = False, - .libc_freeres = False, -+ .cxx_freeres = False, - .superblock_discards = False, - .command_line_options = False, - .client_requests = False, -@@ -216,6 +217,7 @@ Bool VG_(sanity_check_needs)(const HChar** failmsg) - - // These ones don't require any tool-supplied functions - NEEDS(libc_freeres) -+NEEDS(cxx_freeres) - NEEDS(core_errors) - NEEDS(var_info) - -diff --git a/coregrind/pub_core_clientstate.h b/coregrind/pub_core_clientstate.h -index 215dfb2..ddd1c09 100644 ---- a/coregrind/pub_core_clientstate.h -+++ b/coregrind/pub_core_clientstate.h -@@ -90,9 +90,9 @@ extern HChar* VG_(name_of_launcher); - extern Int VG_(fd_soft_limit); - extern Int VG_(fd_hard_limit); - --/* Useful addresses extracted from the client */ --/* Where is the __libc_freeres_wrapper routine we made? */ --extern Addr VG_(client___libc_freeres_wrapper); -+/* Useful addresses extracted from the client. */ -+/* Where is the freeres_wrapper routine we made? */ -+extern Addr VG_(client_freeres_wrapper); - - /* x86-linux only: where is ld.so's _dl_sysinfo_int80 function? - Finding it isn't essential, but knowing where it is does sometimes -diff --git a/coregrind/pub_core_clreq.h b/coregrind/pub_core_clreq.h -index 45c48c3..ce1493c 100644 ---- a/coregrind/pub_core_clreq.h -+++ b/coregrind/pub_core_clreq.h -@@ -41,8 +41,8 @@ - // used to be many more internal client requests. - typedef - enum { -- /* Denote the finish of __libc_freeres_wrapper(). Also causes exit. */ -- VG_USERREQ__LIBC_FREERES_DONE = 0x3029, -+ /* Denote the finish of freeres_wrapper(). Also causes exit. */ -+ VG_USERREQ__FREERES_DONE = 0x3029, - - /* Get the tool's malloc-wrapping functions */ - VG_USERREQ__GET_MALLOCFUNCS = 0x3030, -@@ -55,6 +55,18 @@ typedef - - } Vg_InternalClientRequest; - -+ -+/* Which freeres functions to run in the freeres_wrapper(). -+ It is possible to run both. */ -+typedef enum { -+ /* Run __gnu_cxx::__freeres(). */ -+ VG_RUN__GNU_CXX__FREERES = 1, -+ -+ /* Run __libc_freeres(). */ -+ VG_RUN__LIBC_FREERES = 2 -+ -+} Vg_FreeresToRun; -+ - // Function for printing from code within Valgrind, but which runs on the - // sim'd CPU. Must be a function rather than macros so that va_list can - // be used. -diff --git a/coregrind/pub_core_options.h b/coregrind/pub_core_options.h -index 2a45c6b..7a887fc 100644 ---- a/coregrind/pub_core_options.h -+++ b/coregrind/pub_core_options.h -@@ -281,6 +281,13 @@ extern Bool VG_(clo_track_fds); - cannot be overridden from the command line. */ - extern Bool VG_(clo_run_libc_freeres); - -+/* Should we run __gnu_cxx::__freeres at exit for C++ programs? -+ Default: YES. Note this is subservient to VG_(needs).cxx_freeres; -+ if the latter says False, then the setting of VG_(clo_run_cxx_freeres) -+ is ignored. Ie if a tool says no, I don't want this to run, that -+ cannot be overridden from the command line. */ -+extern Bool VG_(clo_run_cxx_freeres); -+ - /* Should we show VEX emulation warnings? Default: NO */ - extern Bool VG_(clo_show_emwarns); - -diff --git a/coregrind/pub_core_tooliface.h b/coregrind/pub_core_tooliface.h -index 41da986..83758a8 100644 ---- a/coregrind/pub_core_tooliface.h -+++ b/coregrind/pub_core_tooliface.h -@@ -81,6 +81,7 @@ extern VgDetails VG_(details); - typedef - struct { - Bool libc_freeres; -+ Bool cxx_freeres; - Bool core_errors; - Bool tool_errors; - Bool superblock_discards; -diff --git a/coregrind/vg_preloaded.c b/coregrind/vg_preloaded.c -index 2ea7a7a..2f53a7d 100644 ---- a/coregrind/vg_preloaded.c -+++ b/coregrind/vg_preloaded.c -@@ -47,29 +47,47 @@ - #include "pub_core_debuginfo.h" // Needed for pub_core_redir.h - #include "pub_core_redir.h" // For VG_NOTIFY_ON_LOAD - --#if defined(VGO_linux) -+#if defined(VGO_linux) || defined(VGO_solaris) - - /* --------------------------------------------------------------------- -- Hook for running __libc_freeres once the program exits. -+ Hook for running __gnu_cxx::__freeres() and __libc_freeres() once -+ the program exits. - ------------------------------------------------------------------ */ - --void VG_NOTIFY_ON_LOAD(freeres)( void ); --void VG_NOTIFY_ON_LOAD(freeres)( void ) -+void VG_NOTIFY_ON_LOAD(freeres)(Vg_FreeresToRun to_run); -+void VG_NOTIFY_ON_LOAD(freeres)(Vg_FreeresToRun to_run) - { - # if !defined(__UCLIBC__) \ - && !defined(VGPV_arm_linux_android) \ - && !defined(VGPV_x86_linux_android) \ - && !defined(VGPV_mips32_linux_android) \ - && !defined(VGPV_arm64_linux_android) -+ -+ /* g++ mangled __gnu_cxx::__freeres yields -> _ZN9__gnu_cxx9__freeresEv */ -+ extern void _ZN9__gnu_cxx9__freeresEv(void) __attribute__((weak)); -+ if (((to_run & VG_RUN__GNU_CXX__FREERES) != 0) && -+ (_ZN9__gnu_cxx9__freeresEv != NULL)) { -+ _ZN9__gnu_cxx9__freeresEv(); -+ } -+ -+# if defined(VGO_linux) -+ /* __libc_freeres() not yet available on Solaris. */ - extern void __libc_freeres(void); -- __libc_freeres(); -+ if ((to_run & VG_RUN__LIBC_FREERES) != 0) { -+ __libc_freeres(); -+ } - # endif -- VALGRIND_DO_CLIENT_REQUEST_STMT(VG_USERREQ__LIBC_FREERES_DONE, -- 0, 0, 0, 0, 0); -+# endif -+ -+ VALGRIND_DO_CLIENT_REQUEST_STMT(VG_USERREQ__FREERES_DONE, 0, 0, 0, 0, 0); - /*NOTREACHED*/ - *(volatile int *)0 = 'x'; - } - -+#endif // VGO_linux || VGO_solaris -+ -+#if defined(VGO_linux) -+ - /* --------------------------------------------------------------------- - Wrapper for indirect functions which need to be redirected. - ------------------------------------------------------------------ */ -diff --git a/docs/xml/manual-core.xml b/docs/xml/manual-core.xml -index 758e2f4..7628836 100644 ---- a/docs/xml/manual-core.xml -+++ b/docs/xml/manual-core.xml -@@ -1930,6 +1930,37 @@ need to use them. - - - -+ -+ -+ -+ -+ -+ This option is only relevant when running Valgrind on Linux -+ or Solaris C++ programs. -+ -+ The GNU Standard C++ library (libstdc++.so), -+ which is used by all C++ programs compiled with g++, may allocate memory -+ for its own uses. Usually it doesn't bother to free that memory when -+ the program ends—there would be no point, since the kernel reclaims -+ all process resources when a process exits anyway, so it would -+ just slow things down. -+ -+ The gcc authors realised that this behaviour causes leak -+ checkers, such as Valgrind, to falsely report leaks in libstdc++, when -+ a leak check is done at exit. In order to avoid this, they -+ provided a routine called __gnu_cxx::__freeres -+ specifically to make libstdc++ release all memory it has allocated. -+ Memcheck therefore tries to run -+ __gnu_cxx::__freeres at exit. -+ -+ For the sake of flexibility and unforeseen problems with -+ __gnu_cxx::__freeres, option -+ exists, -+ although at the cost of possibly falsely reporting space leaks in -+ libstdc++.so. -+ -+ -+ - - - -diff --git a/exp-dhat/dh_main.c b/exp-dhat/dh_main.c -index e636ccb..3476cd9 100644 ---- a/exp-dhat/dh_main.c -+++ b/exp-dhat/dh_main.c -@@ -1358,6 +1358,7 @@ static void dh_pre_clo_init(void) - //zz - // Needs. - VG_(needs_libc_freeres)(); -+ VG_(needs_cxx_freeres)(); - VG_(needs_command_line_options)(dh_process_cmd_line_option, - dh_print_usage, - dh_print_debug_usage); -diff --git a/include/pub_tool_tooliface.h b/include/pub_tool_tooliface.h -index 8df00b5..f7805e9 100644 ---- a/include/pub_tool_tooliface.h -+++ b/include/pub_tool_tooliface.h -@@ -263,6 +263,9 @@ extern void VG_(details_bug_reports_to) ( const HChar* bug_reports_to ); - /* Should __libc_freeres() be run? Bugs in it can crash the tool. */ - extern void VG_(needs_libc_freeres) ( void ); - -+/* Should __gnu_cxx::__freeres() be run? Bugs in it can crash the tool. */ -+extern void VG_(needs_cxx_freeres) ( void ); -+ - /* Want to have errors detected by Valgrind's core reported? Includes: - - pthread API errors (many; eg. unlocking a non-locked mutex) - [currently disabled] -diff --git a/massif/ms_main.c b/massif/ms_main.c -index 66f9be9..628a37b 100644 ---- a/massif/ms_main.c -+++ b/massif/ms_main.c -@@ -2569,6 +2569,7 @@ static void ms_pre_clo_init(void) - - // Needs. - VG_(needs_libc_freeres)(); -+ VG_(needs_cxx_freeres)(); - VG_(needs_command_line_options)(ms_process_cmd_line_option, - ms_print_usage, - ms_print_debug_usage); -diff --git a/memcheck/mc_main.c b/memcheck/mc_main.c -index 99421f5..5464a06 100644 ---- a/memcheck/mc_main.c -+++ b/memcheck/mc_main.c -@@ -7745,6 +7745,7 @@ static void mc_pre_clo_init(void) - MC_(print_extra_suppression_use), - MC_(update_extra_suppression_use)); - VG_(needs_libc_freeres) (); -+ VG_(needs_cxx_freeres) (); - VG_(needs_command_line_options)(mc_process_cmd_line_options, - mc_print_usage, - mc_print_debug_usage); -diff --git a/none/tests/cmdline1.stdout.exp b/none/tests/cmdline1.stdout.exp -index cc25a16..0faec69 100644 ---- a/none/tests/cmdline1.stdout.exp -+++ b/none/tests/cmdline1.stdout.exp -@@ -90,6 +90,8 @@ usage: valgrind [options] prog-and-args - --vgdb-shadow-registers=no|yes let gdb see the shadow registers [no] - --vgdb-prefix= prefix for vgdb FIFOs [.../vgdb-pipe] - --run-libc-freeres=no|yes free up glibc memory at exit on Linux? [yes] -+ --run-cxx-freeres=no|yes free up libstdc++ memory at exit on Linux -+ and Solaris? [yes] - --sim-hints=hint1,hint2,... activate unusual sim behaviours [none] - where hint is one of: - lax-ioctls lax-doors fuse-compatible enable-outer -diff --git a/none/tests/cmdline2.stdout.exp b/none/tests/cmdline2.stdout.exp -index 580fa19..b124f20 100644 ---- a/none/tests/cmdline2.stdout.exp -+++ b/none/tests/cmdline2.stdout.exp -@@ -90,6 +90,8 @@ usage: valgrind [options] prog-and-args - --vgdb-shadow-registers=no|yes let gdb see the shadow registers [no] - --vgdb-prefix= prefix for vgdb FIFOs [.../vgdb-pipe] - --run-libc-freeres=no|yes free up glibc memory at exit on Linux? [yes] -+ --run-cxx-freeres=no|yes free up libstdc++ memory at exit on Linux -+ and Solaris? [yes] - --sim-hints=hint1,hint2,... activate unusual sim behaviours [none] - where hint is one of: - lax-ioctls lax-doors fuse-compatible enable-outer -commit 315cb2823de2e3006ec454b278a9f9e474520f57 -Author: iraisr -Date: Fri Apr 8 21:29:15 2016 +0000 - - Follow up to bug 345307. - Passing parameter on x86 architecture was wrong in final_tidyup(). - - - git-svn-id: svn://svn.valgrind.org/valgrind/trunk@15854 a5019735-40e9-0310-863c-91ae7b9d1cf9 - -diff --git a/coregrind/m_main.c b/coregrind/m_main.c -index 8cfaf82..80f347e 100644 ---- a/coregrind/m_main.c -+++ b/coregrind/m_main.c -@@ -2819,9 +2819,9 @@ static void final_tidyup(ThreadId tid) - /* Pass a parameter to freeres_wrapper(). */ - # if defined(VGA_x86) - Addr sp = VG_(threads)[tid].arch.vex.guest_ESP; -- sp = sp - sizeof(UWord); - *((UWord *) sp) = to_run; - VG_TRACK(post_mem_write, Vg_CoreClientReq, tid, sp, sizeof(UWord)); -+ sp = sp - sizeof(UWord); - VG_(threads)[tid].arch.vex.guest_ESP = sp; - VG_TRACK(post_reg_write, Vg_CoreClientReq, tid, - offsetof(VexGuestX86State, guest_ESP), diff --git a/SOURCES/valgrind-3.11.0-deduppoolalloc.patch b/SOURCES/valgrind-3.11.0-deduppoolalloc.patch deleted file mode 100644 index 46b64a0..0000000 --- a/SOURCES/valgrind-3.11.0-deduppoolalloc.patch +++ /dev/null @@ -1,56 +0,0 @@ -commit 46809ccf0281e7556e55f50f25ad5c811fad6ba3 -Author: philippe -Date: Sun Feb 14 22:14:19 2016 +0000 - - Fix Bug 359133 - m_deduppoolalloc.c:258 (vgPlain_allocEltDedupPA): Assertion 'eltSzB <= ddpa->poolSzB' failed. - - When the elt to allocate is bigger than the pool size, allocate - a specific pool only for this element. - - - - git-svn-id: svn://svn.valgrind.org/valgrind/trunk@15787 a5019735-40e9-0310-863c-91ae7b9d1cf9 - -diff --git a/coregrind/m_deduppoolalloc.c b/coregrind/m_deduppoolalloc.c -index 92016d8..f7ebd27 100644 ---- a/coregrind/m_deduppoolalloc.c -+++ b/coregrind/m_deduppoolalloc.c -@@ -255,7 +255,6 @@ const void* VG_(allocEltDedupPA) (DedupPoolAlloc *ddpa, SizeT eltSzB, - ht_node *ht_ins; - vg_assert(ddpa); - vg_assert(ddpa->ht_elements); -- vg_assert (eltSzB <= ddpa->poolSzB); - - ddpa->nr_alloc_calls++; - -@@ -272,15 +271,24 @@ const void* VG_(allocEltDedupPA) (DedupPoolAlloc *ddpa, SizeT eltSzB, - and insert it in the hash table of inserted elements. */ - - // Add a new pool or grow pool if not enough space in the current pool -- if (UNLIKELY(ddpa->curpool_free == NULL -- || ddpa->curpool_free + eltSzB - 1 > ddpa->curpool_limit)) { -- ddpa_add_new_pool_or_grow (ddpa); -+ if (eltSzB + ddpa->eltAlign > ddpa->poolSzB) { -+ // Element (+eltAlign for worst case) bigger than the pool size -+ // => allocate a specific pool just for this element -+ UChar *newpool = ddpa->alloc_fn (ddpa->cc, eltSzB + ddpa->eltAlign); -+ /* add to our collection of pools */ -+ VG_(addToXA)( ddpa->pools, &newpool ); -+ elt_ins = ddpa_align (ddpa, newpool); -+ } else { -+ if (UNLIKELY(ddpa->curpool_free == NULL -+ || ddpa->curpool_free + eltSzB - 1 > ddpa->curpool_limit)) { -+ ddpa_add_new_pool_or_grow (ddpa); -+ } -+ elt_ins = ddpa->curpool_free; -+ ddpa->curpool_free = ddpa_align(ddpa, ddpa->curpool_free + eltSzB); - } - -- elt_ins = ddpa->curpool_free; -- VG_(memcpy)(elt_ins, elt, eltSzB); -- ddpa->curpool_free = ddpa_align(ddpa, ddpa->curpool_free + eltSzB); - -+ VG_(memcpy)(elt_ins, elt, eltSzB); - ht_ins = VG_(allocEltPA) (ddpa->ht_node_pa); - ht_ins->key = ht_elt.key; - ht_ins->eltSzB = eltSzB; diff --git a/SOURCES/valgrind-3.11.0-drd_std_thread.patch b/SOURCES/valgrind-3.11.0-drd_std_thread.patch deleted file mode 100644 index a103265..0000000 --- a/SOURCES/valgrind-3.11.0-drd_std_thread.patch +++ /dev/null @@ -1,72 +0,0 @@ -commit ef3ac601dfcd45b2e27bd09b84e85607ebd5183f -Author: bart -Date: Mon Jan 25 04:27:25 2016 +0000 - - configure.ac: Port to gcc 5 - - Apparently gcc 5 behaves as follows: - $ gcc -dumpversion - 5 - - - - git-svn-id: svn://svn.valgrind.org/valgrind/trunk@15773 a5019735-40e9-0310-863c-91ae7b9d1cf9 - -diff --git a/configure.ac b/configure.ac -index e93c882..d621dca 100644 ---- a/configure.ac -+++ b/configure.ac -@@ -160,7 +160,7 @@ case "${is_clang}-${gcc_version}" in - icc-1[[3-9]].*) - AC_MSG_RESULT([ok (ICC version ${gcc_version})]) - ;; -- notclang-[[3-9]].*|notclang-[[1-9][0-9]]*) -+ notclang-[[3-9]]|notclang-[[3-9]].*|notclang-[[1-9][0-9]]*) - AC_MSG_RESULT([ok (${gcc_version})]) - ;; - clang-2.9|clang-[[3-9]].*|clang-[[1-9][0-9]]*) -diff --git a/drd/tests/std_thread.cpp b/drd/tests/std_thread.cpp -index 9275c3a..6af7455 100644 ---- a/drd/tests/std_thread.cpp -+++ b/drd/tests/std_thread.cpp -@@ -21,6 +21,7 @@ int main(int argc, char** argv) - return 0; - } - -+#if defined(__GNUC__) && __GNUC__ -0 < 6 - // - // From libstdc++-v3/src/c++11/thread.cc - // -@@ -65,3 +66,4 @@ namespace std - } - } - } -+#endif -diff --git a/drd/tests/std_thread2.cpp b/drd/tests/std_thread2.cpp -index 9861c61..7de4f9d 100644 ---- a/drd/tests/std_thread2.cpp -+++ b/drd/tests/std_thread2.cpp -@@ -26,6 +26,7 @@ int main(int argc, char** argv) - return 0; - } - -+#if defined(__GNUC__) && __GNUC__ -0 < 6 - // - // From libstdc++-v3/src/c++11/thread.cc - // -@@ -70,3 +71,4 @@ namespace std - } - } - } -+#endif ---- valgrind-3.11.0.orig/configure 2016-01-25 21:16:13.019563625 +0100 -+++ valgrind-3.11.0/configure 2016-01-25 21:17:31.120337140 +0100 -@@ -5453,7 +5453,7 @@ - { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok (ICC version ${gcc_version})" >&5 - $as_echo "ok (ICC version ${gcc_version})" >&6; } - ;; -- notclang-[3-9].*|notclang-[1-9][0-9]*) -+ notclang-[3-9]|notclang-[3-9].*|notclang-[1-9][0-9]*) - { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok (${gcc_version})" >&5 - $as_echo "ok (${gcc_version})" >&6; } - ;; diff --git a/SOURCES/valgrind-3.11.0-fclose.patch b/SOURCES/valgrind-3.11.0-fclose.patch deleted file mode 100644 index d79fa93..0000000 --- a/SOURCES/valgrind-3.11.0-fclose.patch +++ /dev/null @@ -1,21 +0,0 @@ -commit 8c8306308e05e92de228de57e832c85fb976124b -Author: florian -Date: Tue Jan 12 14:32:05 2016 +0000 - - VG_(fclose) ought to close the file, you silly. Fixes BZ #357887. - - - git-svn-id: svn://svn.valgrind.org/valgrind/trunk@15755 a5019735-40e9-0310-863c-91ae7b9d1cf9 - -diff --git a/coregrind/m_libcprint.c b/coregrind/m_libcprint.c -index 1283de5..ce2c038 100644 ---- a/coregrind/m_libcprint.c -+++ b/coregrind/m_libcprint.c -@@ -359,6 +359,7 @@ void VG_(fclose)( VgFile *fp ) - if (fp->num_chars) - VG_(write)(fp->fd, fp->buf, fp->num_chars); - -+ VG_(close)(fp->fd); - VG_(free)(fp); - } - diff --git a/SOURCES/valgrind-3.11.0-futex.patch b/SOURCES/valgrind-3.11.0-futex.patch deleted file mode 100644 index 50b4e9b..0000000 --- a/SOURCES/valgrind-3.11.0-futex.patch +++ /dev/null @@ -1,50 +0,0 @@ -commit 9a447c6472947bce97e8b90b7f3f97bd7cd9f3ed -Author: mjw -Date: Wed Feb 17 20:53:34 2016 +0000 - - Bug 359201 futex syscall skips argument 5 if op is FUTEX_WAIT_BITSET - - git-svn-id: svn://svn.valgrind.org/valgrind/trunk@15793 a5019735-40e9-0310-863c-91ae7b9d1cf9 - -commit f71fd226f26ab49a615d7886ff2aeadc9915c7c1 -Author: mjw -Date: Thu Feb 18 11:14:47 2016 +0000 - - Bug 359201 followup. futex skips argument 5 if op is FUTEX_WAIT_BITSET. - - The original fix in svn r15793 read argument 6 separately by using PRA6 - unconditionally. This is wrong. We need to first check whether a - track_pre_reg_read callback is registered (only memcheck does). - The PRE_REG_READX macro already had this check. Just add the same - before calling PRA6. Thanks to Tom Hughes for noticing. Without this - helgrind/tests/cond_timedwait_test and drd/tests/pth_inconsistent_cond_wait - regtests would fail. - - git-svn-id: svn://svn.valgrind.org/valgrind/trunk@15795 a5019735-40e9-0310-8 - -diff --git a/coregrind/m_syswrap/syswrap-linux.c b/coregrind/m_syswrap/syswrap-linux.c -index f796969..f2d1076 100644 ---- a/coregrind/m_syswrap/syswrap-linux.c -+++ b/coregrind/m_syswrap/syswrap-linux.c -@@ -1154,13 +1154,17 @@ PRE(sys_futex) - return; - } - if (*(vki_u32 *)ARG1 != ARG3) { -- PRE_REG_READ5(long, "futex", -+ PRE_REG_READ4(long, "futex", - vki_u32 *, futex, int, op, int, val, -- struct timespec *, utime, int, dummy); -+ struct timespec *, utime); - } else { -- PRE_REG_READ6(long, "futex", -+ /* Note argument 5 is unused, but argument 6 is used. -+ So we cannot just PRE_REG_READ6. Read argument 6 separately. */ -+ PRE_REG_READ4(long, "futex", - vki_u32 *, futex, int, op, int, val, -- struct timespec *, utime, int, dummy, int, val3); -+ struct timespec *, utime); -+ if (VG_(tdict).track_pre_reg_read) -+ PRA6("futex",int,val3); - } - break; - case VKI_FUTEX_WAKE_BITSET: diff --git a/SOURCES/valgrind-3.11.0-gdb-test-filters.patch b/SOURCES/valgrind-3.11.0-gdb-test-filters.patch deleted file mode 100644 index 739c58c..0000000 --- a/SOURCES/valgrind-3.11.0-gdb-test-filters.patch +++ /dev/null @@ -1,59 +0,0 @@ -commit c4ada110b0de0a56ec41ca0babc4effce4a4fc04 -Author: mjw -Date: Sun Apr 3 15:24:20 2016 +0000 - - Update gdbserver_tests filter for newer GDB version. - - - Newer gdb say Thread .... hit Breakpoint, we expect just Breakpoint. - - We expect "Program received" instead of "Thread .... received" - - Ordering of ' Thread .... (tid .' might differ between gdb version, - so remove all such lines except the "current" one (starts with '*'). - - git-svn-id: svn://svn.valgrind.org/valgrind/trunk@15844 a5019735-40e9-0310-863c-91ae7b9d1cf9 - -diff --git a/gdbserver_tests/filter_gdb b/gdbserver_tests/filter_gdb -index df9479f..7177720 100755 ---- a/gdbserver_tests/filter_gdb -+++ b/gdbserver_tests/filter_gdb -@@ -62,6 +62,10 @@ sed -e '/^\ \ \ \ \.\.\.$/d' | - # gdb might also try to show the "entry value" p=p@entry=0x... - # Some gdb versions don't show the source line:number after switching - # threads in #0 0x........ in do_burn (). -+# Newer gdb say Thread .... hit Breakpoint, we expect just Breakpoint. -+# We expect "Program received" instead of "Thread .... received" -+# Ordering of ' Thread .... (tid .' might differ between gdb version, -+# so remove all such lines except the "current" one (starts with '*'). - sed -e '/Remote debugging using/,/vgdb launched process attached/d' \ - -e '/filter_gdb BEGIN drop/,/filter_gdb END drop/d' \ - -e 's/^\[?1034hReading symbols/Reading symbols/' \ -@@ -74,6 +78,8 @@ sed -e '/Remote debugging using/,/vgdb launched process attached/d' - -e '/\[Switching to Thread ....\]/d' \ - -e 's/\(\[Switching to thread [1234] (Thread ....)\]\)#0/\1\n#0/' \ - -e 's/^\([ \* ] [0-9] Thread .... (tid [0-9] VgTs_WaitSys) 0x........ in\).*$/\1 syscall .../' \ -+ -e 's/^Thread .... hit Breakpoint /Breakpoint /' \ -+ -e 's/^Thread .... received /Program received /' \ - -e 's/#[0-9]\( 0x........ in sleeper_or_burner\)/#.\1/' \ - -e 's/\(#0 0x........ in do_burn ()\) at sleepers.c:41/\1/' \ - -e '/^Reading symbols from .*\.\.\.done\./d' \ -@@ -115,6 +121,7 @@ sed -e '/Remote debugging using/,/vgdb launched process attached/d' - -e 's/\(^Breakpoint 1, tls_ptr (p=0x........\) \() at tls.c:55\)/\1\2/' \ - -e '/Id Target Id Frame/d' \ - -e 's/^\([ \*] [1234] \) *Thread /\1Thread /' \ -+ -e 's/^ [0-9] Thread .... (tid [0-9] .*$//' \ - -e 's/VgTs_WaitSys) 0x/VgTs_WaitSys) 0x/' \ - -e '/Cannot access memory at address 0x......../d' \ - -e '/\[New Thread/d' \ -diff --git a/gdbserver_tests/nlcontrolc.stdoutB.exp b/gdbserver_tests/nlcontrolc.stdoutB.exp -index a1013ce..e334fd0 100644 ---- a/gdbserver_tests/nlcontrolc.stdoutB.exp -+++ b/gdbserver_tests/nlcontrolc.stdoutB.exp -@@ -1,9 +1,6 @@ - Continuing. - Program received signal SIGTRAP, Trace/breakpoint trap. - 0x........ in syscall ... -- 4 Thread .... (tid 4 VgTs_WaitSys) 0x........ in syscall ... -- 3 Thread .... (tid 3 VgTs_WaitSys) 0x........ in syscall ... -- 2 Thread .... (tid 2 VgTs_WaitSys) 0x........ in syscall ... - * 1 Thread .... (tid 1 VgTs_WaitSys) 0x........ in syscall ... - $1 = 0 - $2 = 0 diff --git a/SOURCES/valgrind-3.11.0-isZeroU.patch b/SOURCES/valgrind-3.11.0-isZeroU.patch deleted file mode 100644 index a58998f..0000000 --- a/SOURCES/valgrind-3.11.0-isZeroU.patch +++ /dev/null @@ -1,21 +0,0 @@ -commit 770707cd209a94b9fe19273b68ddb1cb84191399 -Author: sewardj -Date: Mon Mar 21 19:29:20 2016 +0000 - - Make isZeroU handle the V256 case. Fixes #356393. - - - git-svn-id: svn://svn.valgrind.org/vex/trunk@3213 8f6e269a-dfd6-0310-a8e1-e2731360e62c - -diff --git a/VEX/priv/ir_opt.c b/VEX/priv/ir_opt.c -index 7a7246a..4266823 100644 ---- a/VEX/priv/ir_opt.c -+++ b/VEX/priv/ir_opt.c -@@ -1223,6 +1223,7 @@ static Bool isZeroU ( IRExpr* e ) - case Ico_U16: return toBool( e->Iex.Const.con->Ico.U16 == 0); - case Ico_U32: return toBool( e->Iex.Const.con->Ico.U32 == 0); - case Ico_U64: return toBool( e->Iex.Const.con->Ico.U64 == 0); -+ case Ico_V256: return toBool( e->Iex.Const.con->Ico.V256 == 0x00000000); - default: vpanic("isZeroU"); - } - } diff --git a/SOURCES/valgrind-3.11.0-is_stmt.patch b/SOURCES/valgrind-3.11.0-is_stmt.patch deleted file mode 100644 index 35530d8..0000000 --- a/SOURCES/valgrind-3.11.0-is_stmt.patch +++ /dev/null @@ -1,254 +0,0 @@ -commit 434c7524413a8a47ae40e4b141f5821eabc506b7 -Author: iraisr -Date: Fri Dec 4 13:14:10 2015 +0000 - - Dwarf line info reader now correctly interprets 'is_stmt' register - - Line numbers should correctly reflect all instructions belonging to a source line, - regardless of is_stmt value. Previously only instructions covered by - 'is_stmt = 1' were attributed to a source line. - - Fixes BZ#356044 - - - git-svn-id: svn://svn.valgrind.org/valgrind/trunk@15741 a5019735-40e9-0310-863c-91ae7b9d1cf9 - -diff --git a/coregrind/m_debuginfo/readdwarf.c b/coregrind/m_debuginfo/readdwarf.c -index 88d49e9..a95bb3d 100644 ---- a/coregrind/m_debuginfo/readdwarf.c -+++ b/coregrind/m_debuginfo/readdwarf.c -@@ -91,7 +91,6 @@ typedef struct - ULong li_header_length; - UChar li_min_insn_length; - UChar li_max_ops_per_insn; -- UChar li_default_is_stmt; - Int li_line_base; - UChar li_line_range; - UChar li_opcode_base; -@@ -150,7 +149,6 @@ typedef struct - UInt file; - UInt line; - UInt column; -- Int is_stmt; - Int basic_block; - UChar end_sequence; - } LineSMR; -@@ -230,7 +228,7 @@ ULong read_initial_length_field ( DiCursor p_img, /*OUT*/Bool* is64 ) - static LineSMR state_machine_regs; - - static --void reset_state_machine ( Int is_stmt ) -+void reset_state_machine ( void ) - { - if (0) VG_(printf)("smr.a := %p (reset)\n", NULL ); - state_machine_regs.last_address = 0; -@@ -240,7 +238,6 @@ void reset_state_machine ( Int is_stmt ) - state_machine_regs.file = 1; - state_machine_regs.line = 1; - state_machine_regs.column = 0; -- state_machine_regs.is_stmt = is_stmt; - state_machine_regs.basic_block = 0; - state_machine_regs.end_sequence = 0; - } -@@ -253,7 +250,7 @@ void reset_state_machine ( Int is_stmt ) - static - void process_extended_line_op( struct _DebugInfo* di, - XArray* fndn_ix_xa, -- DiCursor* data, Int is_stmt) -+ DiCursor* data ) - { - UInt len = step_leb128U(data); - if (len == 0) { -@@ -275,19 +272,17 @@ void process_extended_line_op( struct _DebugInfo* di, - reset_state_machine below */ - state_machine_regs.end_sequence = 1; - -- if (state_machine_regs.is_stmt) { -- if (state_machine_regs.last_address) { -- ML_(addLineInfo) ( -- di, -- safe_fndn_ix (fndn_ix_xa, -- state_machine_regs.last_file), -- di->text_debug_bias + state_machine_regs.last_address, -- di->text_debug_bias + state_machine_regs.address, -- state_machine_regs.last_line, 0 -- ); -- } -+ if (state_machine_regs.last_address) { -+ ML_(addLineInfo)( -+ di, -+ safe_fndn_ix(fndn_ix_xa, -+ state_machine_regs.last_file), -+ di->text_debug_bias + state_machine_regs.last_address, -+ di->text_debug_bias + state_machine_regs.address, -+ state_machine_regs.last_line, 0 -+ ); - } -- reset_state_machine (is_stmt); -+ reset_state_machine(); - if (di->ddump_line) - VG_(printf)(" Extended opcode %d: End of Sequence\n\n", - (Int)op_code); -@@ -446,29 +441,9 @@ void read_dwarf2_lineblock ( struct _DebugInfo* di, - info.li_max_ops_per_insn = 1; - } - -- info.li_default_is_stmt = ML_(cur_step_UChar)(&external); -- if (di->ddump_line) -- VG_(printf)(" Initial value of 'is_stmt': %d\n", -- (Int)info.li_default_is_stmt); -- -- /* Josef Weidendorfer (20021021) writes: -- -- It seems to me that the Intel Fortran compiler generates bad -- DWARF2 line info code: It sets "is_stmt" of the state machine in -- the line info reader to be always false. Thus, there is never -- a statement boundary generated and therefore never an instruction -- range/line number mapping generated for valgrind. -- -- Please have a look at the DWARF2 specification, Ch. 6.2 -- (x86.ddj.com/ftp/manuals/tools/dwarf.pdf). Perhaps I understand -- this wrong, but I don't think so. -- -- I just had a look at the GDB DWARF2 reader... They completely -- ignore "is_stmt" when recording line info ;-) That's the reason -- "objdump -S" works on files from the intel fortran compiler. -- -- Therefore: */ -- info.li_default_is_stmt = True; -+ /* Register is_stmt is not tracked as we are interested only -+ in pc -> line info mapping and not other debugger features. */ -+ /* default_is_stmt = */ ML_(cur_step_UChar)(&external); - - /* JRS: changed (UInt*) to (UChar*) */ - info.li_line_base = ML_(cur_step_UChar)(&external); -@@ -495,7 +470,7 @@ void read_dwarf2_lineblock ( struct _DebugInfo* di, - DiCursor end_of_sequence - = ML_(cur_plus)(data, info.li_length + (is64 ? 12 : 4)); - -- reset_state_machine (info.li_default_is_stmt); -+ reset_state_machine(); - - /* Read the contents of the Opcodes table. */ - DiCursor standard_opcodes = external; -@@ -632,55 +607,49 @@ void read_dwarf2_lineblock ( struct _DebugInfo* di, - (Int)op_code, advAddr, state_machine_regs.address, - (Int)adv, (Int)state_machine_regs.line ); - -- if (state_machine_regs.is_stmt) { -- /* only add a statement if there was a previous boundary */ -- if (state_machine_regs.last_address) { -- ML_(addLineInfo)( -- di, -- safe_fndn_ix (fndn_ix_xa, -- state_machine_regs.last_file), -- di->text_debug_bias + state_machine_regs.last_address, -- di->text_debug_bias + state_machine_regs.address, -- state_machine_regs.last_line, -- 0 -- ); -- } -- state_machine_regs.last_address = state_machine_regs.address; -- state_machine_regs.last_file = state_machine_regs.file; -- state_machine_regs.last_line = state_machine_regs.line; -+ /* only add a statement if there was a previous boundary */ -+ if (state_machine_regs.last_address) { -+ ML_(addLineInfo)( -+ di, -+ safe_fndn_ix(fndn_ix_xa, -+ state_machine_regs.last_file), -+ di->text_debug_bias + state_machine_regs.last_address, -+ di->text_debug_bias + state_machine_regs.address, -+ state_machine_regs.last_line, -+ 0 -+ ); - } -+ state_machine_regs.last_address = state_machine_regs.address; -+ state_machine_regs.last_file = state_machine_regs.file; -+ state_machine_regs.last_line = state_machine_regs.line; - } - - else { /* ! (op_code >= info.li_opcode_base) */ - - switch (op_code) { - case DW_LNS_extended_op: -- process_extended_line_op ( -- di, fndn_ix_xa, -- &data, info.li_default_is_stmt); -+ process_extended_line_op(di, fndn_ix_xa, &data); - break; - - case DW_LNS_copy: - if (0) VG_(printf)("1002: di->o %#lx, smr.a %#lx\n", - (UWord)di->text_debug_bias, - state_machine_regs.address ); -- if (state_machine_regs.is_stmt) { -- /* only add a statement if there was a previous boundary */ -- if (state_machine_regs.last_address) { -- ML_(addLineInfo)( -- di, -- safe_fndn_ix (fndn_ix_xa, -- state_machine_regs.last_file), -- di->text_debug_bias + state_machine_regs.last_address, -- di->text_debug_bias + state_machine_regs.address, -- state_machine_regs.last_line, -- 0 -- ); -- } -- state_machine_regs.last_address = state_machine_regs.address; -- state_machine_regs.last_file = state_machine_regs.file; -- state_machine_regs.last_line = state_machine_regs.line; -+ /* only add a statement if there was a previous boundary */ -+ if (state_machine_regs.last_address) { -+ ML_(addLineInfo)( -+ di, -+ safe_fndn_ix(fndn_ix_xa, -+ state_machine_regs.last_file), -+ di->text_debug_bias + state_machine_regs.last_address, -+ di->text_debug_bias + state_machine_regs.address, -+ state_machine_regs.last_line, -+ 0 -+ ); - } -+ state_machine_regs.last_address = state_machine_regs.address; -+ state_machine_regs.last_file = state_machine_regs.file; -+ state_machine_regs.last_line = state_machine_regs.line; - state_machine_regs.basic_block = 0; /* JRS added */ - if (di->ddump_line) - VG_(printf)(" Copy\n"); -@@ -719,9 +688,6 @@ void read_dwarf2_lineblock ( struct _DebugInfo* di, - break; - } - case DW_LNS_negate_stmt: { -- Int adv = state_machine_regs.is_stmt; -- adv = ! adv; -- state_machine_regs.is_stmt = adv; - if (di->ddump_line) - VG_(printf)(" DWARF2-line: negate_stmt\n"); - break; -diff --git a/coregrind/m_debuginfo/storage.c b/coregrind/m_debuginfo/storage.c -index 7b2e26a..e6a9856 100644 ---- a/coregrind/m_debuginfo/storage.c -+++ b/coregrind/m_debuginfo/storage.c -@@ -419,6 +419,21 @@ static void addLoc ( struct _DebugInfo* di, DiLoc* loc, UInt fndn_ix ) - /* Zero-sized locs should have been ignored earlier */ - vg_assert(loc->size > 0); - -+ /* Check if the last entry has adjacent range for the same line. */ -+ if (di->loctab_used > 0) { -+ DiLoc *previous = &di->loctab[di->loctab_used - 1]; -+ if ((previous->lineno == loc->lineno) -+ && (previous->addr + previous->size == loc->addr)) { -+ if (0) -+ VG_(printf)("Merging previous: addr %#lx, size %d, line %d, " -+ "with current: addr %#lx, size %d, line %d.\n", -+ previous->addr, previous->size, previous->lineno, -+ loc->addr, loc->size, loc->lineno); -+ previous->size += loc->size; -+ return; -+ } -+ } -+ - if (di->loctab_used == di->loctab_size) { - UInt new_sz; - DiLoc* new_loctab; diff --git a/SOURCES/valgrind-3.11.0-libstdc++-supp.patch b/SOURCES/valgrind-3.11.0-libstdc++-supp.patch deleted file mode 100644 index 2464431..0000000 --- a/SOURCES/valgrind-3.11.0-libstdc++-supp.patch +++ /dev/null @@ -1,109 +0,0 @@ -commit 578a0ec2872203dd4a741f7a445056c80320e2c8 -Author: Mark Wielaard -Date: Thu Mar 10 21:36:00 2016 +0100 - - Add libstdc++.supp for still reachable leaks from global memory cache. - - Contributed by Björn "besser82" Esser . - -diff --git a/configure.ac b/configure.ac -index 888a308..01012e1 100644 ---- a/configure.ac -+++ b/configure.ac -@@ -1060,6 +1060,9 @@ if test "$VGCONF_OS" != "solaris"; then - DEFAULT_SUPP="exp-sgcheck.supp ${DEFAULT_SUPP}" - fi - -+# Suppression file for libstdc++ until we solve KDE#345307 -+DEFAULT_SUPP="libstdc++.supp ${DEFAULT_SUPP}" -+ - - #---------------------------------------------------------------------------- - # Platform variants? -diff --git a/libstdc++.supp b/libstdc++.supp -new file mode 100644 -index 0000000..f04f90d ---- /dev/null -+++ b/libstdc++.supp -@@ -0,0 +1,68 @@ -+ -+# Some programs are using the C++ STL and string classes. -+# Valgrind reports 'still reachable' memory leaks involving these classes -+# at the exit of the program, but there should be none. -+# -+# Many implementations of the C++ standard libraries use their own memory -+# pool allocators. Memory for quite a number of destructed objects is not -+# immediately freed and given back to the OS, but kept in the pool(s) for -+# later re-use. The fact that the pools are not freed at the exit of the -+# program cause Valgrind to report this memory as still reachable. -+# -+# The behavior not to free pools at the exit could be called a bug of the -+# library though. -+# -+# Using GCC, you can force the STL to use malloc and to free memory as soon -+# as possible by globally disabling memory caching. Beware! Doing so will -+# probably slow down your program, sometimes drastically. -+# -+# There are other ways to disable memory pooling: using the malloc_alloc -+# template with your objects (not portable, but should work for GCC) or -+# even writing your own memory allocators. But beware: allocators belong -+# to the more messy parts of the STL and people went to great lengths to -+# make the STL portable across platforms. Chances are good that your -+# solution will work on your platform, but not on others. -+# -+# 72,704 bytes in 1 blocks are still reachable in loss record 1 of 1 -+# at 0x4C28D06: malloc (vg_replace_malloc.c:299) -+# by 0x50C317F: ??? (in /usr/lib64/libstdc++.so.6.0.21) -+# by 0x400F759: call_init.part.0 (dl-init.c:72) -+# by 0x400F86A: call_init (dl-init.c:30) -+# by 0x400F86A: _dl_init (dl-init.c:120) -+# by 0x4000CB9: ??? (in /usr/lib64/ld-2.22.so) -+# -+# HEAP SUMMARY: -+# in use at exit: 72,704 bytes in 1 blocks -+# total heap usage: 4 allocs, 3 frees, 72,864 bytes allocated -+# -+# LEAK SUMMARY: -+# definitely lost: 0 bytes in 0 blocks -+# indirectly lost: 0 bytes in 0 blocks -+# possibly lost: 0 bytes in 0 blocks -+# still reachable: 72,704 bytes in 1 blocks -+# suppressed: 0 bytes in 0 blocks -+ -+{ -+ malloc-leaks-cxx-stl-string-classes -+ Memcheck:Leak -+ match-leak-kinds: reachable -+ fun:malloc -+ obj:*/*lib*/libstdc++.so* -+ fun:call_init.part.0 -+ fun:call_init -+ fun:_dl_init -+ obj:/usr/*lib*/ld-2.*.so -+} -+{ -+ malloc-leaks-cxx-stl-string-classes-debug -+ Memcheck:Leak -+ match-leak-kinds: reachable -+ fun:malloc -+ fun:pool -+ fun:__static_initialization_and_destruction_0 -+ fun:_GLOBAL__sub_I_eh_alloc.cc -+ fun:call_init.part.0 -+ fun:call_init -+ fun:_dl_init -+ obj:/usr/*lib*/ld-2.*.so -+} -diff -ru valgrind-3.11.0.orig/configure valgrind-3.11.0/configure ---- valgrind-3.11.0.orig/configure 2016-03-10 22:08:46.236519482 +0100 -+++ valgrind-3.11.0/configure 2016-03-10 22:09:01.550443864 +0100 -@@ -7073,6 +7073,9 @@ - DEFAULT_SUPP="exp-sgcheck.supp ${DEFAULT_SUPP}" - fi - -+# Suppression file for libstdc++ until we solve KDE#345307 -+DEFAULT_SUPP="libstdc++.supp ${DEFAULT_SUPP}" -+ - - #---------------------------------------------------------------------------- - # Platform variants? diff --git a/SOURCES/valgrind-3.11.0-no-rdrand.patch b/SOURCES/valgrind-3.11.0-no-rdrand.patch deleted file mode 100644 index cb4a49c..0000000 --- a/SOURCES/valgrind-3.11.0-no-rdrand.patch +++ /dev/null @@ -1,26 +0,0 @@ -commit 1ab61656f71e94ce12b68de87f1e28cf3dc0c18c -Author: mjw -Date: Thu Oct 1 12:31:19 2015 +0000 - - Don't advertise RDRAND in cpuid for Core-i7-4910-like avx2 machine. - - Bug#353370. In amd64g_dirtyhelper_CPUID_avx2 we set the RDRAND bit - but we don't implement support for RDRAND. Turn the bit off so programs - don't try to use RDRAND when running under valgrind. - - git-svn-id: svn://svn.valgrind.org/vex/trunk@3197 8f6e269a-dfd6-0310-a8e1-e2731360e62c - -diff --git a/VEX/priv/guest_amd64_helpers.c b/VEX/priv/guest_amd64_helpers.c -index e77d753..ab53e15 100644 ---- a/VEX/priv/guest_amd64_helpers.c -+++ b/VEX/priv/guest_amd64_helpers.c -@@ -3101,7 +3101,8 @@ void amd64g_dirtyhelper_CPUID_avx2 ( VexGuestAMD64State* st ) - SET_ABCD(0x0000000d, 0x756e6547, 0x6c65746e, 0x49656e69); - break; - case 0x00000001: -- SET_ABCD(0x000306c3, 0x02100800, 0x7ffafbff, 0xbfebfbff); -+ /* Don't advertise RDRAND support, bit 30 in ECX. */ -+ SET_ABCD(0x000306c3, 0x02100800, 0x3ffafbff, 0xbfebfbff); - break; - case 0x00000002: - SET_ABCD(0x76036301, 0x00f0b6ff, 0x00000000, 0x00c10000); diff --git a/SOURCES/valgrind-3.11.0-pcmpxstrx-0x70-0x19.patch b/SOURCES/valgrind-3.11.0-pcmpxstrx-0x70-0x19.patch deleted file mode 100644 index 1b32b66..0000000 --- a/SOURCES/valgrind-3.11.0-pcmpxstrx-0x70-0x19.patch +++ /dev/null @@ -1,350 +0,0 @@ -commit b4ead6dd41c3234b491c803fe513580363f38998 -Author: sewardj -Date: Wed Jul 20 16:35:55 2016 +0000 - - Enable PCMPxSTRx cases 0x70 and 0x19. Fixes #359952. - - - git-svn-id: svn://svn.valgrind.org/vex/trunk@3228 8f6e269a-dfd6-0310-a8e1-e2731360e62c - -diff --git a/VEX/priv/guest_amd64_toIR.c b/VEX/priv/guest_amd64_toIR.c -index 936d16f..4c9a122 100644 ---- a/VEX/priv/guest_amd64_toIR.c -+++ b/VEX/priv/guest_amd64_toIR.c -@@ -18671,10 +18671,11 @@ static Long dis_PCMPxSTRx ( const VexAbiInfo* vbi, Prefix pfx, - case 0x12: case 0x14: case 0x18: case 0x1A: - case 0x30: case 0x34: case 0x38: case 0x3A: - case 0x40: case 0x42: case 0x44: case 0x46: case 0x4A: -+ case 0x70: - break; - // the 16-bit character versions of the above - case 0x01: case 0x03: case 0x09: case 0x0B: case 0x0D: -- case 0x13: case 0x1B: -+ case 0x13: case 0x19: case 0x1B: - case 0x39: case 0x3B: - case 0x45: case 0x4B: - break; -diff --git a/VEX/priv/guest_generic_x87.c b/VEX/priv/guest_generic_x87.c -index 2c9b25b..9a3c603 100644 ---- a/VEX/priv/guest_generic_x87.c -+++ b/VEX/priv/guest_generic_x87.c -@@ -799,6 +799,7 @@ Bool compute_PCMPxSTRx ( /*OUT*/V128* resV, - case 0x12: case 0x14: case 0x18: case 0x1A: - case 0x30: case 0x34: case 0x38: case 0x3A: - case 0x40: case 0x42: case 0x44: case 0x46: case 0x4A: -+ case 0x70: - break; - default: - return False; -@@ -1047,7 +1048,7 @@ Bool compute_PCMPxSTRx_wide ( /*OUT*/V128* resV, - unvalidated cases in the code base. */ - switch (imm8) { - case 0x01: case 0x03: case 0x09: case 0x0B: case 0x0D: -- case 0x13: case 0x1B: -+ case 0x13: case 0x19: case 0x1B: - case 0x39: case 0x3B: - case 0x45: case 0x4B: - break; -commit b5ca153e38556e9e4bef0a79c99e3ab6a7e47056 -Author: sewardj -Date: Wed Jul 20 16:37:09 2016 +0000 - - Add test cases for PCMPxSTRx cases 0x70 and 0x19. Pertains to #359952. - - - git-svn-id: svn://svn.valgrind.org/valgrind/trunk@15910 a5019735-40e9-0310-863c-91ae7b9d1cf9 - -diff --git a/none/tests/amd64/pcmpstr64.c b/none/tests/amd64/pcmpstr64.c -index 0694012..2b48c72 100644 ---- a/none/tests/amd64/pcmpstr64.c -+++ b/none/tests/amd64/pcmpstr64.c -@@ -207,6 +207,7 @@ Bool pcmpXstrX_WRK ( /*OUT*/V128* resV, - case 0x12: case 0x14: case 0x18: case 0x1A: - case 0x30: case 0x34: case 0x38: case 0x3A: - case 0x40: case 0x42: case 0x44: case 0x46: case 0x4A: -+ case 0x70: - break; - default: - return False; -@@ -1971,6 +1972,86 @@ void istri_14 ( void ) - - ////////////////////////////////////////////////////////// - // // -+// ISTRI_70 // -+// // -+////////////////////////////////////////////////////////// -+ -+UInt h_pcmpistri_70 ( V128* argL, V128* argR ) -+{ -+ V128 block[2]; -+ memcpy(&block[0], argL, sizeof(V128)); -+ memcpy(&block[1], argR, sizeof(V128)); -+ ULong res, flags; -+ __asm__ __volatile__( -+ "subq $1024, %%rsp" "\n\t" -+ "movdqu 0(%2), %%xmm2" "\n\t" -+ "movdqu 16(%2), %%xmm11" "\n\t" -+ "pcmpistri $0x70, %%xmm2, %%xmm11" "\n\t" -+ "pushfq" "\n\t" -+ "popq %%rdx" "\n\t" -+ "movq %%rcx, %0" "\n\t" -+ "movq %%rdx, %1" "\n\t" -+ "addq $1024, %%rsp" "\n\t" -+ : /*out*/ "=r"(res), "=r"(flags) : "r"/*in*/(&block[0]) -+ : "rcx","rdx","xmm0","xmm2","xmm11","cc","memory" -+ ); -+ return ((flags & 0x8D5) << 16) | (res & 0xFFFF); -+} -+ -+UInt s_pcmpistri_70 ( V128* argLU, V128* argRU ) -+{ -+ V128 resV; -+ UInt resOSZACP, resECX; -+ Bool ok -+ = pcmpXstrX_WRK( &resV, &resOSZACP, argLU, argRU, -+ zmask_from_V128(argLU), -+ zmask_from_V128(argRU), -+ 0x70, False/*!isSTRM*/ -+ ); -+ assert(ok); -+ resECX = resV.uInt[0]; -+ return (resOSZACP << 16) | resECX; -+} -+ -+void istri_70 ( void ) -+{ -+ char* wot = "70"; -+ UInt(*h)(V128*,V128*) = h_pcmpistri_70; -+ UInt(*s)(V128*,V128*) = s_pcmpistri_70; -+ -+ try_istri(wot,h,s, "abcdacbdabcdabcd", "000000000000000a"); -+ try_istri(wot,h,s, "abcdabcdabcdabcd", "000000000000000b"); -+ try_istri(wot,h,s, "abcdabcdabcdabcd", "00000000000000ab"); -+ try_istri(wot,h,s, "abcdabc0abcdabcd", "000000000000abcd"); -+ -+ try_istri(wot,h,s, "abcdabcdabcdabcd", "000000000000abcd"); -+ try_istri(wot,h,s, "0bcdabcdabcdabcd", "000000000000abcd"); -+ try_istri(wot,h,s, "abcdabcdabcda0cd", "000000000000abcd"); -+ try_istri(wot,h,s, "abcdabcdabcdab0d", "000000000000abcd"); -+ try_istri(wot,h,s, "abcdabcdabcdabc0", "000000000000abcd"); -+ -+ try_istri(wot,h,s, "abcdabcdabcdabcd", "000000000000abcd"); -+ try_istri(wot,h,s, "abcdabcdabcdabcd", "000000000000a0cd"); -+ try_istri(wot,h,s, "abcdabcdabcdabcd", "000000000000ab0d"); -+ try_istri(wot,h,s, "abcdabcdabcdabcd", "000000000000abc0"); -+ -+ try_istri(wot,h,s, "0000000000000000", "0000000000000000"); -+ try_istri(wot,h,s, "aaaaaaaaaaaaaaaa", "aaaaaaaaaaaaaaaa"); -+ -+ try_istri(wot,h,s, "0000abcdabcdabcd", "000000000000abcd"); -+ try_istri(wot,h,s, "0000abcdabcdabcd", "000000000000dcba"); -+ try_istri(wot,h,s, "0000abcdabcdabcd", "000000000000bbbb"); -+ try_istri(wot,h,s, "0000abcdabcdabcd", "000000000000baba"); -+ -+ try_istri(wot,h,s, "0000abcdabcdabcd", "00000000000baba0"); -+ -+ try_istri(wot,h,s, "0ddc0ffeebadf00d", "00000000cafebabe"); -+ try_istri(wot,h,s, "0ddc0ffeebadfeed", "00000000cafebabe"); -+} -+ -+ -+////////////////////////////////////////////////////////// -+// // - // main // - // // - ////////////////////////////////////////////////////////// -@@ -1995,5 +2076,6 @@ int main ( void ) - istri_0E(); - istri_14(); - istri_34(); -+ istri_70(); - return 0; - } -diff --git a/none/tests/amd64/pcmpstr64.stdout.exp b/none/tests/amd64/pcmpstr64.stdout.exp -index 4921586..55d7fe0 100644 ---- a/none/tests/amd64/pcmpstr64.stdout.exp -+++ b/none/tests/amd64/pcmpstr64.stdout.exp -@@ -458,3 +458,25 @@ istri 34 163887ec041a9b72 fcd75adb9b3e895a -> 08410000 08410000 - istri 34 fc937cbfbf53f8e2 0d136bcb024d3fb7 -> 08810000 08810000 - istri 34 2ca34182c29a82ab 302ebd646775ab54 -> 08810000 08810000 - istri 34 3f2987608c11be6f a9ecb661f8e0a8cb -> 08c10000 08c10000 -+istri 70 abcdacbdabcdabcd 000000000000000a -> 0881000e 0881000e -+istri 70 abcdabcdabcdabcd 000000000000000b -> 0881000f 0881000f -+istri 70 abcdabcdabcdabcd 00000000000000ab -> 0881000d 0881000d -+istri 70 abcdabc0abcdabcd 000000000000abcd -> 00c00010 00c00010 -+istri 70 abcdabcdabcdabcd 000000000000abcd -> 00800010 00800010 -+istri 70 0bcdabcdabcdabcd 000000000000abcd -> 00c00010 00c00010 -+istri 70 abcdabcdabcda0cd 000000000000abcd -> 00c00010 00c00010 -+istri 70 abcdabcdabcdab0d 000000000000abcd -> 00c00010 00c00010 -+istri 70 abcdabcdabcdabc0 000000000000abcd -> 00c00010 00c00010 -+istri 70 abcdabcdabcdabcd 000000000000abcd -> 00800010 00800010 -+istri 70 abcdabcdabcdabcd 000000000000a0cd -> 0081000f 0081000f -+istri 70 abcdabcdabcdabcd 000000000000ab0d -> 0081000f 0081000f -+istri 70 abcdabcdabcdabcd 000000000000abc0 -> 0881000f 0881000f -+istri 70 0000000000000000 0000000000000000 -> 00c00010 00c00010 -+istri 70 aaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaa -> 00000010 00000010 -+istri 70 0000abcdabcdabcd 000000000000abcd -> 00c00010 00c00010 -+istri 70 0000abcdabcdabcd 000000000000dcba -> 00c00010 00c00010 -+istri 70 0000abcdabcdabcd 000000000000bbbb -> 08c1000b 08c1000b -+istri 70 0000abcdabcdabcd 000000000000baba -> 08c10009 08c10009 -+istri 70 0000abcdabcdabcd 00000000000baba0 -> 08c1000b 08c1000b -+istri 70 0ddc0ffeebadf00d 00000000cafebabe -> 08c10000 08c10000 -+istri 70 0ddc0ffeebadfeed 00000000cafebabe -> 08c10004 08c10004 -diff --git a/none/tests/amd64/pcmpstr64w.c b/none/tests/amd64/pcmpstr64w.c -index 858cfd8..6a1adad 100644 ---- a/none/tests/amd64/pcmpstr64w.c -+++ b/none/tests/amd64/pcmpstr64w.c -@@ -209,7 +209,7 @@ Bool pcmpXstrX_WRK_wide ( /*OUT*/V128* resV, - unvalidated cases in the code base. */ - switch (imm8) { - case 0x01: case 0x03: case 0x09: case 0x0B: case 0x0D: -- case 0x13: case 0x1B: -+ case 0x13: case 0x19: case 0x1B: - case 0x39: case 0x3B: - case 0x45: case 0x4B: - break; -@@ -1255,6 +1255,99 @@ void istri_39 ( void ) - - ////////////////////////////////////////////////////////// - // // -+// ISTRI_19 // -+// // -+////////////////////////////////////////////////////////// -+ -+UInt h_pcmpistri_19 ( V128* argL, V128* argR ) -+{ -+ V128 block[2]; -+ memcpy(&block[0], argL, sizeof(V128)); -+ memcpy(&block[1], argR, sizeof(V128)); -+ ULong res, flags; -+ __asm__ __volatile__( -+ "subq $1024, %%rsp" "\n\t" -+ "movdqu 0(%2), %%xmm2" "\n\t" -+ "movdqu 16(%2), %%xmm11" "\n\t" -+ "pcmpistri $0x19, %%xmm2, %%xmm11" "\n\t" -+ "pushfq" "\n\t" -+ "popq %%rdx" "\n\t" -+ "movq %%rcx, %0" "\n\t" -+ "movq %%rdx, %1" "\n\t" -+ "addq $1024, %%rsp" "\n\t" -+ : /*out*/ "=r"(res), "=r"(flags) : "r"/*in*/(&block[0]) -+ : "rcx","rdx","xmm0","xmm2","xmm11","cc","memory" -+ ); -+ return ((flags & 0x8D5) << 16) | (res & 0xFFFF); -+} -+ -+UInt s_pcmpistri_19 ( V128* argLU, V128* argRU ) -+{ -+ V128 resV; -+ UInt resOSZACP, resECX; -+ Bool ok -+ = pcmpXstrX_WRK_wide( &resV, &resOSZACP, argLU, argRU, -+ zmask_from_V128(argLU), -+ zmask_from_V128(argRU), -+ 0x19, False/*!isSTRM*/ -+ ); -+ assert(ok); -+ resECX = resV.uInt[0]; -+ return (resOSZACP << 16) | resECX; -+} -+ -+void istri_19 ( void ) -+{ -+ char* wot = "19"; -+ UInt(*h)(V128*,V128*) = h_pcmpistri_19; -+ UInt(*s)(V128*,V128*) = s_pcmpistri_19; -+ -+ try_istri(wot,h,s, "0000000000000000", "0000000000000000"); -+ -+ try_istri(wot,h,s, "aaaaaaaaaaaaaaaa", "aaaaaaaaaaaaaaaa"); -+ try_istri(wot,h,s, "aaaa2aaaaaaaaaaa", "aaaaaaaaaaaaaaaa"); -+ try_istri(wot,h,s, "aaaaaaaaa2aaaaaa", "aaaaaaaaaaaaaaaa"); -+ try_istri(wot,h,s, "aaaaaaaaaaaaa2aa", "aaaaaaaaaaaaaaaa"); -+ -+ try_istri(wot,h,s, "aaaaaaaaaaaaaaaa", "aaaa2aaaaaaaaaaa"); -+ try_istri(wot,h,s, "aaaaaaaaaaaaaaaa", "aaaaaaaaa2aaaaaa"); -+ try_istri(wot,h,s, "aaaaaaaaaaaaaaaa", "aaaaaaaaaaaaaa2a"); -+ -+ try_istri(wot,h,s, "aaaaaaaaaaaaaaaa", "aaaaaaaaaaaaaaaa"); -+ try_istri(wot,h,s, "baaaaaaaaaaaaaaa", "aaaaaaaaaaaaaaaa"); -+ try_istri(wot,h,s, "b9aaaaaaaaaaaaaa", "aaaaaaaaaaaaaaaa"); -+ try_istri(wot,h,s, "b9baaaaaaaaaaaaa", "aaaaaaaaaaaaaaaa"); -+ -+ try_istri(wot,h,s, "b9baaaaaaaaaaaaa", "aaaaaaaaaaaaaaaa"); -+ try_istri(wot,h,s, "b9baaaaaaaaaaaaa", "aaaaaaaaaaaa7aaa"); -+ try_istri(wot,h,s, "b9baaaaaaaaaaaaa", "aaaaaaaa2aaa4aaa"); -+ -+ try_istri(wot,h,s, "aaaaaaaaaaaaaaaa", "aaaaaaaaaaaaaaaa"); -+ -+ try_istri(wot,h,s, "aaaaaaaaaaaa00aa", "aaaaaaaaaaaaaaaa"); -+ try_istri(wot,h,s, "aaaaaaaaaaaaaaaa", "aaaaaaaaaaaa00aa"); -+ try_istri(wot,h,s, "aaaaaaaaaaaa00aa", "aaaaaaaaaaaa00aa"); -+ -+ try_istri(wot,h,s, "aaaaaaaa00aaaaaa", "aaaaaaaaaaaaaaaa"); -+ try_istri(wot,h,s, "aaaaaaaaaaaaaaaa", "aaaaaaaaaaaa00aa"); -+ try_istri(wot,h,s, "aaaaaaaa00aaaaaa", "aaaaaaaaaaaa00aa"); -+ -+ try_istri(wot,h,s, "aaaaaaaaaaaa00aa", "aaaaaaaaaaaaaaaa"); -+ try_istri(wot,h,s, "aaaaaaaaaaaaaaaa", "aaaaaaaa00aaaaaa"); -+ try_istri(wot,h,s, "aaaaaaaaaaaa00aa", "aaaaaaaa00aaaaaa"); -+ -+ try_istri(wot,h,s, "0000000000000000", "aaaaaaaa00aaaaaa"); -+ try_istri(wot,h,s, "8000000000000000", "aaaaaaaa00aaaaaa"); -+ try_istri(wot,h,s, "0000000000000001", "aaaaaaaa00aaaaaa"); -+ -+ try_istri(wot,h,s, "0000000000000000", "aaaaaaaaaaaaaaaa"); -+ try_istri(wot,h,s, "aaaaaaaaaaaaaaaa", "0000000000000000"); -+} -+ -+ -+ -+////////////////////////////////////////////////////////// -+// // - // main // - // // - ////////////////////////////////////////////////////////// -@@ -1271,5 +1364,6 @@ int main ( void ) - istri_45(); - istri_01(); - istri_39(); -+ istri_19(); - return 0; - } -diff --git a/none/tests/amd64/pcmpstr64w.stdout.exp b/none/tests/amd64/pcmpstr64w.stdout.exp -index 77d555d..c18184c 100644 ---- a/none/tests/amd64/pcmpstr64w.stdout.exp -+++ b/none/tests/amd64/pcmpstr64w.stdout.exp -@@ -258,3 +258,33 @@ istri 39 8000000000000000 aaaaaaaa00aaaaaa -> 00c10003 00c10003 - istri 39 0000000000000001 aaaaaaaa00aaaaaa -> 08c10000 08c10000 - istri 39 0000000000000000 aaaaaaaaaaaaaaaa -> 00400008 00400008 - istri 39 aaaaaaaaaaaaaaaa 0000000000000000 -> 08810000 08810000 -+istri 19 0000000000000000 0000000000000000 -> 00c00008 00c00008 -+istri 19 aaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaa -> 00000008 00000008 -+istri 19 aaaa2aaaaaaaaaaa aaaaaaaaaaaaaaaa -> 00010005 00010005 -+istri 19 aaaaaaaaa2aaaaaa aaaaaaaaaaaaaaaa -> 00010003 00010003 -+istri 19 aaaaaaaaaaaaa2aa aaaaaaaaaaaaaaaa -> 00010001 00010001 -+istri 19 aaaaaaaaaaaaaaaa aaaa2aaaaaaaaaaa -> 00010005 00010005 -+istri 19 aaaaaaaaaaaaaaaa aaaaaaaaa2aaaaaa -> 00010003 00010003 -+istri 19 aaaaaaaaaaaaaaaa aaaaaaaaaaaaaa2a -> 08010000 08010000 -+istri 19 aaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaa -> 00000008 00000008 -+istri 19 baaaaaaaaaaaaaaa aaaaaaaaaaaaaaaa -> 00010007 00010007 -+istri 19 b9aaaaaaaaaaaaaa aaaaaaaaaaaaaaaa -> 00010007 00010007 -+istri 19 b9baaaaaaaaaaaaa aaaaaaaaaaaaaaaa -> 00010006 00010006 -+istri 19 b9baaaaaaaaaaaaa aaaaaaaaaaaaaaaa -> 00010006 00010006 -+istri 19 b9baaaaaaaaaaaaa aaaaaaaaaaaa7aaa -> 00010001 00010001 -+istri 19 b9baaaaaaaaaaaaa aaaaaaaa2aaa4aaa -> 00010001 00010001 -+istri 19 aaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaa -> 00000008 00000008 -+istri 19 aaaaaaaaaaaa00aa aaaaaaaaaaaaaaaa -> 00410001 00410001 -+istri 19 aaaaaaaaaaaaaaaa aaaaaaaaaaaa00aa -> 00810001 00810001 -+istri 19 aaaaaaaaaaaa00aa aaaaaaaaaaaa00aa -> 00c00008 00c00008 -+istri 19 aaaaaaaa00aaaaaa aaaaaaaaaaaaaaaa -> 00410003 00410003 -+istri 19 aaaaaaaaaaaaaaaa aaaaaaaaaaaa00aa -> 00810001 00810001 -+istri 19 aaaaaaaa00aaaaaa aaaaaaaaaaaa00aa -> 00c10001 00c10001 -+istri 19 aaaaaaaaaaaa00aa aaaaaaaaaaaaaaaa -> 00410001 00410001 -+istri 19 aaaaaaaaaaaaaaaa aaaaaaaa00aaaaaa -> 00810003 00810003 -+istri 19 aaaaaaaaaaaa00aa aaaaaaaa00aaaaaa -> 00c10001 00c10001 -+istri 19 0000000000000000 aaaaaaaa00aaaaaa -> 08c10000 08c10000 -+istri 19 8000000000000000 aaaaaaaa00aaaaaa -> 08c10000 08c10000 -+istri 19 0000000000000001 aaaaaaaa00aaaaaa -> 08c10000 08c10000 -+istri 19 0000000000000000 aaaaaaaaaaaaaaaa -> 08410000 08410000 -+istri 19 aaaaaaaaaaaaaaaa 0000000000000000 -> 08810000 08810000 diff --git a/SOURCES/valgrind-3.11.0-ppc-bcd-addsub.patch b/SOURCES/valgrind-3.11.0-ppc-bcd-addsub.patch deleted file mode 100644 index 04f45f6..0000000 --- a/SOURCES/valgrind-3.11.0-ppc-bcd-addsub.patch +++ /dev/null @@ -1,383 +0,0 @@ -Fix without v-bit test program changes which changed too much since 3.11.0. - -commit 568f3ab3f7a4c074fe9ce6f4f395fb25b6fa375b -Author: carll -Date: Tue Apr 26 19:52:56 2016 +0000 - - Power PC Fix V bit error in 128-bit BCD add and subtract instructions - - The original code was using the bcdadd / bcdsub instruction on the operand - shadow bits to calculate the shadow bits for the result. This introduced - non-zero bits shadow bits in the result. The shadow bits for these - instructions should be set to all valid or all invalid. If one of the - argument shadow bits was one, then all of the shadow bits of the result should - be one. Otherwise the result shadow bits should be zero. - - This patch fixes the above bug in memcheck/mc_translate.c - - Fixing the above bug broke the v-bit test. The issue is the v-bit tester - assumes the shadow bits for the operands of a given Iop can be set to one - for testing purposes. The implementation of the bcdadd and bcdsub was passing - a constant value for the variable ps. The ps value is an argument to the - instruction that specifies how to set the sign code of the result. The - implementation of the instructions was changed to issue the instruction with - ps=0. Then the result of the instruction is updated in the VEX code if ps=1. - This changed also results in cleaning up the vbit test code. - - This patch also fixes the issues with the v-bit test program. - - Bugzilla 360035 - - - git-svn-id: svn://svn.valgrind.org/vex/trunk@3218 8f6e269a-dfd6-0310-a8e1-e2731360e62c - -diff --git a/VEX/priv/guest_ppc_toIR.c b/VEX/priv/guest_ppc_toIR.c -index 034a766..44304df 100644 ---- a/VEX/priv/guest_ppc_toIR.c -+++ b/VEX/priv/guest_ppc_toIR.c -@@ -21297,6 +21297,43 @@ static Bool dis_av_quad ( UInt theInstr ) - return True; - } - -+static IRExpr * bcd_sign_code_adjust( UInt ps, IRExpr * tmp) -+{ -+ /* The Iop_BCDAdd and Iop_BCDSub will result in the corresponding Power PC -+ * instruction being issued with ps = 0. If ps = 1, the sign code, which -+ * is in the least significant four bits of the result, needs to be updated -+ * per the ISA: -+ * -+ * If PS=0, the sign code of the result is set to 0b1100. -+ * If PS=1, the sign code of the result is set to 0b1111. -+ * -+ * Note, the ps value is NOT being passed down to the instruction issue -+ * because passing a constant via triop() breaks the vbit-test test. The -+ * vbit-tester assumes it can set non-zero shadow bits for the triop() -+ * arguments. Thus they have to be expressions not a constant. -+ */ -+ IRTemp mask = newTemp(Ity_I64); -+ IRExpr *rtn; -+ -+ if ( ps == 0 ) { -+ /* sign code is correct, just return it. */ -+ rtn = tmp; -+ -+ } else { -+ /* check if lower four bits are 0b1100, if so, change to 0b1111 */ -+ assign( mask, unop( Iop_1Sto64, -+ binop( Iop_CmpEQ64, mkU64( 0xC ), -+ binop( Iop_And64, mkU64( 0xF ), -+ unop( Iop_V128to64, tmp ) ) ) ) ); -+ rtn = binop( Iop_64HLtoV128, -+ unop( Iop_V128HIto64, tmp ), -+ binop( Iop_Or64, -+ binop( Iop_And64, mkU64( 0xF ), mkexpr( mask ) ), -+ unop( Iop_V128to64, tmp ) ) ); -+ } -+ -+ return rtn; -+} - - /* - AltiVec BCD Arithmetic instructions. -@@ -21329,15 +21366,19 @@ static Bool dis_av_bcd ( UInt theInstr ) - switch (opc2) { - case 0x1: // bcdadd - DIP("bcdadd. v%d,v%d,v%d,%u\n", vRT_addr, vRA_addr, vRB_addr, ps); -- assign( dst, triop( Iop_BCDAdd, mkexpr( vA ), -- mkexpr( vB ), mkU8( ps ) ) ); -+ assign( dst, bcd_sign_code_adjust( ps, -+ binop( Iop_BCDAdd, -+ mkexpr( vA ), -+ mkexpr( vB ) ) ) ); - putVReg( vRT_addr, mkexpr(dst)); - return True; - - case 0x41: // bcdsub - DIP("bcdsub. v%d,v%d,v%d,%u\n", vRT_addr, vRA_addr, vRB_addr, ps); -- assign( dst, triop( Iop_BCDSub, mkexpr( vA ), -- mkexpr( vB ), mkU8( ps ) ) ); -+ assign( dst, bcd_sign_code_adjust( ps, -+ binop( Iop_BCDSub, -+ mkexpr( vA ), -+ mkexpr( vB ) ) ) ); - putVReg( vRT_addr, mkexpr(dst)); - return True; - -diff --git a/VEX/priv/host_ppc_defs.c b/VEX/priv/host_ppc_defs.c -index 13b193c..06487b5 100644 ---- a/VEX/priv/host_ppc_defs.c -+++ b/VEX/priv/host_ppc_defs.c -@@ -1415,15 +1415,14 @@ PPCInstr* PPCInstr_AvHashV128Binary ( PPCAvOp op, HReg dst, - i->Pin.AvHashV128Binary.s_field = s_field; - return i; - } --PPCInstr* PPCInstr_AvBCDV128Trinary ( PPCAvOp op, HReg dst, -- HReg src1, HReg src2, PPCRI* ps ) { -+PPCInstr* PPCInstr_AvBCDV128Binary ( PPCAvOp op, HReg dst, -+ HReg src1, HReg src2 ) { - PPCInstr* i = LibVEX_Alloc_inline(sizeof(PPCInstr)); -- i->tag = Pin_AvBCDV128Trinary; -- i->Pin.AvBCDV128Trinary.op = op; -- i->Pin.AvBCDV128Trinary.dst = dst; -- i->Pin.AvBCDV128Trinary.src1 = src1; -- i->Pin.AvBCDV128Trinary.src2 = src2; -- i->Pin.AvBCDV128Trinary.ps = ps; -+ i->tag = Pin_AvBCDV128Binary; -+ i->Pin.AvBCDV128Binary.op = op; -+ i->Pin.AvBCDV128Binary.dst = dst; -+ i->Pin.AvBCDV128Binary.src1 = src1; -+ i->Pin.AvBCDV128Binary.src2 = src2; - return i; - } - -@@ -2038,15 +2037,13 @@ void ppPPCInstr ( const PPCInstr* i, Bool mode64 ) - ppPPCRI(i->Pin.AvHashV128Binary.s_field); - return; - -- case Pin_AvBCDV128Trinary: -- vex_printf("%s(w) ", showPPCAvOp(i->Pin.AvBCDV128Trinary.op)); -- ppHRegPPC(i->Pin.AvBCDV128Trinary.dst); -+ case Pin_AvBCDV128Binary: -+ vex_printf("%s(w) ", showPPCAvOp(i->Pin.AvBCDV128Binary.op)); -+ ppHRegPPC(i->Pin.AvBCDV128Binary.dst); - vex_printf(","); -- ppHRegPPC(i->Pin.AvBCDV128Trinary.src1); -+ ppHRegPPC(i->Pin.AvBCDV128Binary.src1); - vex_printf(","); -- ppHRegPPC(i->Pin.AvBCDV128Trinary.src2); -- vex_printf(","); -- ppPPCRI(i->Pin.AvBCDV128Trinary.ps); -+ ppHRegPPC(i->Pin.AvBCDV128Binary.src2); - return; - - case Pin_Dfp64Unary: -@@ -2511,11 +2508,10 @@ void getRegUsage_PPCInstr ( HRegUsage* u, const PPCInstr* i, Bool mode64 ) - addHRegUse(u, HRmRead, i->Pin.AvHashV128Binary.src); - addRegUsage_PPCRI(u, i->Pin.AvHashV128Binary.s_field); - return; -- case Pin_AvBCDV128Trinary: -- addHRegUse(u, HRmWrite, i->Pin.AvBCDV128Trinary.dst); -- addHRegUse(u, HRmRead, i->Pin.AvBCDV128Trinary.src1); -- addHRegUse(u, HRmRead, i->Pin.AvBCDV128Trinary.src2); -- addRegUsage_PPCRI(u, i->Pin.AvBCDV128Trinary.ps); -+ case Pin_AvBCDV128Binary: -+ addHRegUse(u, HRmWrite, i->Pin.AvBCDV128Binary.dst); -+ addHRegUse(u, HRmRead, i->Pin.AvBCDV128Binary.src1); -+ addHRegUse(u, HRmRead, i->Pin.AvBCDV128Binary.src2); - return; - case Pin_Dfp64Unary: - addHRegUse(u, HRmWrite, i->Pin.Dfp64Unary.dst); -@@ -2844,11 +2840,10 @@ void mapRegs_PPCInstr ( HRegRemap* m, PPCInstr* i, Bool mode64 ) - mapReg(m, &i->Pin.AvHashV128Binary.dst); - mapReg(m, &i->Pin.AvHashV128Binary.src); - return; -- case Pin_AvBCDV128Trinary: -- mapReg(m, &i->Pin.AvBCDV128Trinary.dst); -- mapReg(m, &i->Pin.AvBCDV128Trinary.src1); -- mapReg(m, &i->Pin.AvBCDV128Trinary.src2); -- mapRegs_PPCRI(m, i->Pin.AvBCDV128Trinary.ps); -+ case Pin_AvBCDV128Binary: -+ mapReg(m, &i->Pin.AvBCDV128Binary.dst); -+ mapReg(m, &i->Pin.AvBCDV128Binary.src1); -+ mapReg(m, &i->Pin.AvBCDV128Binary.src2); - return; - case Pin_Dfp64Unary: - mapReg(m, &i->Pin.Dfp64Unary.dst); -@@ -5104,20 +5099,22 @@ Int emit_PPCInstr ( /*MB_MOD*/Bool* is_profInc, - p = mkFormVX( p, 4, v_dst, v_src, s_field->Pri.Imm, opc2, endness_host ); - goto done; - } -- case Pin_AvBCDV128Trinary: { -- UInt v_dst = vregEnc(i->Pin.AvBCDV128Trinary.dst); -- UInt v_src1 = vregEnc(i->Pin.AvBCDV128Trinary.src1); -- UInt v_src2 = vregEnc(i->Pin.AvBCDV128Trinary.src2); -- PPCRI* ps = i->Pin.AvBCDV128Trinary.ps; -+ case Pin_AvBCDV128Binary: { -+ UInt v_dst = vregEnc(i->Pin.AvBCDV128Binary.dst); -+ UInt v_src1 = vregEnc(i->Pin.AvBCDV128Binary.src1); -+ UInt v_src2 = vregEnc(i->Pin.AvBCDV128Binary.src2); -+ UInt ps = 0; /* Issue the instruction with ps=0. The IR code will -+ * fix up the result if ps=1. -+ */ - UInt opc2; -- switch (i->Pin.AvBCDV128Trinary.op) { -+ switch (i->Pin.AvBCDV128Binary.op) { - case Pav_BCDAdd: opc2 = 1; break; // bcdadd - case Pav_BCDSub: opc2 = 65; break; // bcdsub - default: - goto bad; - } - p = mkFormVXR( p, 4, v_dst, v_src1, v_src2, -- 0x1, (ps->Pri.Imm << 9) | opc2, endness_host ); -+ 0x1, ps | opc2, endness_host ); - goto done; - } - case Pin_AvBin32Fx4: { -diff --git a/VEX/priv/host_ppc_defs.h b/VEX/priv/host_ppc_defs.h -index c04c994..0b1939d 100644 ---- a/VEX/priv/host_ppc_defs.h -+++ b/VEX/priv/host_ppc_defs.h -@@ -499,7 +499,7 @@ typedef - Pin_AvCipherV128Unary, /* AV Vector unary Cipher */ - Pin_AvCipherV128Binary, /* AV Vector binary Cipher */ - Pin_AvHashV128Binary, /* AV Vector binary Hash */ -- Pin_AvBCDV128Trinary, /* BCD Arithmetic */ -+ Pin_AvBCDV128Binary, /* BCD Arithmetic */ - Pin_Dfp64Unary, /* DFP64 unary op */ - Pin_Dfp128Unary, /* DFP128 unary op */ - Pin_DfpShift, /* Decimal floating point shift by immediate value */ -@@ -867,8 +867,7 @@ typedef - HReg dst; - HReg src1; - HReg src2; -- PPCRI* ps; -- } AvBCDV128Trinary; -+ } AvBCDV128Binary; - struct { - PPCAvOp op; - HReg dst; -@@ -1063,9 +1062,8 @@ extern PPCInstr* PPCInstr_AvCipherV128Binary ( PPCAvOp op, HReg dst, - HReg srcL, HReg srcR ); - extern PPCInstr* PPCInstr_AvHashV128Binary ( PPCAvOp op, HReg dst, - HReg src, PPCRI* s_field ); --extern PPCInstr* PPCInstr_AvBCDV128Trinary ( PPCAvOp op, HReg dst, -- HReg src1, HReg src2, -- PPCRI* ps ); -+extern PPCInstr* PPCInstr_AvBCDV128Binary ( PPCAvOp op, HReg dst, -+ HReg src1, HReg src2 ); - extern PPCInstr* PPCInstr_Dfp64Unary ( PPCFpOp op, HReg dst, HReg src ); - extern PPCInstr* PPCInstr_Dfp64Binary ( PPCFpOp op, HReg dst, HReg srcL, - HReg srcR ); -diff --git a/VEX/priv/host_ppc_isel.c b/VEX/priv/host_ppc_isel.c -index 11a9943..5a701ed 100644 ---- a/VEX/priv/host_ppc_isel.c -+++ b/VEX/priv/host_ppc_isel.c -@@ -5392,25 +5392,25 @@ static HReg iselVecExpr_wrk ( ISelEnv* env, IRExpr* e, IREndness IEndianess ) - addInstr(env, PPCInstr_AvHashV128Binary(op, dst, arg1, s_field)); - return dst; - } -- default: -- break; -- } /* switch (e->Iex.Binop.op) */ -- } /* if (e->tag == Iex_Binop) */ - -- if (e->tag == Iex_Triop) { -- IRTriop *triop = e->Iex.Triop.details; -- switch (triop->op) { - case Iop_BCDAdd:op = Pav_BCDAdd; goto do_AvBCDV128; - case Iop_BCDSub:op = Pav_BCDSub; goto do_AvBCDV128; - do_AvBCDV128: { -- HReg arg1 = iselVecExpr(env, triop->arg1, IEndianess); -- HReg arg2 = iselVecExpr(env, triop->arg2, IEndianess); -+ HReg arg1 = iselVecExpr(env, e->Iex.Binop.arg1, IEndianess); -+ HReg arg2 = iselVecExpr(env, e->Iex.Binop.arg2, IEndianess); - HReg dst = newVRegV(env); -- PPCRI* ps = iselWordExpr_RI(env, triop->arg3, IEndianess); -- addInstr(env, PPCInstr_AvBCDV128Trinary(op, dst, arg1, arg2, ps)); -+ addInstr(env, PPCInstr_AvBCDV128Binary(op, dst, arg1, arg2)); - return dst; - } - -+ default: -+ break; -+ } /* switch (e->Iex.Binop.op) */ -+ } /* if (e->tag == Iex_Binop) */ -+ -+ if (e->tag == Iex_Triop) { -+ IRTriop *triop = e->Iex.Triop.details; -+ switch (triop->op) { - case Iop_Add32Fx4: fpop = Pavfp_ADDF; goto do_32Fx4_with_rm; - case Iop_Sub32Fx4: fpop = Pavfp_SUBF; goto do_32Fx4_with_rm; - case Iop_Mul32Fx4: fpop = Pavfp_MULF; goto do_32Fx4_with_rm; -diff --git a/VEX/priv/ir_defs.c b/VEX/priv/ir_defs.c -index 4a7b770..8fdfcab 100644 ---- a/VEX/priv/ir_defs.c -+++ b/VEX/priv/ir_defs.c -@@ -3122,7 +3122,8 @@ void typeOfPrimop ( IROp op, - - case Iop_BCDAdd: - case Iop_BCDSub: -- TERNARY(Ity_V128,Ity_V128, Ity_I8, Ity_V128); -+ BINARY(Ity_V128, Ity_V128, Ity_V128); -+ - case Iop_QDMull16Sx4: case Iop_QDMull32Sx2: - BINARY(Ity_I64, Ity_I64, Ity_V128); - -commit c8da12c274b2d94c42c07676139378b57fa7b31b -Author: carll -Date: Tue Apr 26 19:53:56 2016 +0000 - - Power PC Fix V bit error in 128-bit BCD add and subtract instructions - - The original code was using the bcdadd / bcdsub instruction on the operand - shadow bits to calculate the shadow bits for the result. This introduced - non-zero bits shadow bits in the result. The shadow bits for these - instructions should be set to all valid or all invalid. If one of the - argument shadow bits was one, then all of the shadow bits of the result should - be one. Otherwise the result shadow bits should be zero. - - This patch fixes the above bug in memcheck/mc_translate.c - - Fixing the above bug broke the v-bit test. The issue is the v-bit tester - assumes the shadow bits for the operands of a given Iop can be set to one - for testing purposes. The implementation of the bcdadd and bcdsub was passing - a constant value for the variable ps. The ps value is an argument to the - instruction that specifies how to set the sign code of the result. The - implementation of the instructions was changed to issue the instruction with - ps=0. Then the result of the instruction is updated in the VEX code if ps=1. - This changed also results in cleaning up the vbit test code. - - This patch also fixes the issues with the v-bit test program. - - Valgrind commit 3218 - - Bugzilla 360035 - - - git-svn-id: svn://svn.valgrind.org/valgrind/trunk@15871 a5019735-40e9-0310-863c-91ae7b9d1cf9 - -diff --git a/memcheck/mc_translate.c b/memcheck/mc_translate.c -index c239e46..d50b53d 100644 ---- a/memcheck/mc_translate.c -+++ b/memcheck/mc_translate.c -@@ -852,6 +852,17 @@ static IRAtom* mkPCastTo( MCEnv* mce, IRType dst_ty, IRAtom* vbits ) - unop(Iop_CmpNEZ64, tmp4)); - break; - } -+ case Ity_V128: { -+ /* Chop it in half, OR the halves together, and compare that -+ * with zero. -+ */ -+ IRAtom* tmp2 = assignNew('V', mce, Ity_I64, unop(Iop_V128HIto64, vbits)); -+ IRAtom* tmp3 = assignNew('V', mce, Ity_I64, unop(Iop_V128to64, vbits)); -+ IRAtom* tmp4 = assignNew('V', mce, Ity_I64, binop(Iop_Or64, tmp2, tmp3)); -+ tmp1 = assignNew('V', mce, Ity_I1, -+ unop(Iop_CmpNEZ64, tmp4)); -+ break; -+ } - default: - ppIRType(src_ty); - VG_(tool_panic)("mkPCastTo(1)"); -@@ -2888,11 +2899,6 @@ IRAtom* expr2vbits_Triop ( MCEnv* mce, - case Iop_SetElem32x2: - complainIfUndefined(mce, atom2, NULL); - return assignNew('V', mce, Ity_I64, triop(op, vatom1, atom2, vatom3)); -- /* BCDIops */ -- case Iop_BCDAdd: -- case Iop_BCDSub: -- complainIfUndefined(mce, atom3, NULL); -- return assignNew('V', mce, Ity_V128, triop(op, vatom1, vatom2, atom3)); - - /* Vector FP with rounding mode as the first arg */ - case Iop_Add64Fx2: -@@ -3723,6 +3729,10 @@ IRAtom* expr2vbits_Binop ( MCEnv* mce, - complainIfUndefined(mce, atom2, NULL); - return assignNew('V', mce, Ity_V128, binop(op, vatom1, atom2)); - -+ case Iop_BCDAdd: -+ case Iop_BCDSub: -+ return mkLazy2(mce, Ity_V128, vatom1, vatom2); -+ - /* SHA Iops */ - case Iop_SHA256: - case Iop_SHA512: diff --git a/SOURCES/valgrind-3.11.0-ppc64-128bit-mod-carry.patch b/SOURCES/valgrind-3.11.0-ppc64-128bit-mod-carry.patch deleted file mode 100644 index 3d986e5..0000000 --- a/SOURCES/valgrind-3.11.0-ppc64-128bit-mod-carry.patch +++ /dev/null @@ -1,1923 +0,0 @@ -commit e92c94c87913d9c257d1577493fdfd6b346b1a67 -Author: carll -Date: Tue Feb 16 21:20:24 2016 +0000 - - 128bit modulo and carry instruction fix - - This patch fixes an issue with caculating the carry to the next 32-bit - chunk for the 128-bit add and subract instructions: vaddcuq, vadduqm, - vsubcuq, vsubuqm, vaddecuq, vaddeuqm, vsubecuq, vsubeuqm - - Valgrind Bugzilla 359472 - - - git-svn-id: svn://svn.valgrind.org/vex/trunk@3209 8f6e269a-dfd6-0310-a8e1-e2731360e62c - -diff --git a/VEX/priv/guest_ppc_toIR.c b/VEX/priv/guest_ppc_toIR.c -index 6a0b6d8..21a0692 100644 ---- a/VEX/priv/guest_ppc_toIR.c -+++ b/VEX/priv/guest_ppc_toIR.c -@@ -17968,6 +17968,7 @@ static IRTemp _get_quad_modulo_or_carry(IRExpr * vecA, IRExpr * vecB, - IRTemp _vecA_32 = IRTemp_INVALID; - IRTemp _vecB_32 = IRTemp_INVALID; - IRTemp res_32 = IRTemp_INVALID; -+ IRTemp res_64 = IRTemp_INVALID; - IRTemp result = IRTemp_INVALID; - IRTemp tmp_result = IRTemp_INVALID; - IRTemp carry = IRTemp_INVALID; -@@ -17977,10 +17978,15 @@ static IRTemp _get_quad_modulo_or_carry(IRExpr * vecA, IRExpr * vecB, - IRExpr * _vecA_high64 = unop( Iop_V128HIto64, vecA ); - IRExpr * _vecB_high64 = unop( Iop_V128HIto64, vecB ); - -+ carry = newTemp(Ity_I32); -+ assign( carry, cin ); -+ - for (i = 0; i < 4; i++) { - _vecA_32 = newTemp(Ity_I32); - _vecB_32 = newTemp(Ity_I32); - res_32 = newTemp(Ity_I32); -+ res_64 = newTemp(Ity_I64); -+ - switch (i) { - case 0: - assign(_vecA_32, unop( Iop_64to32, _vecA_low64 ) ); -@@ -18000,13 +18006,25 @@ static IRTemp _get_quad_modulo_or_carry(IRExpr * vecA, IRExpr * vecB, - break; - } - -- assign(res_32, binop( Iop_Add32, -- binop( Iop_Add32, -- binop ( Iop_Add32, -- mkexpr(_vecA_32), -- mkexpr(_vecB_32) ), -- (i == 0) ? mkU32(0) : mkexpr(carry) ), -- (i == 0) ? cin : mkU32(0) ) ); -+ assign( res_64, binop( Iop_Add64, -+ binop ( Iop_Add64, -+ binop( Iop_32HLto64, -+ mkU32( 0 ), -+ mkexpr(_vecA_32) ), -+ binop( Iop_32HLto64, -+ mkU32( 0 ), -+ mkexpr(_vecB_32) ) ), -+ binop( Iop_32HLto64, -+ mkU32( 0 ), -+ mkexpr( carry ) ) ) ); -+ -+ /* Calculate the carry to the next higher 32 bits. */ -+ carry = newTemp(Ity_I32); -+ assign(carry, unop( Iop_64HIto32, mkexpr( res_64 ) ) ); -+ -+ /* result is the lower 32-bits */ -+ assign(res_32, unop( Iop_64to32, mkexpr( res_64 ) ) ); -+ - if (modulo) { - result = newTemp(Ity_V128); - assign(result, binop( Iop_OrV128, -@@ -18023,10 +18041,6 @@ static IRTemp _get_quad_modulo_or_carry(IRExpr * vecA, IRExpr * vecB, - tmp_result = newTemp(Ity_V128); - assign(tmp_result, mkexpr(result)); - } -- carry = newTemp(Ity_I32); -- assign(carry, unop(Iop_1Uto32, binop( Iop_CmpLT32U, -- mkexpr(res_32), -- mkexpr(_vecA_32 ) ) ) ); - } - if (modulo) - return result; -commit 211840304bbac0dcda454ef41c557d8bcfdc6c78 -Author: carll -Date: Tue Feb 16 21:23:52 2016 +0000 - - Power PPC 128bit modulo and carry instruction fix - - VEX commit 3209 fixed: an issue with caculating the carry to the next 32-bit - chunk for the Power PPC 128-bit add and subract instructions: vaddcuq, vadduqm, - vsubcuq, vsubuqm, vaddecuq, vaddeuqm, vsubecuq, vsubeuqm - - The corresponding test case didn't catch the issue. This commit adds data - values to the test that verify the issue is fixed. - - Valgrind Bugzilla 359472 - - - git-svn-id: svn://svn.valgrind.org/valgrind/trunk@15790 a5019735-40e9-0310-863c-91ae7b9d1cf9 - -diff --git a/none/tests/ppc64/jm_vec_isa_2_07.stdout.exp b/none/tests/ppc64/jm_vec_isa_2_07.stdout.exp -index 9b5c24f..099491d 100644 ---- a/none/tests/ppc64/jm_vec_isa_2_07.stdout.exp -+++ b/none/tests/ppc64/jm_vec_isa_2_07.stdout.exp -@@ -2,224 +2,1173 @@ mfvsrd: 0102030405060708 => 0102030405060708 - mfvsrd: 090a0b0c0e0d0e0f => 090a0b0c0e0d0e0f - mfvsrd: f1f2f3f4f5f6f7f8 => f1f2f3f4f5f6f7f8 - mfvsrd: f9fafbfcfefdfeff => f9fafbfcfefdfeff -+mfvsrd: 00007fffffffffff => 00007fffffffffff -+mfvsrd: ffff000000000000 => ffff000000000000 -+mfvsrd: 0000800000000000 => 0000800000000000 -+mfvsrd: 0000000000000000 => 0000000000000000 -+mfvsrd: ffffffffffffffff => ffffffffffffffff - - mfvsrwz: 0102030405060708 => 0000000005060708 - mfvsrwz: 090a0b0c0e0d0e0f => 000000000e0d0e0f - mfvsrwz: f1f2f3f4f5f6f7f8 => 00000000f5f6f7f8 - mfvsrwz: f9fafbfcfefdfeff => 00000000fefdfeff -+mfvsrwz: 00007fffffffffff => 00000000ffffffff -+mfvsrwz: ffff000000000000 => 0000000000000000 -+mfvsrwz: 0000800000000000 => 0000000000000000 -+mfvsrwz: 0000000000000000 => 0000000000000000 -+mfvsrwz: ffffffffffffffff => 00000000ffffffff - - mtvsrd: 0102030405060708 => 0102030405060708 - mtvsrd: 090a0b0c0e0d0e0f => 090a0b0c0e0d0e0f - mtvsrd: f1f2f3f4f5f6f7f8 => f1f2f3f4f5f6f7f8 - mtvsrd: f9fafbfcfefdfeff => f9fafbfcfefdfeff -+mtvsrd: 00007fffffffffff => 00007fffffffffff -+mtvsrd: ffff000000000000 => ffff000000000000 -+mtvsrd: 0000800000000000 => 0000800000000000 -+mtvsrd: 0000000000000000 => 0000000000000000 -+mtvsrd: ffffffffffffffff => ffffffffffffffff - - mtvsrwz: 05060708 => 0000000005060708 - mtvsrwz: 0e0d0e0f => 000000000e0d0e0f - mtvsrwz: f5f6f7f8 => 00000000f5f6f7f8 - mtvsrwz: fefdfeff => 00000000fefdfeff -+mtvsrwz: ffffffff => 00000000ffffffff -+mtvsrwz: 00000000 => 0000000000000000 -+mtvsrwz: 00000000 => 0000000000000000 -+mtvsrwz: 00000000 => 0000000000000000 -+mtvsrwz: ffffffff => 00000000ffffffff - - mtfprwa: 05060708 => 0000000005060708 - mtfprwa: 0e0d0e0f => 000000000e0d0e0f - mtfprwa: f5f6f7f8 => fffffffff5f6f7f8 - mtfprwa: fefdfeff => fffffffffefdfeff -+mtfprwa: ffffffff => ffffffffffffffff -+mtfprwa: 00000000 => 0000000000000000 -+mtfprwa: 00000000 => 0000000000000000 -+mtfprwa: 00000000 => 0000000000000000 -+mtfprwa: ffffffff => ffffffffffffffff - - vaddudm: 0102030405060708 @@ 0102030405060708 ==> 020406080a0c0e10 - 090a0b0c0e0d0e0f @@ 090a0b0c0e0d0e0f ==> 121416181c1a1c1e - vaddudm: 0102030405060708 @@ f1f2f3f4f5f6f7f8 ==> f2f4f6f8fafcff00 - 090a0b0c0e0d0e0f @@ f9fafbfcfefdfeff ==> 030507090d0b0d0e -+vaddudm: 0102030405060708 @@ 00007fffffffffff ==> 0102830405060707 -+ 090a0b0c0e0d0e0f @@ ffff000000000000 ==> 09090b0c0e0d0e0f -+vaddudm: 0102030405060708 @@ 0000800000000000 ==> 0102830405060708 -+ 090a0b0c0e0d0e0f @@ 0000000000000000 ==> 090a0b0c0e0d0e0f -+vaddudm: 0102030405060708 @@ ffffffffffffffff ==> 0102030405060707 -+ 090a0b0c0e0d0e0f @@ 0000000000000051 ==> 090a0b0c0e0d0e60 - vaddudm: f1f2f3f4f5f6f7f8 @@ 0102030405060708 ==> f2f4f6f8fafcff00 - f9fafbfcfefdfeff @@ 090a0b0c0e0d0e0f ==> 030507090d0b0d0e - vaddudm: f1f2f3f4f5f6f7f8 @@ f1f2f3f4f5f6f7f8 ==> e3e5e7e9ebedeff0 - f9fafbfcfefdfeff @@ f9fafbfcfefdfeff ==> f3f5f7f9fdfbfdfe -+vaddudm: f1f2f3f4f5f6f7f8 @@ 00007fffffffffff ==> f1f373f4f5f6f7f7 -+ f9fafbfcfefdfeff @@ ffff000000000000 ==> f9f9fbfcfefdfeff -+vaddudm: f1f2f3f4f5f6f7f8 @@ 0000800000000000 ==> f1f373f4f5f6f7f8 -+ f9fafbfcfefdfeff @@ 0000000000000000 ==> f9fafbfcfefdfeff -+vaddudm: f1f2f3f4f5f6f7f8 @@ ffffffffffffffff ==> f1f2f3f4f5f6f7f7 -+ f9fafbfcfefdfeff @@ 0000000000000051 ==> f9fafbfcfefdff50 -+vaddudm: 00007fffffffffff @@ 0102030405060708 ==> 0102830405060707 -+ ffff000000000000 @@ 090a0b0c0e0d0e0f ==> 09090b0c0e0d0e0f -+vaddudm: 00007fffffffffff @@ f1f2f3f4f5f6f7f8 ==> f1f373f4f5f6f7f7 -+ ffff000000000000 @@ f9fafbfcfefdfeff ==> f9f9fbfcfefdfeff -+vaddudm: 00007fffffffffff @@ 00007fffffffffff ==> 0000fffffffffffe -+ ffff000000000000 @@ ffff000000000000 ==> fffe000000000000 -+vaddudm: 00007fffffffffff @@ 0000800000000000 ==> 0000ffffffffffff -+ ffff000000000000 @@ 0000000000000000 ==> ffff000000000000 -+vaddudm: 00007fffffffffff @@ ffffffffffffffff ==> 00007ffffffffffe -+ ffff000000000000 @@ 0000000000000051 ==> ffff000000000051 -+vaddudm: 0000800000000000 @@ 0102030405060708 ==> 0102830405060708 -+ 0000000000000000 @@ 090a0b0c0e0d0e0f ==> 090a0b0c0e0d0e0f -+vaddudm: 0000800000000000 @@ f1f2f3f4f5f6f7f8 ==> f1f373f4f5f6f7f8 -+ 0000000000000000 @@ f9fafbfcfefdfeff ==> f9fafbfcfefdfeff -+vaddudm: 0000800000000000 @@ 00007fffffffffff ==> 0000ffffffffffff -+ 0000000000000000 @@ ffff000000000000 ==> ffff000000000000 -+vaddudm: 0000800000000000 @@ 0000800000000000 ==> 0001000000000000 -+ 0000000000000000 @@ 0000000000000000 ==> 0000000000000000 -+vaddudm: 0000800000000000 @@ ffffffffffffffff ==> 00007fffffffffff -+ 0000000000000000 @@ 0000000000000051 ==> 0000000000000051 -+vaddudm: ffffffffffffffff @@ 0102030405060708 ==> 0102030405060707 -+ 0000000000000051 @@ 090a0b0c0e0d0e0f ==> 090a0b0c0e0d0e60 -+vaddudm: ffffffffffffffff @@ f1f2f3f4f5f6f7f8 ==> f1f2f3f4f5f6f7f7 -+ 0000000000000051 @@ f9fafbfcfefdfeff ==> f9fafbfcfefdff50 -+vaddudm: ffffffffffffffff @@ 00007fffffffffff ==> 00007ffffffffffe -+ 0000000000000051 @@ ffff000000000000 ==> ffff000000000051 -+vaddudm: ffffffffffffffff @@ 0000800000000000 ==> 00007fffffffffff -+ 0000000000000051 @@ 0000000000000000 ==> 0000000000000051 -+vaddudm: ffffffffffffffff @@ ffffffffffffffff ==> fffffffffffffffe -+ 0000000000000051 @@ 0000000000000051 ==> 00000000000000a2 - - vsubudm: 0102030405060708 @@ 0102030405060708 ==> 0000000000000000 - 090a0b0c0e0d0e0f @@ 090a0b0c0e0d0e0f ==> 0000000000000000 - vsubudm: 0102030405060708 @@ f1f2f3f4f5f6f7f8 ==> 0f0f0f0f0f0f0f10 - 090a0b0c0e0d0e0f @@ f9fafbfcfefdfeff ==> 0f0f0f0f0f0f0f10 -+vsubudm: 0102030405060708 @@ 00007fffffffffff ==> 0101830405060709 -+ 090a0b0c0e0d0e0f @@ ffff000000000000 ==> 090b0b0c0e0d0e0f -+vsubudm: 0102030405060708 @@ 0000800000000000 ==> 0101830405060708 -+ 090a0b0c0e0d0e0f @@ 0000000000000000 ==> 090a0b0c0e0d0e0f -+vsubudm: 0102030405060708 @@ ffffffffffffffff ==> 0102030405060709 -+ 090a0b0c0e0d0e0f @@ 0000000000000051 ==> 090a0b0c0e0d0dbe - vsubudm: f1f2f3f4f5f6f7f8 @@ 0102030405060708 ==> f0f0f0f0f0f0f0f0 - f9fafbfcfefdfeff @@ 090a0b0c0e0d0e0f ==> f0f0f0f0f0f0f0f0 - vsubudm: f1f2f3f4f5f6f7f8 @@ f1f2f3f4f5f6f7f8 ==> 0000000000000000 - f9fafbfcfefdfeff @@ f9fafbfcfefdfeff ==> 0000000000000000 -+vsubudm: f1f2f3f4f5f6f7f8 @@ 00007fffffffffff ==> f1f273f4f5f6f7f9 -+ f9fafbfcfefdfeff @@ ffff000000000000 ==> f9fbfbfcfefdfeff -+vsubudm: f1f2f3f4f5f6f7f8 @@ 0000800000000000 ==> f1f273f4f5f6f7f8 -+ f9fafbfcfefdfeff @@ 0000000000000000 ==> f9fafbfcfefdfeff -+vsubudm: f1f2f3f4f5f6f7f8 @@ ffffffffffffffff ==> f1f2f3f4f5f6f7f9 -+ f9fafbfcfefdfeff @@ 0000000000000051 ==> f9fafbfcfefdfeae -+vsubudm: 00007fffffffffff @@ 0102030405060708 ==> fefe7cfbfaf9f8f7 -+ ffff000000000000 @@ 090a0b0c0e0d0e0f ==> f6f4f4f3f1f2f1f1 -+vsubudm: 00007fffffffffff @@ f1f2f3f4f5f6f7f8 ==> 0e0d8c0b0a090807 -+ ffff000000000000 @@ f9fafbfcfefdfeff ==> 0604040301020101 -+vsubudm: 00007fffffffffff @@ 00007fffffffffff ==> 0000000000000000 -+ ffff000000000000 @@ ffff000000000000 ==> 0000000000000000 -+vsubudm: 00007fffffffffff @@ 0000800000000000 ==> ffffffffffffffff -+ ffff000000000000 @@ 0000000000000000 ==> ffff000000000000 -+vsubudm: 00007fffffffffff @@ ffffffffffffffff ==> 0000800000000000 -+ ffff000000000000 @@ 0000000000000051 ==> fffeffffffffffaf -+vsubudm: 0000800000000000 @@ 0102030405060708 ==> fefe7cfbfaf9f8f8 -+ 0000000000000000 @@ 090a0b0c0e0d0e0f ==> f6f5f4f3f1f2f1f1 -+vsubudm: 0000800000000000 @@ f1f2f3f4f5f6f7f8 ==> 0e0d8c0b0a090808 -+ 0000000000000000 @@ f9fafbfcfefdfeff ==> 0605040301020101 -+vsubudm: 0000800000000000 @@ 00007fffffffffff ==> 0000000000000001 -+ 0000000000000000 @@ ffff000000000000 ==> 0001000000000000 -+vsubudm: 0000800000000000 @@ 0000800000000000 ==> 0000000000000000 -+ 0000000000000000 @@ 0000000000000000 ==> 0000000000000000 -+vsubudm: 0000800000000000 @@ ffffffffffffffff ==> 0000800000000001 -+ 0000000000000000 @@ 0000000000000051 ==> ffffffffffffffaf -+vsubudm: ffffffffffffffff @@ 0102030405060708 ==> fefdfcfbfaf9f8f7 -+ 0000000000000051 @@ 090a0b0c0e0d0e0f ==> f6f5f4f3f1f2f242 -+vsubudm: ffffffffffffffff @@ f1f2f3f4f5f6f7f8 ==> 0e0d0c0b0a090807 -+ 0000000000000051 @@ f9fafbfcfefdfeff ==> 0605040301020152 -+vsubudm: ffffffffffffffff @@ 00007fffffffffff ==> ffff800000000000 -+ 0000000000000051 @@ ffff000000000000 ==> 0001000000000051 -+vsubudm: ffffffffffffffff @@ 0000800000000000 ==> ffff7fffffffffff -+ 0000000000000051 @@ 0000000000000000 ==> 0000000000000051 -+vsubudm: ffffffffffffffff @@ ffffffffffffffff ==> 0000000000000000 -+ 0000000000000051 @@ 0000000000000051 ==> 0000000000000000 - - vmaxud: 0102030405060708 @@ 0102030405060708 ==> 0102030405060708 - 090a0b0c0e0d0e0f @@ 090a0b0c0e0d0e0f ==> 090a0b0c0e0d0e0f - vmaxud: 0102030405060708 @@ f1f2f3f4f5f6f7f8 ==> f1f2f3f4f5f6f7f8 - 090a0b0c0e0d0e0f @@ f9fafbfcfefdfeff ==> f9fafbfcfefdfeff -+vmaxud: 0102030405060708 @@ 00007fffffffffff ==> 0102030405060708 -+ 090a0b0c0e0d0e0f @@ ffff000000000000 ==> ffff000000000000 -+vmaxud: 0102030405060708 @@ 0000800000000000 ==> 0102030405060708 -+ 090a0b0c0e0d0e0f @@ 0000000000000000 ==> 090a0b0c0e0d0e0f -+vmaxud: 0102030405060708 @@ ffffffffffffffff ==> ffffffffffffffff -+ 090a0b0c0e0d0e0f @@ 0000000000000051 ==> 090a0b0c0e0d0e0f - vmaxud: f1f2f3f4f5f6f7f8 @@ 0102030405060708 ==> f1f2f3f4f5f6f7f8 - f9fafbfcfefdfeff @@ 090a0b0c0e0d0e0f ==> f9fafbfcfefdfeff - vmaxud: f1f2f3f4f5f6f7f8 @@ f1f2f3f4f5f6f7f8 ==> f1f2f3f4f5f6f7f8 - f9fafbfcfefdfeff @@ f9fafbfcfefdfeff ==> f9fafbfcfefdfeff -+vmaxud: f1f2f3f4f5f6f7f8 @@ 00007fffffffffff ==> f1f2f3f4f5f6f7f8 -+ f9fafbfcfefdfeff @@ ffff000000000000 ==> ffff000000000000 -+vmaxud: f1f2f3f4f5f6f7f8 @@ 0000800000000000 ==> f1f2f3f4f5f6f7f8 -+ f9fafbfcfefdfeff @@ 0000000000000000 ==> f9fafbfcfefdfeff -+vmaxud: f1f2f3f4f5f6f7f8 @@ ffffffffffffffff ==> ffffffffffffffff -+ f9fafbfcfefdfeff @@ 0000000000000051 ==> f9fafbfcfefdfeff -+vmaxud: 00007fffffffffff @@ 0102030405060708 ==> 0102030405060708 -+ ffff000000000000 @@ 090a0b0c0e0d0e0f ==> ffff000000000000 -+vmaxud: 00007fffffffffff @@ f1f2f3f4f5f6f7f8 ==> f1f2f3f4f5f6f7f8 -+ ffff000000000000 @@ f9fafbfcfefdfeff ==> ffff000000000000 -+vmaxud: 00007fffffffffff @@ 00007fffffffffff ==> 00007fffffffffff -+ ffff000000000000 @@ ffff000000000000 ==> ffff000000000000 -+vmaxud: 00007fffffffffff @@ 0000800000000000 ==> 0000800000000000 -+ ffff000000000000 @@ 0000000000000000 ==> ffff000000000000 -+vmaxud: 00007fffffffffff @@ ffffffffffffffff ==> ffffffffffffffff -+ ffff000000000000 @@ 0000000000000051 ==> ffff000000000000 -+vmaxud: 0000800000000000 @@ 0102030405060708 ==> 0102030405060708 -+ 0000000000000000 @@ 090a0b0c0e0d0e0f ==> 090a0b0c0e0d0e0f -+vmaxud: 0000800000000000 @@ f1f2f3f4f5f6f7f8 ==> f1f2f3f4f5f6f7f8 -+ 0000000000000000 @@ f9fafbfcfefdfeff ==> f9fafbfcfefdfeff -+vmaxud: 0000800000000000 @@ 00007fffffffffff ==> 0000800000000000 -+ 0000000000000000 @@ ffff000000000000 ==> ffff000000000000 -+vmaxud: 0000800000000000 @@ 0000800000000000 ==> 0000800000000000 -+ 0000000000000000 @@ 0000000000000000 ==> 0000000000000000 -+vmaxud: 0000800000000000 @@ ffffffffffffffff ==> ffffffffffffffff -+ 0000000000000000 @@ 0000000000000051 ==> 0000000000000051 -+vmaxud: ffffffffffffffff @@ 0102030405060708 ==> ffffffffffffffff -+ 0000000000000051 @@ 090a0b0c0e0d0e0f ==> 090a0b0c0e0d0e0f -+vmaxud: ffffffffffffffff @@ f1f2f3f4f5f6f7f8 ==> ffffffffffffffff -+ 0000000000000051 @@ f9fafbfcfefdfeff ==> f9fafbfcfefdfeff -+vmaxud: ffffffffffffffff @@ 00007fffffffffff ==> ffffffffffffffff -+ 0000000000000051 @@ ffff000000000000 ==> ffff000000000000 -+vmaxud: ffffffffffffffff @@ 0000800000000000 ==> ffffffffffffffff -+ 0000000000000051 @@ 0000000000000000 ==> 0000000000000051 -+vmaxud: ffffffffffffffff @@ ffffffffffffffff ==> ffffffffffffffff -+ 0000000000000051 @@ 0000000000000051 ==> 0000000000000051 - - vmaxsd: 0102030405060708 @@ 0102030405060708 ==> 0102030405060708 - 090a0b0c0e0d0e0f @@ 090a0b0c0e0d0e0f ==> 090a0b0c0e0d0e0f - vmaxsd: 0102030405060708 @@ f1f2f3f4f5f6f7f8 ==> 0102030405060708 - 090a0b0c0e0d0e0f @@ f9fafbfcfefdfeff ==> 090a0b0c0e0d0e0f -+vmaxsd: 0102030405060708 @@ 00007fffffffffff ==> 0102030405060708 -+ 090a0b0c0e0d0e0f @@ ffff000000000000 ==> 090a0b0c0e0d0e0f -+vmaxsd: 0102030405060708 @@ 0000800000000000 ==> 0102030405060708 -+ 090a0b0c0e0d0e0f @@ 0000000000000000 ==> 090a0b0c0e0d0e0f -+vmaxsd: 0102030405060708 @@ ffffffffffffffff ==> 0102030405060708 -+ 090a0b0c0e0d0e0f @@ 0000000000000051 ==> 090a0b0c0e0d0e0f - vmaxsd: f1f2f3f4f5f6f7f8 @@ 0102030405060708 ==> 0102030405060708 - f9fafbfcfefdfeff @@ 090a0b0c0e0d0e0f ==> 090a0b0c0e0d0e0f - vmaxsd: f1f2f3f4f5f6f7f8 @@ f1f2f3f4f5f6f7f8 ==> f1f2f3f4f5f6f7f8 - f9fafbfcfefdfeff @@ f9fafbfcfefdfeff ==> f9fafbfcfefdfeff -+vmaxsd: f1f2f3f4f5f6f7f8 @@ 00007fffffffffff ==> 00007fffffffffff -+ f9fafbfcfefdfeff @@ ffff000000000000 ==> ffff000000000000 -+vmaxsd: f1f2f3f4f5f6f7f8 @@ 0000800000000000 ==> 0000800000000000 -+ f9fafbfcfefdfeff @@ 0000000000000000 ==> 0000000000000000 -+vmaxsd: f1f2f3f4f5f6f7f8 @@ ffffffffffffffff ==> ffffffffffffffff -+ f9fafbfcfefdfeff @@ 0000000000000051 ==> 0000000000000051 -+vmaxsd: 00007fffffffffff @@ 0102030405060708 ==> 0102030405060708 -+ ffff000000000000 @@ 090a0b0c0e0d0e0f ==> 090a0b0c0e0d0e0f -+vmaxsd: 00007fffffffffff @@ f1f2f3f4f5f6f7f8 ==> 00007fffffffffff -+ ffff000000000000 @@ f9fafbfcfefdfeff ==> ffff000000000000 -+vmaxsd: 00007fffffffffff @@ 00007fffffffffff ==> 00007fffffffffff -+ ffff000000000000 @@ ffff000000000000 ==> ffff000000000000 -+vmaxsd: 00007fffffffffff @@ 0000800000000000 ==> 0000800000000000 -+ ffff000000000000 @@ 0000000000000000 ==> 0000000000000000 -+vmaxsd: 00007fffffffffff @@ ffffffffffffffff ==> 00007fffffffffff -+ ffff000000000000 @@ 0000000000000051 ==> 0000000000000051 -+vmaxsd: 0000800000000000 @@ 0102030405060708 ==> 0102030405060708 -+ 0000000000000000 @@ 090a0b0c0e0d0e0f ==> 090a0b0c0e0d0e0f -+vmaxsd: 0000800000000000 @@ f1f2f3f4f5f6f7f8 ==> 0000800000000000 -+ 0000000000000000 @@ f9fafbfcfefdfeff ==> 0000000000000000 -+vmaxsd: 0000800000000000 @@ 00007fffffffffff ==> 0000800000000000 -+ 0000000000000000 @@ ffff000000000000 ==> 0000000000000000 -+vmaxsd: 0000800000000000 @@ 0000800000000000 ==> 0000800000000000 -+ 0000000000000000 @@ 0000000000000000 ==> 0000000000000000 -+vmaxsd: 0000800000000000 @@ ffffffffffffffff ==> 0000800000000000 -+ 0000000000000000 @@ 0000000000000051 ==> 0000000000000051 -+vmaxsd: ffffffffffffffff @@ 0102030405060708 ==> 0102030405060708 -+ 0000000000000051 @@ 090a0b0c0e0d0e0f ==> 090a0b0c0e0d0e0f -+vmaxsd: ffffffffffffffff @@ f1f2f3f4f5f6f7f8 ==> ffffffffffffffff -+ 0000000000000051 @@ f9fafbfcfefdfeff ==> 0000000000000051 -+vmaxsd: ffffffffffffffff @@ 00007fffffffffff ==> 00007fffffffffff -+ 0000000000000051 @@ ffff000000000000 ==> 0000000000000051 -+vmaxsd: ffffffffffffffff @@ 0000800000000000 ==> 0000800000000000 -+ 0000000000000051 @@ 0000000000000000 ==> 0000000000000051 -+vmaxsd: ffffffffffffffff @@ ffffffffffffffff ==> ffffffffffffffff -+ 0000000000000051 @@ 0000000000000051 ==> 0000000000000051 - - vminud: 0102030405060708 @@ 0102030405060708 ==> 0102030405060708 - 090a0b0c0e0d0e0f @@ 090a0b0c0e0d0e0f ==> 090a0b0c0e0d0e0f - vminud: 0102030405060708 @@ f1f2f3f4f5f6f7f8 ==> 0102030405060708 - 090a0b0c0e0d0e0f @@ f9fafbfcfefdfeff ==> 090a0b0c0e0d0e0f -+vminud: 0102030405060708 @@ 00007fffffffffff ==> 00007fffffffffff -+ 090a0b0c0e0d0e0f @@ ffff000000000000 ==> 090a0b0c0e0d0e0f -+vminud: 0102030405060708 @@ 0000800000000000 ==> 0000800000000000 -+ 090a0b0c0e0d0e0f @@ 0000000000000000 ==> 0000000000000000 -+vminud: 0102030405060708 @@ ffffffffffffffff ==> 0102030405060708 -+ 090a0b0c0e0d0e0f @@ 0000000000000051 ==> 0000000000000051 - vminud: f1f2f3f4f5f6f7f8 @@ 0102030405060708 ==> 0102030405060708 - f9fafbfcfefdfeff @@ 090a0b0c0e0d0e0f ==> 090a0b0c0e0d0e0f - vminud: f1f2f3f4f5f6f7f8 @@ f1f2f3f4f5f6f7f8 ==> f1f2f3f4f5f6f7f8 - f9fafbfcfefdfeff @@ f9fafbfcfefdfeff ==> f9fafbfcfefdfeff -+vminud: f1f2f3f4f5f6f7f8 @@ 00007fffffffffff ==> 00007fffffffffff -+ f9fafbfcfefdfeff @@ ffff000000000000 ==> f9fafbfcfefdfeff -+vminud: f1f2f3f4f5f6f7f8 @@ 0000800000000000 ==> 0000800000000000 -+ f9fafbfcfefdfeff @@ 0000000000000000 ==> 0000000000000000 -+vminud: f1f2f3f4f5f6f7f8 @@ ffffffffffffffff ==> f1f2f3f4f5f6f7f8 -+ f9fafbfcfefdfeff @@ 0000000000000051 ==> 0000000000000051 -+vminud: 00007fffffffffff @@ 0102030405060708 ==> 00007fffffffffff -+ ffff000000000000 @@ 090a0b0c0e0d0e0f ==> 090a0b0c0e0d0e0f -+vminud: 00007fffffffffff @@ f1f2f3f4f5f6f7f8 ==> 00007fffffffffff -+ ffff000000000000 @@ f9fafbfcfefdfeff ==> f9fafbfcfefdfeff -+vminud: 00007fffffffffff @@ 00007fffffffffff ==> 00007fffffffffff -+ ffff000000000000 @@ ffff000000000000 ==> ffff000000000000 -+vminud: 00007fffffffffff @@ 0000800000000000 ==> 00007fffffffffff -+ ffff000000000000 @@ 0000000000000000 ==> 0000000000000000 -+vminud: 00007fffffffffff @@ ffffffffffffffff ==> 00007fffffffffff -+ ffff000000000000 @@ 0000000000000051 ==> 0000000000000051 -+vminud: 0000800000000000 @@ 0102030405060708 ==> 0000800000000000 -+ 0000000000000000 @@ 090a0b0c0e0d0e0f ==> 0000000000000000 -+vminud: 0000800000000000 @@ f1f2f3f4f5f6f7f8 ==> 0000800000000000 -+ 0000000000000000 @@ f9fafbfcfefdfeff ==> 0000000000000000 -+vminud: 0000800000000000 @@ 00007fffffffffff ==> 00007fffffffffff -+ 0000000000000000 @@ ffff000000000000 ==> 0000000000000000 -+vminud: 0000800000000000 @@ 0000800000000000 ==> 0000800000000000 -+ 0000000000000000 @@ 0000000000000000 ==> 0000000000000000 -+vminud: 0000800000000000 @@ ffffffffffffffff ==> 0000800000000000 -+ 0000000000000000 @@ 0000000000000051 ==> 0000000000000000 -+vminud: ffffffffffffffff @@ 0102030405060708 ==> 0102030405060708 -+ 0000000000000051 @@ 090a0b0c0e0d0e0f ==> 0000000000000051 -+vminud: ffffffffffffffff @@ f1f2f3f4f5f6f7f8 ==> f1f2f3f4f5f6f7f8 -+ 0000000000000051 @@ f9fafbfcfefdfeff ==> 0000000000000051 -+vminud: ffffffffffffffff @@ 00007fffffffffff ==> 00007fffffffffff -+ 0000000000000051 @@ ffff000000000000 ==> 0000000000000051 -+vminud: ffffffffffffffff @@ 0000800000000000 ==> 0000800000000000 -+ 0000000000000051 @@ 0000000000000000 ==> 0000000000000000 -+vminud: ffffffffffffffff @@ ffffffffffffffff ==> ffffffffffffffff -+ 0000000000000051 @@ 0000000000000051 ==> 0000000000000051 - - vminsd: 0102030405060708 @@ 0102030405060708 ==> 0102030405060708 - 090a0b0c0e0d0e0f @@ 090a0b0c0e0d0e0f ==> 090a0b0c0e0d0e0f - vminsd: 0102030405060708 @@ f1f2f3f4f5f6f7f8 ==> f1f2f3f4f5f6f7f8 - 090a0b0c0e0d0e0f @@ f9fafbfcfefdfeff ==> f9fafbfcfefdfeff -+vminsd: 0102030405060708 @@ 00007fffffffffff ==> 00007fffffffffff -+ 090a0b0c0e0d0e0f @@ ffff000000000000 ==> ffff000000000000 -+vminsd: 0102030405060708 @@ 0000800000000000 ==> 0000800000000000 -+ 090a0b0c0e0d0e0f @@ 0000000000000000 ==> 0000000000000000 -+vminsd: 0102030405060708 @@ ffffffffffffffff ==> ffffffffffffffff -+ 090a0b0c0e0d0e0f @@ 0000000000000051 ==> 0000000000000051 - vminsd: f1f2f3f4f5f6f7f8 @@ 0102030405060708 ==> f1f2f3f4f5f6f7f8 - f9fafbfcfefdfeff @@ 090a0b0c0e0d0e0f ==> f9fafbfcfefdfeff - vminsd: f1f2f3f4f5f6f7f8 @@ f1f2f3f4f5f6f7f8 ==> f1f2f3f4f5f6f7f8 - f9fafbfcfefdfeff @@ f9fafbfcfefdfeff ==> f9fafbfcfefdfeff -+vminsd: f1f2f3f4f5f6f7f8 @@ 00007fffffffffff ==> f1f2f3f4f5f6f7f8 -+ f9fafbfcfefdfeff @@ ffff000000000000 ==> f9fafbfcfefdfeff -+vminsd: f1f2f3f4f5f6f7f8 @@ 0000800000000000 ==> f1f2f3f4f5f6f7f8 -+ f9fafbfcfefdfeff @@ 0000000000000000 ==> f9fafbfcfefdfeff -+vminsd: f1f2f3f4f5f6f7f8 @@ ffffffffffffffff ==> f1f2f3f4f5f6f7f8 -+ f9fafbfcfefdfeff @@ 0000000000000051 ==> f9fafbfcfefdfeff -+vminsd: 00007fffffffffff @@ 0102030405060708 ==> 00007fffffffffff -+ ffff000000000000 @@ 090a0b0c0e0d0e0f ==> ffff000000000000 -+vminsd: 00007fffffffffff @@ f1f2f3f4f5f6f7f8 ==> f1f2f3f4f5f6f7f8 -+ ffff000000000000 @@ f9fafbfcfefdfeff ==> f9fafbfcfefdfeff -+vminsd: 00007fffffffffff @@ 00007fffffffffff ==> 00007fffffffffff -+ ffff000000000000 @@ ffff000000000000 ==> ffff000000000000 -+vminsd: 00007fffffffffff @@ 0000800000000000 ==> 00007fffffffffff -+ ffff000000000000 @@ 0000000000000000 ==> ffff000000000000 -+vminsd: 00007fffffffffff @@ ffffffffffffffff ==> ffffffffffffffff -+ ffff000000000000 @@ 0000000000000051 ==> ffff000000000000 -+vminsd: 0000800000000000 @@ 0102030405060708 ==> 0000800000000000 -+ 0000000000000000 @@ 090a0b0c0e0d0e0f ==> 0000000000000000 -+vminsd: 0000800000000000 @@ f1f2f3f4f5f6f7f8 ==> f1f2f3f4f5f6f7f8 -+ 0000000000000000 @@ f9fafbfcfefdfeff ==> f9fafbfcfefdfeff -+vminsd: 0000800000000000 @@ 00007fffffffffff ==> 00007fffffffffff -+ 0000000000000000 @@ ffff000000000000 ==> ffff000000000000 -+vminsd: 0000800000000000 @@ 0000800000000000 ==> 0000800000000000 -+ 0000000000000000 @@ 0000000000000000 ==> 0000000000000000 -+vminsd: 0000800000000000 @@ ffffffffffffffff ==> ffffffffffffffff -+ 0000000000000000 @@ 0000000000000051 ==> 0000000000000000 -+vminsd: ffffffffffffffff @@ 0102030405060708 ==> ffffffffffffffff -+ 0000000000000051 @@ 090a0b0c0e0d0e0f ==> 0000000000000051 -+vminsd: ffffffffffffffff @@ f1f2f3f4f5f6f7f8 ==> f1f2f3f4f5f6f7f8 -+ 0000000000000051 @@ f9fafbfcfefdfeff ==> f9fafbfcfefdfeff -+vminsd: ffffffffffffffff @@ 00007fffffffffff ==> ffffffffffffffff -+ 0000000000000051 @@ ffff000000000000 ==> ffff000000000000 -+vminsd: ffffffffffffffff @@ 0000800000000000 ==> ffffffffffffffff -+ 0000000000000051 @@ 0000000000000000 ==> 0000000000000000 -+vminsd: ffffffffffffffff @@ ffffffffffffffff ==> ffffffffffffffff -+ 0000000000000051 @@ 0000000000000051 ==> 0000000000000051 - - vcmpequd: 0102030405060708 @@ 0102030405060708 ==> ffffffffffffffff - 090a0b0c0e0d0e0f @@ 090a0b0c0e0d0e0f ==> ffffffffffffffff - vcmpequd: 0102030405060708 @@ f1f2f3f4f5f6f7f8 ==> 0000000000000000 - 090a0b0c0e0d0e0f @@ f9fafbfcfefdfeff ==> 0000000000000000 -+vcmpequd: 0102030405060708 @@ 00007fffffffffff ==> 0000000000000000 -+ 090a0b0c0e0d0e0f @@ ffff000000000000 ==> 0000000000000000 -+vcmpequd: 0102030405060708 @@ 0000800000000000 ==> 0000000000000000 -+ 090a0b0c0e0d0e0f @@ 0000000000000000 ==> 0000000000000000 -+vcmpequd: 0102030405060708 @@ ffffffffffffffff ==> 0000000000000000 -+ 090a0b0c0e0d0e0f @@ 0000000000000051 ==> 0000000000000000 - vcmpequd: f1f2f3f4f5f6f7f8 @@ 0102030405060708 ==> 0000000000000000 - f9fafbfcfefdfeff @@ 090a0b0c0e0d0e0f ==> 0000000000000000 - vcmpequd: f1f2f3f4f5f6f7f8 @@ f1f2f3f4f5f6f7f8 ==> ffffffffffffffff - f9fafbfcfefdfeff @@ f9fafbfcfefdfeff ==> ffffffffffffffff -+vcmpequd: f1f2f3f4f5f6f7f8 @@ 00007fffffffffff ==> 0000000000000000 -+ f9fafbfcfefdfeff @@ ffff000000000000 ==> 0000000000000000 -+vcmpequd: f1f2f3f4f5f6f7f8 @@ 0000800000000000 ==> 0000000000000000 -+ f9fafbfcfefdfeff @@ 0000000000000000 ==> 0000000000000000 -+vcmpequd: f1f2f3f4f5f6f7f8 @@ ffffffffffffffff ==> 0000000000000000 -+ f9fafbfcfefdfeff @@ 0000000000000051 ==> 0000000000000000 -+vcmpequd: 00007fffffffffff @@ 0102030405060708 ==> 0000000000000000 -+ ffff000000000000 @@ 090a0b0c0e0d0e0f ==> 0000000000000000 -+vcmpequd: 00007fffffffffff @@ f1f2f3f4f5f6f7f8 ==> 0000000000000000 -+ ffff000000000000 @@ f9fafbfcfefdfeff ==> 0000000000000000 -+vcmpequd: 00007fffffffffff @@ 00007fffffffffff ==> ffffffffffffffff -+ ffff000000000000 @@ ffff000000000000 ==> ffffffffffffffff -+vcmpequd: 00007fffffffffff @@ 0000800000000000 ==> 0000000000000000 -+ ffff000000000000 @@ 0000000000000000 ==> 0000000000000000 -+vcmpequd: 00007fffffffffff @@ ffffffffffffffff ==> 0000000000000000 -+ ffff000000000000 @@ 0000000000000051 ==> 0000000000000000 -+vcmpequd: 0000800000000000 @@ 0102030405060708 ==> 0000000000000000 -+ 0000000000000000 @@ 090a0b0c0e0d0e0f ==> 0000000000000000 -+vcmpequd: 0000800000000000 @@ f1f2f3f4f5f6f7f8 ==> 0000000000000000 -+ 0000000000000000 @@ f9fafbfcfefdfeff ==> 0000000000000000 -+vcmpequd: 0000800000000000 @@ 00007fffffffffff ==> 0000000000000000 -+ 0000000000000000 @@ ffff000000000000 ==> 0000000000000000 -+vcmpequd: 0000800000000000 @@ 0000800000000000 ==> ffffffffffffffff -+ 0000000000000000 @@ 0000000000000000 ==> ffffffffffffffff -+vcmpequd: 0000800000000000 @@ ffffffffffffffff ==> 0000000000000000 -+ 0000000000000000 @@ 0000000000000051 ==> 0000000000000000 -+vcmpequd: ffffffffffffffff @@ 0102030405060708 ==> 0000000000000000 -+ 0000000000000051 @@ 090a0b0c0e0d0e0f ==> 0000000000000000 -+vcmpequd: ffffffffffffffff @@ f1f2f3f4f5f6f7f8 ==> 0000000000000000 -+ 0000000000000051 @@ f9fafbfcfefdfeff ==> 0000000000000000 -+vcmpequd: ffffffffffffffff @@ 00007fffffffffff ==> 0000000000000000 -+ 0000000000000051 @@ ffff000000000000 ==> 0000000000000000 -+vcmpequd: ffffffffffffffff @@ 0000800000000000 ==> 0000000000000000 -+ 0000000000000051 @@ 0000000000000000 ==> 0000000000000000 -+vcmpequd: ffffffffffffffff @@ ffffffffffffffff ==> ffffffffffffffff -+ 0000000000000051 @@ 0000000000000051 ==> ffffffffffffffff - - vcmpgtud: 0102030405060708 @@ 0102030405060708 ==> 0000000000000000 - 090a0b0c0e0d0e0f @@ 090a0b0c0e0d0e0f ==> 0000000000000000 - vcmpgtud: 0102030405060708 @@ f1f2f3f4f5f6f7f8 ==> 0000000000000000 - 090a0b0c0e0d0e0f @@ f9fafbfcfefdfeff ==> 0000000000000000 -+vcmpgtud: 0102030405060708 @@ 00007fffffffffff ==> ffffffffffffffff -+ 090a0b0c0e0d0e0f @@ ffff000000000000 ==> 0000000000000000 -+vcmpgtud: 0102030405060708 @@ 0000800000000000 ==> ffffffffffffffff -+ 090a0b0c0e0d0e0f @@ 0000000000000000 ==> ffffffffffffffff -+vcmpgtud: 0102030405060708 @@ ffffffffffffffff ==> 0000000000000000 -+ 090a0b0c0e0d0e0f @@ 0000000000000051 ==> ffffffffffffffff - vcmpgtud: f1f2f3f4f5f6f7f8 @@ 0102030405060708 ==> ffffffffffffffff - f9fafbfcfefdfeff @@ 090a0b0c0e0d0e0f ==> ffffffffffffffff - vcmpgtud: f1f2f3f4f5f6f7f8 @@ f1f2f3f4f5f6f7f8 ==> 0000000000000000 - f9fafbfcfefdfeff @@ f9fafbfcfefdfeff ==> 0000000000000000 -+vcmpgtud: f1f2f3f4f5f6f7f8 @@ 00007fffffffffff ==> ffffffffffffffff -+ f9fafbfcfefdfeff @@ ffff000000000000 ==> 0000000000000000 -+vcmpgtud: f1f2f3f4f5f6f7f8 @@ 0000800000000000 ==> ffffffffffffffff -+ f9fafbfcfefdfeff @@ 0000000000000000 ==> ffffffffffffffff -+vcmpgtud: f1f2f3f4f5f6f7f8 @@ ffffffffffffffff ==> 0000000000000000 -+ f9fafbfcfefdfeff @@ 0000000000000051 ==> ffffffffffffffff -+vcmpgtud: 00007fffffffffff @@ 0102030405060708 ==> 0000000000000000 -+ ffff000000000000 @@ 090a0b0c0e0d0e0f ==> ffffffffffffffff -+vcmpgtud: 00007fffffffffff @@ f1f2f3f4f5f6f7f8 ==> 0000000000000000 -+ ffff000000000000 @@ f9fafbfcfefdfeff ==> ffffffffffffffff -+vcmpgtud: 00007fffffffffff @@ 00007fffffffffff ==> 0000000000000000 -+ ffff000000000000 @@ ffff000000000000 ==> 0000000000000000 -+vcmpgtud: 00007fffffffffff @@ 0000800000000000 ==> 0000000000000000 -+ ffff000000000000 @@ 0000000000000000 ==> ffffffffffffffff -+vcmpgtud: 00007fffffffffff @@ ffffffffffffffff ==> 0000000000000000 -+ ffff000000000000 @@ 0000000000000051 ==> ffffffffffffffff -+vcmpgtud: 0000800000000000 @@ 0102030405060708 ==> 0000000000000000 -+ 0000000000000000 @@ 090a0b0c0e0d0e0f ==> 0000000000000000 -+vcmpgtud: 0000800000000000 @@ f1f2f3f4f5f6f7f8 ==> 0000000000000000 -+ 0000000000000000 @@ f9fafbfcfefdfeff ==> 0000000000000000 -+vcmpgtud: 0000800000000000 @@ 00007fffffffffff ==> ffffffffffffffff -+ 0000000000000000 @@ ffff000000000000 ==> 0000000000000000 -+vcmpgtud: 0000800000000000 @@ 0000800000000000 ==> 0000000000000000 -+ 0000000000000000 @@ 0000000000000000 ==> 0000000000000000 -+vcmpgtud: 0000800000000000 @@ ffffffffffffffff ==> 0000000000000000 -+ 0000000000000000 @@ 0000000000000051 ==> 0000000000000000 -+vcmpgtud: ffffffffffffffff @@ 0102030405060708 ==> ffffffffffffffff -+ 0000000000000051 @@ 090a0b0c0e0d0e0f ==> 0000000000000000 -+vcmpgtud: ffffffffffffffff @@ f1f2f3f4f5f6f7f8 ==> ffffffffffffffff -+ 0000000000000051 @@ f9fafbfcfefdfeff ==> 0000000000000000 -+vcmpgtud: ffffffffffffffff @@ 00007fffffffffff ==> ffffffffffffffff -+ 0000000000000051 @@ ffff000000000000 ==> 0000000000000000 -+vcmpgtud: ffffffffffffffff @@ 0000800000000000 ==> ffffffffffffffff -+ 0000000000000051 @@ 0000000000000000 ==> ffffffffffffffff -+vcmpgtud: ffffffffffffffff @@ ffffffffffffffff ==> 0000000000000000 -+ 0000000000000051 @@ 0000000000000051 ==> 0000000000000000 - - vcmpgtsd: 0102030405060708 @@ 0102030405060708 ==> 0000000000000000 - 090a0b0c0e0d0e0f @@ 090a0b0c0e0d0e0f ==> 0000000000000000 - vcmpgtsd: 0102030405060708 @@ f1f2f3f4f5f6f7f8 ==> ffffffffffffffff - 090a0b0c0e0d0e0f @@ f9fafbfcfefdfeff ==> ffffffffffffffff -+vcmpgtsd: 0102030405060708 @@ 00007fffffffffff ==> ffffffffffffffff -+ 090a0b0c0e0d0e0f @@ ffff000000000000 ==> ffffffffffffffff -+vcmpgtsd: 0102030405060708 @@ 0000800000000000 ==> ffffffffffffffff -+ 090a0b0c0e0d0e0f @@ 0000000000000000 ==> ffffffffffffffff -+vcmpgtsd: 0102030405060708 @@ ffffffffffffffff ==> ffffffffffffffff -+ 090a0b0c0e0d0e0f @@ 0000000000000051 ==> ffffffffffffffff - vcmpgtsd: f1f2f3f4f5f6f7f8 @@ 0102030405060708 ==> 0000000000000000 - f9fafbfcfefdfeff @@ 090a0b0c0e0d0e0f ==> 0000000000000000 - vcmpgtsd: f1f2f3f4f5f6f7f8 @@ f1f2f3f4f5f6f7f8 ==> 0000000000000000 - f9fafbfcfefdfeff @@ f9fafbfcfefdfeff ==> 0000000000000000 -+vcmpgtsd: f1f2f3f4f5f6f7f8 @@ 00007fffffffffff ==> 0000000000000000 -+ f9fafbfcfefdfeff @@ ffff000000000000 ==> 0000000000000000 -+vcmpgtsd: f1f2f3f4f5f6f7f8 @@ 0000800000000000 ==> 0000000000000000 -+ f9fafbfcfefdfeff @@ 0000000000000000 ==> 0000000000000000 -+vcmpgtsd: f1f2f3f4f5f6f7f8 @@ ffffffffffffffff ==> 0000000000000000 -+ f9fafbfcfefdfeff @@ 0000000000000051 ==> 0000000000000000 -+vcmpgtsd: 00007fffffffffff @@ 0102030405060708 ==> 0000000000000000 -+ ffff000000000000 @@ 090a0b0c0e0d0e0f ==> 0000000000000000 -+vcmpgtsd: 00007fffffffffff @@ f1f2f3f4f5f6f7f8 ==> ffffffffffffffff -+ ffff000000000000 @@ f9fafbfcfefdfeff ==> ffffffffffffffff -+vcmpgtsd: 00007fffffffffff @@ 00007fffffffffff ==> 0000000000000000 -+ ffff000000000000 @@ ffff000000000000 ==> 0000000000000000 -+vcmpgtsd: 00007fffffffffff @@ 0000800000000000 ==> 0000000000000000 -+ ffff000000000000 @@ 0000000000000000 ==> 0000000000000000 -+vcmpgtsd: 00007fffffffffff @@ ffffffffffffffff ==> ffffffffffffffff -+ ffff000000000000 @@ 0000000000000051 ==> 0000000000000000 -+vcmpgtsd: 0000800000000000 @@ 0102030405060708 ==> 0000000000000000 -+ 0000000000000000 @@ 090a0b0c0e0d0e0f ==> 0000000000000000 -+vcmpgtsd: 0000800000000000 @@ f1f2f3f4f5f6f7f8 ==> ffffffffffffffff -+ 0000000000000000 @@ f9fafbfcfefdfeff ==> ffffffffffffffff -+vcmpgtsd: 0000800000000000 @@ 00007fffffffffff ==> ffffffffffffffff -+ 0000000000000000 @@ ffff000000000000 ==> ffffffffffffffff -+vcmpgtsd: 0000800000000000 @@ 0000800000000000 ==> 0000000000000000 -+ 0000000000000000 @@ 0000000000000000 ==> 0000000000000000 -+vcmpgtsd: 0000800000000000 @@ ffffffffffffffff ==> ffffffffffffffff -+ 0000000000000000 @@ 0000000000000051 ==> 0000000000000000 -+vcmpgtsd: ffffffffffffffff @@ 0102030405060708 ==> 0000000000000000 -+ 0000000000000051 @@ 090a0b0c0e0d0e0f ==> 0000000000000000 -+vcmpgtsd: ffffffffffffffff @@ f1f2f3f4f5f6f7f8 ==> ffffffffffffffff -+ 0000000000000051 @@ f9fafbfcfefdfeff ==> ffffffffffffffff -+vcmpgtsd: ffffffffffffffff @@ 00007fffffffffff ==> 0000000000000000 -+ 0000000000000051 @@ ffff000000000000 ==> ffffffffffffffff -+vcmpgtsd: ffffffffffffffff @@ 0000800000000000 ==> 0000000000000000 -+ 0000000000000051 @@ 0000000000000000 ==> ffffffffffffffff -+vcmpgtsd: ffffffffffffffff @@ ffffffffffffffff ==> 0000000000000000 -+ 0000000000000051 @@ 0000000000000051 ==> 0000000000000000 - - vrld: 0102030405060708 @@ 0102030405060708 ==> 0203040506070801 - 090a0b0c0e0d0e0f @@ 090a0b0c0e0d0e0f ==> 0586070687078485 - vrld: 0102030405060708 @@ f1f2f3f4f5f6f7f8 ==> 0801020304050607 - 090a0b0c0e0d0e0f @@ f9fafbfcfefdfeff ==> 8485058607068707 -+vrld: 0102030405060708 @@ 00007fffffffffff ==> 0081018202830384 -+ 090a0b0c0e0d0e0f @@ ffff000000000000 ==> 090a0b0c0e0d0e0f -+vrld: 0102030405060708 @@ 0000800000000000 ==> 0102030405060708 -+ 090a0b0c0e0d0e0f @@ 0000000000000000 ==> 090a0b0c0e0d0e0f -+vrld: 0102030405060708 @@ ffffffffffffffff ==> 0081018202830384 -+ 090a0b0c0e0d0e0f @@ 0000000000000051 ==> 16181c1a1c1e1214 - vrld: f1f2f3f4f5f6f7f8 @@ 0102030405060708 ==> f2f3f4f5f6f7f8f1 - f9fafbfcfefdfeff @@ 090a0b0c0e0d0e0f ==> 7dfe7f7eff7ffcfd - vrld: f1f2f3f4f5f6f7f8 @@ f1f2f3f4f5f6f7f8 ==> f8f1f2f3f4f5f6f7 - f9fafbfcfefdfeff @@ f9fafbfcfefdfeff ==> fcfd7dfe7f7eff7f -+vrld: f1f2f3f4f5f6f7f8 @@ 00007fffffffffff ==> 78f979fa7afb7bfc -+ f9fafbfcfefdfeff @@ ffff000000000000 ==> f9fafbfcfefdfeff -+vrld: f1f2f3f4f5f6f7f8 @@ 0000800000000000 ==> f1f2f3f4f5f6f7f8 -+ f9fafbfcfefdfeff @@ 0000000000000000 ==> f9fafbfcfefdfeff -+vrld: f1f2f3f4f5f6f7f8 @@ ffffffffffffffff ==> 78f979fa7afb7bfc -+ f9fafbfcfefdfeff @@ 0000000000000051 ==> f7f9fdfbfdfff3f5 -+vrld: 00007fffffffffff @@ 0102030405060708 ==> 007fffffffffff00 -+ ffff000000000000 @@ 090a0b0c0e0d0e0f ==> 8000000000007fff -+vrld: 00007fffffffffff @@ f1f2f3f4f5f6f7f8 ==> ff00007fffffffff -+ ffff000000000000 @@ f9fafbfcfefdfeff ==> 7fff800000000000 -+vrld: 00007fffffffffff @@ 00007fffffffffff ==> 80003fffffffffff -+ ffff000000000000 @@ ffff000000000000 ==> ffff000000000000 -+vrld: 00007fffffffffff @@ 0000800000000000 ==> 00007fffffffffff -+ ffff000000000000 @@ 0000000000000000 ==> ffff000000000000 -+vrld: 00007fffffffffff @@ ffffffffffffffff ==> 80003fffffffffff -+ ffff000000000000 @@ 0000000000000051 ==> 000000000001fffe -+vrld: 0000800000000000 @@ 0102030405060708 ==> 0080000000000000 -+ 0000000000000000 @@ 090a0b0c0e0d0e0f ==> 0000000000000000 -+vrld: 0000800000000000 @@ f1f2f3f4f5f6f7f8 ==> 0000008000000000 -+ 0000000000000000 @@ f9fafbfcfefdfeff ==> 0000000000000000 -+vrld: 0000800000000000 @@ 00007fffffffffff ==> 0000400000000000 -+ 0000000000000000 @@ ffff000000000000 ==> 0000000000000000 -+vrld: 0000800000000000 @@ 0000800000000000 ==> 0000800000000000 -+ 0000000000000000 @@ 0000000000000000 ==> 0000000000000000 -+vrld: 0000800000000000 @@ ffffffffffffffff ==> 0000400000000000 -+ 0000000000000000 @@ 0000000000000051 ==> 0000000000000000 -+vrld: ffffffffffffffff @@ 0102030405060708 ==> ffffffffffffffff -+ 0000000000000051 @@ 090a0b0c0e0d0e0f ==> 0000000000288000 -+vrld: ffffffffffffffff @@ f1f2f3f4f5f6f7f8 ==> ffffffffffffffff -+ 0000000000000051 @@ f9fafbfcfefdfeff ==> 8000000000000028 -+vrld: ffffffffffffffff @@ 00007fffffffffff ==> ffffffffffffffff -+ 0000000000000051 @@ ffff000000000000 ==> 0000000000000051 -+vrld: ffffffffffffffff @@ 0000800000000000 ==> ffffffffffffffff -+ 0000000000000051 @@ 0000000000000000 ==> 0000000000000051 -+vrld: ffffffffffffffff @@ ffffffffffffffff ==> ffffffffffffffff -+ 0000000000000051 @@ 0000000000000051 ==> 0000000000a20000 - - vsld: 0102030405060708 @@ 0102030405060708 ==> 0203040506070800 - 090a0b0c0e0d0e0f @@ 090a0b0c0e0d0e0f ==> 0586070687078000 - vsld: 0102030405060708 @@ f1f2f3f4f5f6f7f8 ==> 0800000000000000 - 090a0b0c0e0d0e0f @@ f9fafbfcfefdfeff ==> 8000000000000000 -+vsld: 0102030405060708 @@ 00007fffffffffff ==> 0000000000000000 -+ 090a0b0c0e0d0e0f @@ ffff000000000000 ==> 090a0b0c0e0d0e0f -+vsld: 0102030405060708 @@ 0000800000000000 ==> 0102030405060708 -+ 090a0b0c0e0d0e0f @@ 0000000000000000 ==> 090a0b0c0e0d0e0f -+vsld: 0102030405060708 @@ ffffffffffffffff ==> 0000000000000000 -+ 090a0b0c0e0d0e0f @@ 0000000000000051 ==> 16181c1a1c1e0000 - vsld: f1f2f3f4f5f6f7f8 @@ 0102030405060708 ==> f2f3f4f5f6f7f800 - f9fafbfcfefdfeff @@ 090a0b0c0e0d0e0f ==> 7dfe7f7eff7f8000 - vsld: f1f2f3f4f5f6f7f8 @@ f1f2f3f4f5f6f7f8 ==> f800000000000000 - f9fafbfcfefdfeff @@ f9fafbfcfefdfeff ==> 8000000000000000 -+vsld: f1f2f3f4f5f6f7f8 @@ 00007fffffffffff ==> 0000000000000000 -+ f9fafbfcfefdfeff @@ ffff000000000000 ==> f9fafbfcfefdfeff -+vsld: f1f2f3f4f5f6f7f8 @@ 0000800000000000 ==> f1f2f3f4f5f6f7f8 -+ f9fafbfcfefdfeff @@ 0000000000000000 ==> f9fafbfcfefdfeff -+vsld: f1f2f3f4f5f6f7f8 @@ ffffffffffffffff ==> 0000000000000000 -+ f9fafbfcfefdfeff @@ 0000000000000051 ==> f7f9fdfbfdfe0000 -+vsld: 00007fffffffffff @@ 0102030405060708 ==> 007fffffffffff00 -+ ffff000000000000 @@ 090a0b0c0e0d0e0f ==> 8000000000000000 -+vsld: 00007fffffffffff @@ f1f2f3f4f5f6f7f8 ==> ff00000000000000 -+ ffff000000000000 @@ f9fafbfcfefdfeff ==> 0000000000000000 -+vsld: 00007fffffffffff @@ 00007fffffffffff ==> 8000000000000000 -+ ffff000000000000 @@ ffff000000000000 ==> ffff000000000000 -+vsld: 00007fffffffffff @@ 0000800000000000 ==> 00007fffffffffff -+ ffff000000000000 @@ 0000000000000000 ==> ffff000000000000 -+vsld: 00007fffffffffff @@ ffffffffffffffff ==> 8000000000000000 -+ ffff000000000000 @@ 0000000000000051 ==> 0000000000000000 -+vsld: 0000800000000000 @@ 0102030405060708 ==> 0080000000000000 -+ 0000000000000000 @@ 090a0b0c0e0d0e0f ==> 0000000000000000 -+vsld: 0000800000000000 @@ f1f2f3f4f5f6f7f8 ==> 0000000000000000 -+ 0000000000000000 @@ f9fafbfcfefdfeff ==> 0000000000000000 -+vsld: 0000800000000000 @@ 00007fffffffffff ==> 0000000000000000 -+ 0000000000000000 @@ ffff000000000000 ==> 0000000000000000 -+vsld: 0000800000000000 @@ 0000800000000000 ==> 0000800000000000 -+ 0000000000000000 @@ 0000000000000000 ==> 0000000000000000 -+vsld: 0000800000000000 @@ ffffffffffffffff ==> 0000000000000000 -+ 0000000000000000 @@ 0000000000000051 ==> 0000000000000000 -+vsld: ffffffffffffffff @@ 0102030405060708 ==> ffffffffffffff00 -+ 0000000000000051 @@ 090a0b0c0e0d0e0f ==> 0000000000288000 -+vsld: ffffffffffffffff @@ f1f2f3f4f5f6f7f8 ==> ff00000000000000 -+ 0000000000000051 @@ f9fafbfcfefdfeff ==> 8000000000000000 -+vsld: ffffffffffffffff @@ 00007fffffffffff ==> 8000000000000000 -+ 0000000000000051 @@ ffff000000000000 ==> 0000000000000051 -+vsld: ffffffffffffffff @@ 0000800000000000 ==> ffffffffffffffff -+ 0000000000000051 @@ 0000000000000000 ==> 0000000000000051 -+vsld: ffffffffffffffff @@ ffffffffffffffff ==> 8000000000000000 -+ 0000000000000051 @@ 0000000000000051 ==> 0000000000a20000 - - vsrad: 0102030405060708 @@ 0102030405060708 ==> 0001020304050607 - 090a0b0c0e0d0e0f @@ 090a0b0c0e0d0e0f ==> 0000121416181c1a - vsrad: 0102030405060708 @@ f1f2f3f4f5f6f7f8 ==> 0000000000000001 - 090a0b0c0e0d0e0f @@ f9fafbfcfefdfeff ==> 0000000000000000 -+vsrad: 0102030405060708 @@ 00007fffffffffff ==> 0000000000000000 -+ 090a0b0c0e0d0e0f @@ ffff000000000000 ==> 090a0b0c0e0d0e0f -+vsrad: 0102030405060708 @@ 0000800000000000 ==> 0102030405060708 -+ 090a0b0c0e0d0e0f @@ 0000000000000000 ==> 090a0b0c0e0d0e0f -+vsrad: 0102030405060708 @@ ffffffffffffffff ==> 0000000000000000 -+ 090a0b0c0e0d0e0f @@ 0000000000000051 ==> 0000048505860706 - vsrad: f1f2f3f4f5f6f7f8 @@ 0102030405060708 ==> fff1f2f3f4f5f6f7 - f9fafbfcfefdfeff @@ 090a0b0c0e0d0e0f ==> fffff3f5f7f9fdfb - vsrad: f1f2f3f4f5f6f7f8 @@ f1f2f3f4f5f6f7f8 ==> fffffffffffffff1 - f9fafbfcfefdfeff @@ f9fafbfcfefdfeff ==> ffffffffffffffff -+vsrad: f1f2f3f4f5f6f7f8 @@ 00007fffffffffff ==> ffffffffffffffff -+ f9fafbfcfefdfeff @@ ffff000000000000 ==> f9fafbfcfefdfeff -+vsrad: f1f2f3f4f5f6f7f8 @@ 0000800000000000 ==> f1f2f3f4f5f6f7f8 -+ f9fafbfcfefdfeff @@ 0000000000000000 ==> f9fafbfcfefdfeff -+vsrad: f1f2f3f4f5f6f7f8 @@ ffffffffffffffff ==> ffffffffffffffff -+ f9fafbfcfefdfeff @@ 0000000000000051 ==> fffffcfd7dfe7f7e -+vsrad: 00007fffffffffff @@ 0102030405060708 ==> 0000007fffffffff -+ ffff000000000000 @@ 090a0b0c0e0d0e0f ==> fffffffe00000000 -+vsrad: 00007fffffffffff @@ f1f2f3f4f5f6f7f8 ==> 0000000000000000 -+ ffff000000000000 @@ f9fafbfcfefdfeff ==> ffffffffffffffff -+vsrad: 00007fffffffffff @@ 00007fffffffffff ==> 0000000000000000 -+ ffff000000000000 @@ ffff000000000000 ==> ffff000000000000 -+vsrad: 00007fffffffffff @@ 0000800000000000 ==> 00007fffffffffff -+ ffff000000000000 @@ 0000000000000000 ==> ffff000000000000 -+vsrad: 00007fffffffffff @@ ffffffffffffffff ==> 0000000000000000 -+ ffff000000000000 @@ 0000000000000051 ==> ffffffff80000000 -+vsrad: 0000800000000000 @@ 0102030405060708 ==> 0000008000000000 -+ 0000000000000000 @@ 090a0b0c0e0d0e0f ==> 0000000000000000 -+vsrad: 0000800000000000 @@ f1f2f3f4f5f6f7f8 ==> 0000000000000000 -+ 0000000000000000 @@ f9fafbfcfefdfeff ==> 0000000000000000 -+vsrad: 0000800000000000 @@ 00007fffffffffff ==> 0000000000000000 -+ 0000000000000000 @@ ffff000000000000 ==> 0000000000000000 -+vsrad: 0000800000000000 @@ 0000800000000000 ==> 0000800000000000 -+ 0000000000000000 @@ 0000000000000000 ==> 0000000000000000 -+vsrad: 0000800000000000 @@ ffffffffffffffff ==> 0000000000000000 -+ 0000000000000000 @@ 0000000000000051 ==> 0000000000000000 -+vsrad: ffffffffffffffff @@ 0102030405060708 ==> ffffffffffffffff -+ 0000000000000051 @@ 090a0b0c0e0d0e0f ==> 0000000000000000 -+vsrad: ffffffffffffffff @@ f1f2f3f4f5f6f7f8 ==> ffffffffffffffff -+ 0000000000000051 @@ f9fafbfcfefdfeff ==> 0000000000000000 -+vsrad: ffffffffffffffff @@ 00007fffffffffff ==> ffffffffffffffff -+ 0000000000000051 @@ ffff000000000000 ==> 0000000000000051 -+vsrad: ffffffffffffffff @@ 0000800000000000 ==> ffffffffffffffff -+ 0000000000000051 @@ 0000000000000000 ==> 0000000000000051 -+vsrad: ffffffffffffffff @@ ffffffffffffffff ==> ffffffffffffffff -+ 0000000000000051 @@ 0000000000000051 ==> 0000000000000000 - - vsrd: 0102030405060708 @@ 0102030405060708 ==> 0001020304050607 - 090a0b0c0e0d0e0f @@ 090a0b0c0e0d0e0f ==> 0000121416181c1a - vsrd: 0102030405060708 @@ f1f2f3f4f5f6f7f8 ==> 0000000000000001 - 090a0b0c0e0d0e0f @@ f9fafbfcfefdfeff ==> 0000000000000000 -+vsrd: 0102030405060708 @@ 00007fffffffffff ==> 0000000000000000 -+ 090a0b0c0e0d0e0f @@ ffff000000000000 ==> 090a0b0c0e0d0e0f -+vsrd: 0102030405060708 @@ 0000800000000000 ==> 0102030405060708 -+ 090a0b0c0e0d0e0f @@ 0000000000000000 ==> 090a0b0c0e0d0e0f -+vsrd: 0102030405060708 @@ ffffffffffffffff ==> 0000000000000000 -+ 090a0b0c0e0d0e0f @@ 0000000000000051 ==> 0000048505860706 - vsrd: f1f2f3f4f5f6f7f8 @@ 0102030405060708 ==> 00f1f2f3f4f5f6f7 - f9fafbfcfefdfeff @@ 090a0b0c0e0d0e0f ==> 0001f3f5f7f9fdfb - vsrd: f1f2f3f4f5f6f7f8 @@ f1f2f3f4f5f6f7f8 ==> 00000000000000f1 - f9fafbfcfefdfeff @@ f9fafbfcfefdfeff ==> 0000000000000001 -+vsrd: f1f2f3f4f5f6f7f8 @@ 00007fffffffffff ==> 0000000000000001 -+ f9fafbfcfefdfeff @@ ffff000000000000 ==> f9fafbfcfefdfeff -+vsrd: f1f2f3f4f5f6f7f8 @@ 0000800000000000 ==> f1f2f3f4f5f6f7f8 -+ f9fafbfcfefdfeff @@ 0000000000000000 ==> f9fafbfcfefdfeff -+vsrd: f1f2f3f4f5f6f7f8 @@ ffffffffffffffff ==> 0000000000000001 -+ f9fafbfcfefdfeff @@ 0000000000000051 ==> 00007cfd7dfe7f7e -+vsrd: 00007fffffffffff @@ 0102030405060708 ==> 0000007fffffffff -+ ffff000000000000 @@ 090a0b0c0e0d0e0f ==> 0001fffe00000000 -+vsrd: 00007fffffffffff @@ f1f2f3f4f5f6f7f8 ==> 0000000000000000 -+ ffff000000000000 @@ f9fafbfcfefdfeff ==> 0000000000000001 -+vsrd: 00007fffffffffff @@ 00007fffffffffff ==> 0000000000000000 -+ ffff000000000000 @@ ffff000000000000 ==> ffff000000000000 -+vsrd: 00007fffffffffff @@ 0000800000000000 ==> 00007fffffffffff -+ ffff000000000000 @@ 0000000000000000 ==> ffff000000000000 -+vsrd: 00007fffffffffff @@ ffffffffffffffff ==> 0000000000000000 -+ ffff000000000000 @@ 0000000000000051 ==> 00007fff80000000 -+vsrd: 0000800000000000 @@ 0102030405060708 ==> 0000008000000000 -+ 0000000000000000 @@ 090a0b0c0e0d0e0f ==> 0000000000000000 -+vsrd: 0000800000000000 @@ f1f2f3f4f5f6f7f8 ==> 0000000000000000 -+ 0000000000000000 @@ f9fafbfcfefdfeff ==> 0000000000000000 -+vsrd: 0000800000000000 @@ 00007fffffffffff ==> 0000000000000000 -+ 0000000000000000 @@ ffff000000000000 ==> 0000000000000000 -+vsrd: 0000800000000000 @@ 0000800000000000 ==> 0000800000000000 -+ 0000000000000000 @@ 0000000000000000 ==> 0000000000000000 -+vsrd: 0000800000000000 @@ ffffffffffffffff ==> 0000000000000000 -+ 0000000000000000 @@ 0000000000000051 ==> 0000000000000000 -+vsrd: ffffffffffffffff @@ 0102030405060708 ==> 00ffffffffffffff -+ 0000000000000051 @@ 090a0b0c0e0d0e0f ==> 0000000000000000 -+vsrd: ffffffffffffffff @@ f1f2f3f4f5f6f7f8 ==> 00000000000000ff -+ 0000000000000051 @@ f9fafbfcfefdfeff ==> 0000000000000000 -+vsrd: ffffffffffffffff @@ 00007fffffffffff ==> 0000000000000001 -+ 0000000000000051 @@ ffff000000000000 ==> 0000000000000051 -+vsrd: ffffffffffffffff @@ 0000800000000000 ==> ffffffffffffffff -+ 0000000000000051 @@ 0000000000000000 ==> 0000000000000051 -+vsrd: ffffffffffffffff @@ ffffffffffffffff ==> 0000000000000001 -+ 0000000000000051 @@ 0000000000000051 ==> 0000000000000000 - - vpkudum: Inputs: 05060708 0e0d0e0f 05060708 0e0d0e0f - Output: 05060708 0e0d0e0f 05060708 0e0d0e0f - vpkudum: Inputs: 05060708 0e0d0e0f f5f6f7f8 fefdfeff - Output: 05060708 0e0d0e0f f5f6f7f8 fefdfeff -+vpkudum: Inputs: 05060708 0e0d0e0f ffffffff 00000000 -+ Output: 05060708 0e0d0e0f ffffffff 00000000 -+vpkudum: Inputs: 05060708 0e0d0e0f 00000000 00000000 -+ Output: 05060708 0e0d0e0f 00000000 00000000 -+vpkudum: Inputs: 05060708 0e0d0e0f ffffffff 00000051 -+ Output: 05060708 0e0d0e0f ffffffff 00000051 - vpkudum: Inputs: f5f6f7f8 fefdfeff 05060708 0e0d0e0f - Output: f5f6f7f8 fefdfeff 05060708 0e0d0e0f - vpkudum: Inputs: f5f6f7f8 fefdfeff f5f6f7f8 fefdfeff - Output: f5f6f7f8 fefdfeff f5f6f7f8 fefdfeff -+vpkudum: Inputs: f5f6f7f8 fefdfeff ffffffff 00000000 -+ Output: f5f6f7f8 fefdfeff ffffffff 00000000 -+vpkudum: Inputs: f5f6f7f8 fefdfeff 00000000 00000000 -+ Output: f5f6f7f8 fefdfeff 00000000 00000000 -+vpkudum: Inputs: f5f6f7f8 fefdfeff ffffffff 00000051 -+ Output: f5f6f7f8 fefdfeff ffffffff 00000051 -+vpkudum: Inputs: ffffffff 00000000 05060708 0e0d0e0f -+ Output: ffffffff 00000000 05060708 0e0d0e0f -+vpkudum: Inputs: ffffffff 00000000 f5f6f7f8 fefdfeff -+ Output: ffffffff 00000000 f5f6f7f8 fefdfeff -+vpkudum: Inputs: ffffffff 00000000 ffffffff 00000000 -+ Output: ffffffff 00000000 ffffffff 00000000 -+vpkudum: Inputs: ffffffff 00000000 00000000 00000000 -+ Output: ffffffff 00000000 00000000 00000000 -+vpkudum: Inputs: ffffffff 00000000 ffffffff 00000051 -+ Output: ffffffff 00000000 ffffffff 00000051 -+vpkudum: Inputs: 00000000 00000000 05060708 0e0d0e0f -+ Output: 00000000 00000000 05060708 0e0d0e0f -+vpkudum: Inputs: 00000000 00000000 f5f6f7f8 fefdfeff -+ Output: 00000000 00000000 f5f6f7f8 fefdfeff -+vpkudum: Inputs: 00000000 00000000 ffffffff 00000000 -+ Output: 00000000 00000000 ffffffff 00000000 -+vpkudum: Inputs: 00000000 00000000 00000000 00000000 -+ Output: 00000000 00000000 00000000 00000000 -+vpkudum: Inputs: 00000000 00000000 ffffffff 00000051 -+ Output: 00000000 00000000 ffffffff 00000051 -+vpkudum: Inputs: ffffffff 00000051 05060708 0e0d0e0f -+ Output: ffffffff 00000051 05060708 0e0d0e0f -+vpkudum: Inputs: ffffffff 00000051 f5f6f7f8 fefdfeff -+ Output: ffffffff 00000051 f5f6f7f8 fefdfeff -+vpkudum: Inputs: ffffffff 00000051 ffffffff 00000000 -+ Output: ffffffff 00000051 ffffffff 00000000 -+vpkudum: Inputs: ffffffff 00000051 00000000 00000000 -+ Output: ffffffff 00000051 00000000 00000000 -+vpkudum: Inputs: ffffffff 00000051 ffffffff 00000051 -+ Output: ffffffff 00000051 ffffffff 00000051 - - vpmsumd: 0102030405060708 @@ 0102030405060708 ==> 0040004000400040 - 090a0b0c0e0d0e0f @@ 090a0b0c0e0d0e0f ==> 0045004500410015 - vpmsumd: 0102030405060708 @@ f1f2f3f4f5f6f7f8 ==> 07c007c006d00735 - 090a0b0c0e0d0e0f @@ f9fafbfcfefdfeff ==> a260a260a374a2c5 -+vpmsumd: 0102030405060708 @@ 00007fffffffffff ==> 07060182fc7efe7f -+ 090a0b0c0e0d0e0f @@ ffff000000000000 ==> 0478fefc030202f8 -+vpmsumd: 0102030405060708 @@ 0000800000000000 ==> 0000008101820283 -+ 090a0b0c0e0d0e0f @@ 0000000000000000 ==> 0384000000000000 -+vpmsumd: 0102030405060708 @@ ffffffffffffffff ==> 00fe0103fcfdfd05 -+ 090a0b0c0e0d0e0f @@ 0000000000000051 ==> 242986336e9c6fc7 - vpmsumd: f1f2f3f4f5f6f7f8 @@ 0102030405060708 ==> 07c007c006d00735 - f9fafbfcfefdfeff @@ 090a0b0c0e0d0e0f ==> a260a260a374a2c5 - vpmsumd: f1f2f3f4f5f6f7f8 @@ f1f2f3f4f5f6f7f8 ==> 0040004000400040 - f9fafbfcfefdfeff @@ f9fafbfcfefdfeff ==> 0045004500410015 -+vpmsumd: f1f2f3f4f5f6f7f8 @@ 00007fffffffffff ==> 575629aad456d657 -+ f9fafbfcfefdfeff @@ ffff000000000000 ==> 2c50aeac535252a8 -+vpmsumd: f1f2f3f4f5f6f7f8 @@ 0000800000000000 ==> 000078f979fa7afb -+ f9fafbfcfefdfeff @@ 0000000000000000 ==> 7bfc000000000000 -+vpmsumd: f1f2f3f4f5f6f7f8 @@ ffffffffffffffff ==> 50ae5153acadad66 -+ f9fafbfcfefdfeff @@ 0000000000000051 ==> b7ba15a0fd0ffc67 -+vpmsumd: 00007fffffffffff @@ 0102030405060708 ==> 07060182fc7efe7f -+ ffff000000000000 @@ 090a0b0c0e0d0e0f ==> 0478fefc030202f8 -+vpmsumd: 00007fffffffffff @@ f1f2f3f4f5f6f7f8 ==> 575629aad456d657 -+ ffff000000000000 @@ f9fafbfcfefdfeff ==> 2c50aeac535252a8 -+vpmsumd: 00007fffffffffff @@ 00007fffffffffff ==> 5555555515555555 -+ ffff000000000000 @@ ffff000000000000 ==> 5555555555555555 -+vpmsumd: 00007fffffffffff @@ 0000800000000000 ==> 000000003fffffff -+ ffff000000000000 @@ 0000000000000000 ==> ffff800000000000 -+vpmsumd: 00007fffffffffff @@ ffffffffffffffff ==> 00002aaaaaaaaa9a -+ ffff000000000000 @@ 0000000000000051 ==> 0030d55555555555 -+vpmsumd: 0000800000000000 @@ 0102030405060708 ==> 0000008101820283 -+ 0000000000000000 @@ 090a0b0c0e0d0e0f ==> 0384000000000000 -+vpmsumd: 0000800000000000 @@ f1f2f3f4f5f6f7f8 ==> 000078f979fa7afb -+ 0000000000000000 @@ f9fafbfcfefdfeff ==> 7bfc000000000000 -+vpmsumd: 0000800000000000 @@ 00007fffffffffff ==> 000000003fffffff -+ 0000000000000000 @@ ffff000000000000 ==> ffff800000000000 -+vpmsumd: 0000800000000000 @@ 0000800000000000 ==> 0000000040000000 -+ 0000000000000000 @@ 0000000000000000 ==> 0000000000000000 -+vpmsumd: 0000800000000000 @@ ffffffffffffffff ==> 00007fffffffffff -+ 0000000000000000 @@ 0000000000000051 ==> ffff800000000000 -+vpmsumd: ffffffffffffffff @@ 0102030405060708 ==> 00fe0103fcfdfd05 -+ 0000000000000051 @@ 090a0b0c0e0d0e0f ==> 242986336e9c6fc7 -+vpmsumd: ffffffffffffffff @@ f1f2f3f4f5f6f7f8 ==> 50ae5153acadad66 -+ 0000000000000051 @@ f9fafbfcfefdfeff ==> b7ba15a0fd0ffc67 -+vpmsumd: ffffffffffffffff @@ 00007fffffffffff ==> 00002aaaaaaaaa9a -+ 0000000000000051 @@ ffff000000000000 ==> 0030d55555555555 -+vpmsumd: ffffffffffffffff @@ 0000800000000000 ==> 00007fffffffffff -+ 0000000000000051 @@ 0000000000000000 ==> ffff800000000000 -+vpmsumd: ffffffffffffffff @@ ffffffffffffffff ==> 5555555555555555 -+ 0000000000000051 @@ 0000000000000051 ==> 5555555555554454 - - vnand: 0102030405060708 @@ 0102030405060708 ==> fefdfcfbfaf9f8f7 - 090a0b0c0e0d0e0f @@ 090a0b0c0e0d0e0f ==> f6f5f4f3f1f2f1f0 - vnand: 0102030405060708 @@ f1f2f3f4f5f6f7f8 ==> fefdfcfbfaf9f8f7 - 090a0b0c0e0d0e0f @@ f9fafbfcfefdfeff ==> f6f5f4f3f1f2f1f0 -+vnand: 0102030405060708 @@ 00007fffffffffff ==> fffffcfbfaf9f8f7 -+ 090a0b0c0e0d0e0f @@ ffff000000000000 ==> f6f5ffffffffffff -+vnand: 0102030405060708 @@ 0000800000000000 ==> ffffffffffffffff -+ 090a0b0c0e0d0e0f @@ 0000000000000000 ==> ffffffffffffffff -+vnand: 0102030405060708 @@ ffffffffffffffff ==> fefdfcfbfaf9f8f7 -+ 090a0b0c0e0d0e0f @@ 0000000000000051 ==> fffffffffffffffe - vnand: f1f2f3f4f5f6f7f8 @@ 0102030405060708 ==> fefdfcfbfaf9f8f7 - f9fafbfcfefdfeff @@ 090a0b0c0e0d0e0f ==> f6f5f4f3f1f2f1f0 - vnand: f1f2f3f4f5f6f7f8 @@ f1f2f3f4f5f6f7f8 ==> 0e0d0c0b0a090807 - f9fafbfcfefdfeff @@ f9fafbfcfefdfeff ==> 0605040301020100 -+vnand: f1f2f3f4f5f6f7f8 @@ 00007fffffffffff ==> ffff8c0b0a090807 -+ f9fafbfcfefdfeff @@ ffff000000000000 ==> 0605ffffffffffff -+vnand: f1f2f3f4f5f6f7f8 @@ 0000800000000000 ==> ffff7fffffffffff -+ f9fafbfcfefdfeff @@ 0000000000000000 ==> ffffffffffffffff -+vnand: f1f2f3f4f5f6f7f8 @@ ffffffffffffffff ==> 0e0d0c0b0a090807 -+ f9fafbfcfefdfeff @@ 0000000000000051 ==> ffffffffffffffae -+vnand: 00007fffffffffff @@ 0102030405060708 ==> fffffcfbfaf9f8f7 -+ ffff000000000000 @@ 090a0b0c0e0d0e0f ==> f6f5ffffffffffff -+vnand: 00007fffffffffff @@ f1f2f3f4f5f6f7f8 ==> ffff8c0b0a090807 -+ ffff000000000000 @@ f9fafbfcfefdfeff ==> 0605ffffffffffff -+vnand: 00007fffffffffff @@ 00007fffffffffff ==> ffff800000000000 -+ ffff000000000000 @@ ffff000000000000 ==> 0000ffffffffffff -+vnand: 00007fffffffffff @@ 0000800000000000 ==> ffffffffffffffff -+ ffff000000000000 @@ 0000000000000000 ==> ffffffffffffffff -+vnand: 00007fffffffffff @@ ffffffffffffffff ==> ffff800000000000 -+ ffff000000000000 @@ 0000000000000051 ==> ffffffffffffffff -+vnand: 0000800000000000 @@ 0102030405060708 ==> ffffffffffffffff -+ 0000000000000000 @@ 090a0b0c0e0d0e0f ==> ffffffffffffffff -+vnand: 0000800000000000 @@ f1f2f3f4f5f6f7f8 ==> ffff7fffffffffff -+ 0000000000000000 @@ f9fafbfcfefdfeff ==> ffffffffffffffff -+vnand: 0000800000000000 @@ 00007fffffffffff ==> ffffffffffffffff -+ 0000000000000000 @@ ffff000000000000 ==> ffffffffffffffff -+vnand: 0000800000000000 @@ 0000800000000000 ==> ffff7fffffffffff -+ 0000000000000000 @@ 0000000000000000 ==> ffffffffffffffff -+vnand: 0000800000000000 @@ ffffffffffffffff ==> ffff7fffffffffff -+ 0000000000000000 @@ 0000000000000051 ==> ffffffffffffffff -+vnand: ffffffffffffffff @@ 0102030405060708 ==> fefdfcfbfaf9f8f7 -+ 0000000000000051 @@ 090a0b0c0e0d0e0f ==> fffffffffffffffe -+vnand: ffffffffffffffff @@ f1f2f3f4f5f6f7f8 ==> 0e0d0c0b0a090807 -+ 0000000000000051 @@ f9fafbfcfefdfeff ==> ffffffffffffffae -+vnand: ffffffffffffffff @@ 00007fffffffffff ==> ffff800000000000 -+ 0000000000000051 @@ ffff000000000000 ==> ffffffffffffffff -+vnand: ffffffffffffffff @@ 0000800000000000 ==> ffff7fffffffffff -+ 0000000000000051 @@ 0000000000000000 ==> ffffffffffffffff -+vnand: ffffffffffffffff @@ ffffffffffffffff ==> 0000000000000000 -+ 0000000000000051 @@ 0000000000000051 ==> ffffffffffffffae - - vorc: 0102030405060708 @@ 0102030405060708 ==> ffffffffffffffff - 090a0b0c0e0d0e0f @@ 090a0b0c0e0d0e0f ==> ffffffffffffffff - vorc: 0102030405060708 @@ f1f2f3f4f5f6f7f8 ==> 0f0f0f0f0f0f0f0f - 090a0b0c0e0d0e0f @@ f9fafbfcfefdfeff ==> 0f0f0f0f0f0f0f0f -+vorc: 0102030405060708 @@ 00007fffffffffff ==> ffff830405060708 -+ 090a0b0c0e0d0e0f @@ ffff000000000000 ==> 090affffffffffff -+vorc: 0102030405060708 @@ 0000800000000000 ==> ffff7fffffffffff -+ 090a0b0c0e0d0e0f @@ 0000000000000000 ==> ffffffffffffffff -+vorc: 0102030405060708 @@ ffffffffffffffff ==> 0102030405060708 -+ 090a0b0c0e0d0e0f @@ 0000000000000051 ==> ffffffffffffffaf - vorc: f1f2f3f4f5f6f7f8 @@ 0102030405060708 ==> ffffffffffffffff - f9fafbfcfefdfeff @@ 090a0b0c0e0d0e0f ==> ffffffffffffffff - vorc: f1f2f3f4f5f6f7f8 @@ f1f2f3f4f5f6f7f8 ==> ffffffffffffffff - f9fafbfcfefdfeff @@ f9fafbfcfefdfeff ==> ffffffffffffffff -+vorc: f1f2f3f4f5f6f7f8 @@ 00007fffffffffff ==> fffff3f4f5f6f7f8 -+ f9fafbfcfefdfeff @@ ffff000000000000 ==> f9faffffffffffff -+vorc: f1f2f3f4f5f6f7f8 @@ 0000800000000000 ==> ffffffffffffffff -+ f9fafbfcfefdfeff @@ 0000000000000000 ==> ffffffffffffffff -+vorc: f1f2f3f4f5f6f7f8 @@ ffffffffffffffff ==> f1f2f3f4f5f6f7f8 -+ f9fafbfcfefdfeff @@ 0000000000000051 ==> ffffffffffffffff -+vorc: 00007fffffffffff @@ 0102030405060708 ==> fefdffffffffffff -+ ffff000000000000 @@ 090a0b0c0e0d0e0f ==> fffff4f3f1f2f1f0 -+vorc: 00007fffffffffff @@ f1f2f3f4f5f6f7f8 ==> 0e0d7fffffffffff -+ ffff000000000000 @@ f9fafbfcfefdfeff ==> ffff040301020100 -+vorc: 00007fffffffffff @@ 00007fffffffffff ==> ffffffffffffffff -+ ffff000000000000 @@ ffff000000000000 ==> ffffffffffffffff -+vorc: 00007fffffffffff @@ 0000800000000000 ==> ffff7fffffffffff -+ ffff000000000000 @@ 0000000000000000 ==> ffffffffffffffff -+vorc: 00007fffffffffff @@ ffffffffffffffff ==> 00007fffffffffff -+ ffff000000000000 @@ 0000000000000051 ==> ffffffffffffffae -+vorc: 0000800000000000 @@ 0102030405060708 ==> fefdfcfbfaf9f8f7 -+ 0000000000000000 @@ 090a0b0c0e0d0e0f ==> f6f5f4f3f1f2f1f0 -+vorc: 0000800000000000 @@ f1f2f3f4f5f6f7f8 ==> 0e0d8c0b0a090807 -+ 0000000000000000 @@ f9fafbfcfefdfeff ==> 0605040301020100 -+vorc: 0000800000000000 @@ 00007fffffffffff ==> ffff800000000000 -+ 0000000000000000 @@ ffff000000000000 ==> 0000ffffffffffff -+vorc: 0000800000000000 @@ 0000800000000000 ==> ffffffffffffffff -+ 0000000000000000 @@ 0000000000000000 ==> ffffffffffffffff -+vorc: 0000800000000000 @@ ffffffffffffffff ==> 0000800000000000 -+ 0000000000000000 @@ 0000000000000051 ==> ffffffffffffffae -+vorc: ffffffffffffffff @@ 0102030405060708 ==> ffffffffffffffff -+ 0000000000000051 @@ 090a0b0c0e0d0e0f ==> f6f5f4f3f1f2f1f1 -+vorc: ffffffffffffffff @@ f1f2f3f4f5f6f7f8 ==> ffffffffffffffff -+ 0000000000000051 @@ f9fafbfcfefdfeff ==> 0605040301020151 -+vorc: ffffffffffffffff @@ 00007fffffffffff ==> ffffffffffffffff -+ 0000000000000051 @@ ffff000000000000 ==> 0000ffffffffffff -+vorc: ffffffffffffffff @@ 0000800000000000 ==> ffffffffffffffff -+ 0000000000000051 @@ 0000000000000000 ==> ffffffffffffffff -+vorc: ffffffffffffffff @@ ffffffffffffffff ==> ffffffffffffffff -+ 0000000000000051 @@ 0000000000000051 ==> ffffffffffffffff - - veqv: 0102030405060708 @@ 0102030405060708 ==> ffffffffffffffff - 090a0b0c0e0d0e0f @@ 090a0b0c0e0d0e0f ==> ffffffffffffffff - veqv: 0102030405060708 @@ f1f2f3f4f5f6f7f8 ==> 0f0f0f0f0f0f0f0f - 090a0b0c0e0d0e0f @@ f9fafbfcfefdfeff ==> 0f0f0f0f0f0f0f0f -+veqv: 0102030405060708 @@ 00007fffffffffff ==> fefd830405060708 -+ 090a0b0c0e0d0e0f @@ ffff000000000000 ==> 090af4f3f1f2f1f0 -+veqv: 0102030405060708 @@ 0000800000000000 ==> fefd7cfbfaf9f8f7 -+ 090a0b0c0e0d0e0f @@ 0000000000000000 ==> f6f5f4f3f1f2f1f0 -+veqv: 0102030405060708 @@ ffffffffffffffff ==> 0102030405060708 -+ 090a0b0c0e0d0e0f @@ 0000000000000051 ==> f6f5f4f3f1f2f1a1 - veqv: f1f2f3f4f5f6f7f8 @@ 0102030405060708 ==> 0f0f0f0f0f0f0f0f - f9fafbfcfefdfeff @@ 090a0b0c0e0d0e0f ==> 0f0f0f0f0f0f0f0f - veqv: f1f2f3f4f5f6f7f8 @@ f1f2f3f4f5f6f7f8 ==> ffffffffffffffff - f9fafbfcfefdfeff @@ f9fafbfcfefdfeff ==> ffffffffffffffff -+veqv: f1f2f3f4f5f6f7f8 @@ 00007fffffffffff ==> 0e0d73f4f5f6f7f8 -+ f9fafbfcfefdfeff @@ ffff000000000000 ==> f9fa040301020100 -+veqv: f1f2f3f4f5f6f7f8 @@ 0000800000000000 ==> 0e0d8c0b0a090807 -+ f9fafbfcfefdfeff @@ 0000000000000000 ==> 0605040301020100 -+veqv: f1f2f3f4f5f6f7f8 @@ ffffffffffffffff ==> f1f2f3f4f5f6f7f8 -+ f9fafbfcfefdfeff @@ 0000000000000051 ==> 0605040301020151 -+veqv: 00007fffffffffff @@ 0102030405060708 ==> fefd830405060708 -+ ffff000000000000 @@ 090a0b0c0e0d0e0f ==> 090af4f3f1f2f1f0 -+veqv: 00007fffffffffff @@ f1f2f3f4f5f6f7f8 ==> 0e0d73f4f5f6f7f8 -+ ffff000000000000 @@ f9fafbfcfefdfeff ==> f9fa040301020100 -+veqv: 00007fffffffffff @@ 00007fffffffffff ==> ffffffffffffffff -+ ffff000000000000 @@ ffff000000000000 ==> ffffffffffffffff -+veqv: 00007fffffffffff @@ 0000800000000000 ==> ffff000000000000 -+ ffff000000000000 @@ 0000000000000000 ==> 0000ffffffffffff -+veqv: 00007fffffffffff @@ ffffffffffffffff ==> 00007fffffffffff -+ ffff000000000000 @@ 0000000000000051 ==> 0000ffffffffffae -+veqv: 0000800000000000 @@ 0102030405060708 ==> fefd7cfbfaf9f8f7 -+ 0000000000000000 @@ 090a0b0c0e0d0e0f ==> f6f5f4f3f1f2f1f0 -+veqv: 0000800000000000 @@ f1f2f3f4f5f6f7f8 ==> 0e0d8c0b0a090807 -+ 0000000000000000 @@ f9fafbfcfefdfeff ==> 0605040301020100 -+veqv: 0000800000000000 @@ 00007fffffffffff ==> ffff000000000000 -+ 0000000000000000 @@ ffff000000000000 ==> 0000ffffffffffff -+veqv: 0000800000000000 @@ 0000800000000000 ==> ffffffffffffffff -+ 0000000000000000 @@ 0000000000000000 ==> ffffffffffffffff -+veqv: 0000800000000000 @@ ffffffffffffffff ==> 0000800000000000 -+ 0000000000000000 @@ 0000000000000051 ==> ffffffffffffffae -+veqv: ffffffffffffffff @@ 0102030405060708 ==> 0102030405060708 -+ 0000000000000051 @@ 090a0b0c0e0d0e0f ==> f6f5f4f3f1f2f1a1 -+veqv: ffffffffffffffff @@ f1f2f3f4f5f6f7f8 ==> f1f2f3f4f5f6f7f8 -+ 0000000000000051 @@ f9fafbfcfefdfeff ==> 0605040301020151 -+veqv: ffffffffffffffff @@ 00007fffffffffff ==> 00007fffffffffff -+ 0000000000000051 @@ ffff000000000000 ==> 0000ffffffffffae -+veqv: ffffffffffffffff @@ 0000800000000000 ==> 0000800000000000 -+ 0000000000000051 @@ 0000000000000000 ==> ffffffffffffffae -+veqv: ffffffffffffffff @@ ffffffffffffffff ==> ffffffffffffffff -+ 0000000000000051 @@ 0000000000000051 ==> ffffffffffffffff - - vcipher: 0102030405060708 @@ 0102030405060708 ==> 15abdc2823b74b86 - 090a0b0c0e0d0e0f @@ 090a0b0c0e0d0e0f ==> 22037bc3e1e25abc - vcipher: 0102030405060708 @@ f1f2f3f4f5f6f7f8 ==> e55b2cd8d347bb76 - 090a0b0c0e0d0e0f @@ f9fafbfcfefdfeff ==> d2f38b331112aa4c -+vcipher: 0102030405060708 @@ 00007fffffffffff ==> 14a9a0d3d94eb371 -+ 090a0b0c0e0d0e0f @@ ffff000000000000 ==> d4f670cfefef54b3 -+vcipher: 0102030405060708 @@ 0000800000000000 ==> 14a95f2c26b14c8e -+ 090a0b0c0e0d0e0f @@ 0000000000000000 ==> 2b0970cfefef54b3 -+vcipher: 0102030405060708 @@ ffffffffffffffff ==> eb5620d3d94eb371 -+ 090a0b0c0e0d0e0f @@ 0000000000000051 ==> 2b0970cfefef54e2 - vcipher: f1f2f3f4f5f6f7f8 @@ 0102030405060708 ==> 8720c49da1d37bca - f9fafbfcfefdfeff @@ 090a0b0c0e0d0e0f ==> 906d1f673bb72743 - vcipher: f1f2f3f4f5f6f7f8 @@ f1f2f3f4f5f6f7f8 ==> 77d0346d51238b3a - f9fafbfcfefdfeff @@ f9fafbfcfefdfeff ==> 609def97cb47d7b3 -+vcipher: f1f2f3f4f5f6f7f8 @@ 00007fffffffffff ==> 8622b8665b2a833d -+ f9fafbfcfefdfeff @@ ffff000000000000 ==> 6698146b35ba294c -+vcipher: f1f2f3f4f5f6f7f8 @@ 0000800000000000 ==> 86224799a4d57cc2 -+ f9fafbfcfefdfeff @@ 0000000000000000 ==> 9967146b35ba294c -+vcipher: f1f2f3f4f5f6f7f8 @@ ffffffffffffffff ==> 79dd38665b2a833d -+ f9fafbfcfefdfeff @@ 0000000000000051 ==> 9967146b35ba291d -+vcipher: 00007fffffffffff @@ 0102030405060708 ==> fd8b1512668ffb6b -+ ffff000000000000 @@ 090a0b0c0e0d0e0f ==> 44a1fbab18f18719 -+vcipher: 00007fffffffffff @@ f1f2f3f4f5f6f7f8 ==> 0d7be5e2967f0b9b -+ ffff000000000000 @@ f9fafbfcfefdfeff ==> b4510b5be80177e9 -+vcipher: 00007fffffffffff @@ 00007fffffffffff ==> fc8969e99c76039c -+ ffff000000000000 @@ ffff000000000000 ==> b254f0a716fc8916 -+vcipher: 00007fffffffffff @@ 0000800000000000 ==> fc8996166389fc63 -+ ffff000000000000 @@ 0000000000000000 ==> 4dabf0a716fc8916 -+vcipher: 00007fffffffffff @@ ffffffffffffffff ==> 0376e9e99c76039c -+ ffff000000000000 @@ 0000000000000051 ==> 4dabf0a716fc8947 -+vcipher: 0000800000000000 @@ 0102030405060708 ==> 626160676665646b -+ 0000000000000000 @@ 090a0b0c0e0d0e0f ==> c4802fc16d6e6d6c -+vcipher: 0000800000000000 @@ f1f2f3f4f5f6f7f8 ==> 929190979695949b -+ 0000000000000000 @@ f9fafbfcfefdfeff ==> 3470df319d9e9d9c -+vcipher: 0000800000000000 @@ 00007fffffffffff ==> 63631c9c9c9c9c9c -+ 0000000000000000 @@ ffff000000000000 ==> 327524cd63636363 -+vcipher: 0000800000000000 @@ 0000800000000000 ==> 6363e36363636363 -+ 0000000000000000 @@ 0000000000000000 ==> cd8a24cd63636363 -+vcipher: 0000800000000000 @@ ffffffffffffffff ==> 9c9c9c9c9c9c9c9c -+ 0000000000000000 @@ 0000000000000051 ==> cd8a24cd63636332 -+vcipher: ffffffffffffffff @@ 0102030405060708 ==> a54cadf2f9658e1e -+ 0000000000000051 @@ 090a0b0c0e0d0e0f ==> 6a831df0871bf26c -+vcipher: ffffffffffffffff @@ f1f2f3f4f5f6f7f8 ==> 55bc5d0209957eee -+ 0000000000000051 @@ f9fafbfcfefdfeff ==> 9a73ed0077eb029c -+vcipher: ffffffffffffffff @@ 00007fffffffffff ==> a44ed109039c76e9 -+ 0000000000000051 @@ ffff000000000000 ==> 9c7616fc8916fc63 -+vcipher: ffffffffffffffff @@ 0000800000000000 ==> a44e2ef6fc638916 -+ 0000000000000051 @@ 0000000000000000 ==> 638916fc8916fc63 -+vcipher: ffffffffffffffff @@ ffffffffffffffff ==> 5bb15109039c76e9 -+ 0000000000000051 @@ 0000000000000051 ==> 638916fc8916fc32 - - vcipherlast: 0102030405060708 @@ 0102030405060708 ==> 7d6d28726e61acfa - 090a0b0c0e0d0e0f @@ 090a0b0c0e0d0e0f ==> 08dd703ca57acbf1 - vcipherlast: 0102030405060708 @@ f1f2f3f4f5f6f7f8 ==> 8d9dd8829e915c0a - 090a0b0c0e0d0e0f @@ f9fafbfcfefdfeff ==> f82d80cc558a3b01 -+vcipherlast: 0102030405060708 @@ 00007fffffffffff ==> 7c6f54899498540d -+ 090a0b0c0e0d0e0f @@ ffff000000000000 ==> fe287b30ab77c5fe -+vcipherlast: 0102030405060708 @@ 0000800000000000 ==> 7c6fab766b67abf2 -+ 090a0b0c0e0d0e0f @@ 0000000000000000 ==> 01d77b30ab77c5fe -+vcipherlast: 0102030405060708 @@ ffffffffffffffff ==> 8390d4899498540d -+ 090a0b0c0e0d0e0f @@ 0000000000000051 ==> 01d77b30ab77c5af - vcipherlast: f1f2f3f4f5f6f7f8 @@ 0102030405060708 ==> a0400c12e32bbcb7 - f9fafbfcfefdfeff @@ 090a0b0c0e0d0e0f ==> 905e064db58466bf - vcipherlast: f1f2f3f4f5f6f7f8 @@ f1f2f3f4f5f6f7f8 ==> 50b0fce213db4c47 - f9fafbfcfefdfeff @@ f9fafbfcfefdfeff ==> 60aef6bd4574964f -+vcipherlast: f1f2f3f4f5f6f7f8 @@ 00007fffffffffff ==> a14270e919d24440 -+ f9fafbfcfefdfeff @@ ffff000000000000 ==> 66ab0d41bb8968b0 -+vcipherlast: f1f2f3f4f5f6f7f8 @@ 0000800000000000 ==> a1428f16e62dbbbf -+ f9fafbfcfefdfeff @@ 0000000000000000 ==> 99540d41bb8968b0 -+vcipherlast: f1f2f3f4f5f6f7f8 @@ ffffffffffffffff ==> 5ebdf0e919d24440 -+ f9fafbfcfefdfeff @@ 0000000000000051 ==> 99540d41bb8968e1 -+vcipherlast: 00007fffffffffff @@ 0102030405060708 ==> 621460671310641e -+ ffff000000000000 @@ 090a0b0c0e0d0e0f ==> 1f69d91a6d6e186c -+vcipherlast: 00007fffffffffff @@ f1f2f3f4f5f6f7f8 ==> 92e49097e3e094ee -+ ffff000000000000 @@ f9fafbfcfefdfeff ==> ef9929ea9d9ee89c -+vcipherlast: 00007fffffffffff @@ 00007fffffffffff ==> 63161c9ce9e99ce9 -+ ffff000000000000 @@ ffff000000000000 ==> e99cd21663631663 -+vcipherlast: 00007fffffffffff @@ 0000800000000000 ==> 6316e36316166316 -+ ffff000000000000 @@ 0000000000000000 ==> 1663d21663631663 -+vcipherlast: 00007fffffffffff @@ ffffffffffffffff ==> 9ce99c9ce9e99ce9 -+ ffff000000000000 @@ 0000000000000051 ==> 1663d21663631632 -+vcipherlast: 0000800000000000 @@ 0102030405060708 ==> 626160676665646b -+ 0000000000000000 @@ 090a0b0c0e0d0e0f ==> 6a69c66f6d6e6d6c -+vcipherlast: 0000800000000000 @@ f1f2f3f4f5f6f7f8 ==> 929190979695949b -+ 0000000000000000 @@ f9fafbfcfefdfeff ==> 9a99369f9d9e9d9c -+vcipherlast: 0000800000000000 @@ 00007fffffffffff ==> 63631c9c9c9c9c9c -+ 0000000000000000 @@ ffff000000000000 ==> 9c9ccd6363636363 -+vcipherlast: 0000800000000000 @@ 0000800000000000 ==> 6363e36363636363 -+ 0000000000000000 @@ 0000000000000000 ==> 6363cd6363636363 -+vcipherlast: 0000800000000000 @@ ffffffffffffffff ==> 9c9c9c9c9c9c9c9c -+ 0000000000000000 @@ 0000000000000051 ==> 6363cd6363636332 -+vcipherlast: ffffffffffffffff @@ 0102030405060708 ==> 171460d51365641e -+ 0000000000000051 @@ 090a0b0c0e0d0e0f ==> 6a691d1a6d1b186c -+vcipherlast: ffffffffffffffff @@ f1f2f3f4f5f6f7f8 ==> e7e49025e39594ee -+ 0000000000000051 @@ f9fafbfcfefdfeff ==> 9a99edea9debe89c -+vcipherlast: ffffffffffffffff @@ 00007fffffffffff ==> 16161c2ee99c9ce9 -+ 0000000000000051 @@ ffff000000000000 ==> 9c9c161663161663 -+vcipherlast: ffffffffffffffff @@ 0000800000000000 ==> 1616e3d116636316 -+ 0000000000000051 @@ 0000000000000000 ==> 6363161663161663 -+vcipherlast: ffffffffffffffff @@ ffffffffffffffff ==> e9e99c2ee99c9ce9 -+ 0000000000000051 @@ 0000000000000051 ==> 6363161663161632 - - vncipher: 0102030405060708 @@ 0102030405060708 ==> fe67ce881a80f569 - 090a0b0c0e0d0e0f @@ 090a0b0c0e0d0e0f ==> 19db0b0605541639 - vncipher: 0102030405060708 @@ f1f2f3f4f5f6f7f8 ==> 0e973e78ea700599 - 090a0b0c0e0d0e0f @@ f9fafbfcfefdfeff ==> e92bfbf6f5a4e6c9 -+vncipher: 0102030405060708 @@ 00007fffffffffff ==> de98809d822f77d0 -+ 090a0b0c0e0d0e0f @@ ffff000000000000 ==> 1424f3081f45082e -+vncipher: 0102030405060708 @@ 0000800000000000 ==> 0facae567dd0882f -+ 090a0b0c0e0d0e0f @@ 0000000000000000 ==> 3aef223c1f45082e -+vncipher: 0102030405060708 @@ ffffffffffffffff ==> 2aa41045822f77d0 -+ 090a0b0c0e0d0e0f @@ 0000000000000051 ==> 3aef223cf0f5456d - vncipher: f1f2f3f4f5f6f7f8 @@ 0102030405060708 ==> 8b10c2d5607a5569 - f9fafbfcfefdfeff @@ 090a0b0c0e0d0e0f ==> 581826de46277b9c - vncipher: f1f2f3f4f5f6f7f8 @@ f1f2f3f4f5f6f7f8 ==> 7be03225908aa599 - f9fafbfcfefdfeff @@ f9fafbfcfefdfeff ==> a8e8d62eb6d78b6c -+vncipher: f1f2f3f4f5f6f7f8 @@ 00007fffffffffff ==> abef8cc0f8d5d7d0 -+ f9fafbfcfefdfeff @@ ffff000000000000 ==> 55e7ded05c36658b -+vncipher: f1f2f3f4f5f6f7f8 @@ 0000800000000000 ==> 7adba20b072a282f -+ f9fafbfcfefdfeff @@ 0000000000000000 ==> 7b2c0fe45c36658b -+vncipher: f1f2f3f4f5f6f7f8 @@ ffffffffffffffff ==> 5fd31c18f8d5d7d0 -+ f9fafbfcfefdfeff @@ 0000000000000051 ==> 7b2c0fe4b38628c8 -+vncipher: 00007fffffffffff @@ 0102030405060708 ==> 359e61e1b44edf06 -+ ffff000000000000 @@ 090a0b0c0e0d0e0f ==> ec338260e6209378 -+vncipher: 00007fffffffffff @@ f1f2f3f4f5f6f7f8 ==> c56e911144be2ff6 -+ ffff000000000000 @@ f9fafbfcfefdfeff ==> 1cc3729016d06388 -+vncipher: 00007fffffffffff @@ 00007fffffffffff ==> 15612ff42ce15dbf -+ ffff000000000000 @@ ffff000000000000 ==> e1cc7a6efc318d6f -+vncipher: 00007fffffffffff @@ 0000800000000000 ==> c455013fd31ea240 -+ ffff000000000000 @@ 0000000000000000 ==> cf07ab5afc318d6f -+vncipher: 00007fffffffffff @@ ffffffffffffffff ==> e15dbf2c2ce15dbf -+ ffff000000000000 @@ 0000000000000051 ==> cf07ab5a1381c02c -+vncipher: 0000800000000000 @@ 0102030405060708 ==> 796e736035022f14 -+ 0000000000000000 @@ 090a0b0c0e0d0e0f ==> cfb37d6d48434c45 -+vncipher: 0000800000000000 @@ f1f2f3f4f5f6f7f8 ==> 899e8390c5f2dfe4 -+ 0000000000000000 @@ f9fafbfcfefdfeff ==> 3f438d9db8b3bcb5 -+vncipher: 0000800000000000 @@ 00007fffffffffff ==> 59913d75adadadad -+ 0000000000000000 @@ ffff000000000000 ==> c24c856352525252 -+vncipher: 0000800000000000 @@ 0000800000000000 ==> 88a513be52525252 -+ 0000000000000000 @@ 0000000000000000 ==> ec87545752525252 -+vncipher: 0000800000000000 @@ ffffffffffffffff ==> adadadadadadadad -+ 0000000000000000 @@ 0000000000000051 ==> ec875457bde21f11 -+vncipher: ffffffffffffffff @@ 0102030405060708 ==> b4d291f3a6cf93f6 -+ 0000000000000051 @@ 090a0b0c0e0d0e0f ==> ba54db13f4a1df88 -+vncipher: ffffffffffffffff @@ f1f2f3f4f5f6f7f8 ==> 44226103563f6306 -+ 0000000000000051 @@ f9fafbfcfefdfeff ==> 4aa42be304512f78 -+vncipher: ffffffffffffffff @@ 00007fffffffffff ==> 942ddfe63e60114f -+ 0000000000000051 @@ ffff000000000000 ==> b7ab231deeb0c19f -+vncipher: ffffffffffffffff @@ 0000800000000000 ==> 4519f12dc19feeb0 -+ 0000000000000051 @@ 0000000000000000 ==> 9960f229eeb0c19f -+vncipher: ffffffffffffffff @@ ffffffffffffffff ==> 60114f3e3e60114f -+ 0000000000000051 @@ 0000000000000051 ==> 9960f22901008cdc - - vncipherlast: 0102030405060708 @@ 0102030405060708 ==> 08f19dbb336cd089 - 090a0b0c0e0d0e0f @@ 090a0b0c0e0d0e0f ==> 49afdef7d9ae363f - vncipherlast: 0102030405060708 @@ f1f2f3f4f5f6f7f8 ==> f8016d4bc39c2079 - 090a0b0c0e0d0e0f @@ f9fafbfcfefdfeff ==> b95f2e07295ec6cf -+vncipherlast: 0102030405060708 @@ 00007fffffffffff ==> 09f3e140c995287e -+ 090a0b0c0e0d0e0f @@ ffff000000000000 ==> bf5ad5fbd7a33830 -+vncipherlast: 0102030405060708 @@ 0000800000000000 ==> 09f31ebf366ad781 -+ 090a0b0c0e0d0e0f @@ 0000000000000000 ==> 40a5d5fbd7a33830 -+vncipherlast: 0102030405060708 @@ ffffffffffffffff ==> f60c6140c995287e -+ 090a0b0c0e0d0e0f @@ 0000000000000051 ==> 40a5d5fbd7a33861 - vncipherlast: f1f2f3f4f5f6f7f8 @@ 0102030405060708 ==> 2a2360e572020b5d - f9fafbfcfefdfeff @@ 090a0b0c0e0d0e0f ==> 60dc7571021928b5 - vncipherlast: f1f2f3f4f5f6f7f8 @@ f1f2f3f4f5f6f7f8 ==> dad3901582f2fbad - f9fafbfcfefdfeff @@ f9fafbfcfefdfeff ==> 902c8581f2e9d845 -+vncipherlast: f1f2f3f4f5f6f7f8 @@ 00007fffffffffff ==> 2b211c1e88fbf3aa -+ f9fafbfcfefdfeff @@ ffff000000000000 ==> 96297e7d0c1426ba -+vncipherlast: f1f2f3f4f5f6f7f8 @@ 0000800000000000 ==> 2b21e3e177040c55 -+ f9fafbfcfefdfeff @@ 0000000000000000 ==> 69d67e7d0c1426ba -+vncipherlast: f1f2f3f4f5f6f7f8 @@ ffffffffffffffff ==> d4de9c1e88fbf3aa -+ f9fafbfcfefdfeff @@ 0000000000000051 ==> 69d67e7d0c1426eb -+vncipherlast: 00007fffffffffff @@ 0102030405060708 ==> 535051797854555a -+ ffff000000000000 @@ 090a0b0c0e0d0e0f ==> 7477605e5c707372 -+vncipherlast: 00007fffffffffff @@ f1f2f3f4f5f6f7f8 ==> a3a0a18988a4a5aa -+ ffff000000000000 @@ f9fafbfcfefdfeff ==> 848790aeac808382 -+vncipherlast: 00007fffffffffff @@ 00007fffffffffff ==> 52522d8282adadad -+ ffff000000000000 @@ ffff000000000000 ==> 82826b52527d7d7d -+vncipherlast: 00007fffffffffff @@ 0000800000000000 ==> 5252d27d7d525252 -+ ffff000000000000 @@ 0000000000000000 ==> 7d7d6b52527d7d7d -+vncipherlast: 00007fffffffffff @@ ffffffffffffffff ==> adadad8282adadad -+ ffff000000000000 @@ 0000000000000051 ==> 7d7d6b52527d7d2c -+vncipherlast: 0000800000000000 @@ 0102030405060708 ==> 535051565754555a -+ 0000000000000000 @@ 090a0b0c0e0d0e0f ==> 5b58315e5c5f5c5d -+vncipherlast: 0000800000000000 @@ f1f2f3f4f5f6f7f8 ==> a3a0a1a6a7a4a5aa -+ 0000000000000000 @@ f9fafbfcfefdfeff ==> aba8c1aeacafacad -+vncipherlast: 0000800000000000 @@ 00007fffffffffff ==> 52522dadadadadad -+ 0000000000000000 @@ ffff000000000000 ==> adad3a5252525252 -+vncipherlast: 0000800000000000 @@ 0000800000000000 ==> 5252d25252525252 -+ 0000000000000000 @@ 0000000000000000 ==> 52523a5252525252 -+vncipherlast: 0000800000000000 @@ ffffffffffffffff ==> adadadadadadadad -+ 0000000000000000 @@ 0000000000000051 ==> 52523a5252525203 -+vncipherlast: ffffffffffffffff @@ 0102030405060708 ==> 7c505179787b555a -+ 0000000000000051 @@ 090a0b0c0e0d0e0f ==> 5b77767c5c5f7372 -+vncipherlast: ffffffffffffffff @@ f1f2f3f4f5f6f7f8 ==> 8ca0a189888ba5aa -+ 0000000000000051 @@ f9fafbfcfefdfeff ==> ab87868cacaf8382 -+vncipherlast: ffffffffffffffff @@ 00007fffffffffff ==> 7d522d828282adad -+ 0000000000000051 @@ ffff000000000000 ==> ad827d7052527d7d -+vncipherlast: ffffffffffffffff @@ 0000800000000000 ==> 7d52d27d7d7d5252 -+ 0000000000000051 @@ 0000000000000000 ==> 527d7d7052527d7d -+vncipherlast: ffffffffffffffff @@ ffffffffffffffff ==> 82adad828282adad -+ 0000000000000051 @@ 0000000000000051 ==> 527d7d7052527d2c - - vmulouw: 01020304 05060708 090a0b0c 0e0d0e0f ==> 00193c6aa4917040 00c56e34124ba4e1 - vmulouw: 01020304 05060708 090a0b0c 0e0d0e0f ==> 04d39d63184f87c0 0dfee4d8b9c6e2f1 -@@ -273,18 +1222,81 @@ vpmsumw: f1f2f3f4 f5f6f7f8 f9fafbfc fefdfeff ==> 0010001000100050 00150015001100 - - vpkudus: 000000007c118a2b, 00000000f1112345 @@ 000000007c118a2b, 00000000f1112345 ==> 7c118a2b f1112345 7c118a2b f1112345 - vpkudus: 000000007c118a2b, 00000000f1112345 @@ 01f2f3f4f5f6f7f8, f9fafbfcfefdfeff ==> 7c118a2b f1112345 ffffffff ffffffff -+vpkudus: 000000007c118a2b, 00000000f1112345 @@ 0000000000000000, 0000000000000000 ==> 7c118a2b f1112345 00000000 00000000 -+vpkudus: 000000007c118a2b, 00000000f1112345 @@ 0000000000000000, 0000000000000000 ==> 7c118a2b f1112345 00000000 00000000 -+vpkudus: 000000007c118a2b, 00000000f1112345 @@ 0000000000000000, 0000000000000031 ==> 7c118a2b f1112345 00000000 00000031 - vpkudus: 01f2f3f4f5f6f7f8, f9fafbfcfefdfeff @@ 000000007c118a2b, 00000000f1112345 ==> ffffffff ffffffff 7c118a2b f1112345 - vpkudus: 01f2f3f4f5f6f7f8, f9fafbfcfefdfeff @@ 01f2f3f4f5f6f7f8, f9fafbfcfefdfeff ==> ffffffff ffffffff ffffffff ffffffff -+vpkudus: 01f2f3f4f5f6f7f8, f9fafbfcfefdfeff @@ 0000000000000000, 0000000000000000 ==> ffffffff ffffffff 00000000 00000000 -+vpkudus: 01f2f3f4f5f6f7f8, f9fafbfcfefdfeff @@ 0000000000000000, 0000000000000000 ==> ffffffff ffffffff 00000000 00000000 -+vpkudus: 01f2f3f4f5f6f7f8, f9fafbfcfefdfeff @@ 0000000000000000, 0000000000000031 ==> ffffffff ffffffff 00000000 00000031 -+vpkudus: 0000000000000000, 0000000000000000 @@ 000000007c118a2b, 00000000f1112345 ==> 00000000 00000000 7c118a2b f1112345 -+vpkudus: 0000000000000000, 0000000000000000 @@ 01f2f3f4f5f6f7f8, f9fafbfcfefdfeff ==> 00000000 00000000 ffffffff ffffffff -+vpkudus: 0000000000000000, 0000000000000000 @@ 0000000000000000, 0000000000000000 ==> 00000000 00000000 00000000 00000000 -+vpkudus: 0000000000000000, 0000000000000000 @@ 0000000000000000, 0000000000000000 ==> 00000000 00000000 00000000 00000000 -+vpkudus: 0000000000000000, 0000000000000000 @@ 0000000000000000, 0000000000000031 ==> 00000000 00000000 00000000 00000031 -+vpkudus: 0000000000000000, 0000000000000000 @@ 000000007c118a2b, 00000000f1112345 ==> 00000000 00000000 7c118a2b f1112345 -+vpkudus: 0000000000000000, 0000000000000000 @@ 01f2f3f4f5f6f7f8, f9fafbfcfefdfeff ==> 00000000 00000000 ffffffff ffffffff -+vpkudus: 0000000000000000, 0000000000000000 @@ 0000000000000000, 0000000000000000 ==> 00000000 00000000 00000000 00000000 -+vpkudus: 0000000000000000, 0000000000000000 @@ 0000000000000000, 0000000000000000 ==> 00000000 00000000 00000000 00000000 -+vpkudus: 0000000000000000, 0000000000000000 @@ 0000000000000000, 0000000000000031 ==> 00000000 00000000 00000000 00000031 -+vpkudus: 0000000000000000, 0000000000000031 @@ 000000007c118a2b, 00000000f1112345 ==> 00000000 00000031 7c118a2b f1112345 -+vpkudus: 0000000000000000, 0000000000000031 @@ 01f2f3f4f5f6f7f8, f9fafbfcfefdfeff ==> 00000000 00000031 ffffffff ffffffff -+vpkudus: 0000000000000000, 0000000000000031 @@ 0000000000000000, 0000000000000000 ==> 00000000 00000031 00000000 00000000 -+vpkudus: 0000000000000000, 0000000000000031 @@ 0000000000000000, 0000000000000000 ==> 00000000 00000031 00000000 00000000 -+vpkudus: 0000000000000000, 0000000000000031 @@ 0000000000000000, 0000000000000031 ==> 00000000 00000031 00000000 00000031 - - vpksdus: 000000007c118a2b, 00000000f1112345 @@ 000000007c118a2b, 00000000f1112345 ==> 7c118a2b f1112345 7c118a2b f1112345 - vpksdus: 000000007c118a2b, 00000000f1112345 @@ 01f2f3f4f5f6f7f8, f9fafbfcfefdfeff ==> 7c118a2b f1112345 ffffffff 00000000 -+vpksdus: 000000007c118a2b, 00000000f1112345 @@ 0000000000000000, 0000000000000000 ==> 7c118a2b f1112345 00000000 00000000 -+vpksdus: 000000007c118a2b, 00000000f1112345 @@ 0000000000000000, 0000000000000000 ==> 7c118a2b f1112345 00000000 00000000 -+vpksdus: 000000007c118a2b, 00000000f1112345 @@ 0000000000000000, 0000000000000031 ==> 7c118a2b f1112345 00000000 00000031 - vpksdus: 01f2f3f4f5f6f7f8, f9fafbfcfefdfeff @@ 000000007c118a2b, 00000000f1112345 ==> ffffffff 00000000 7c118a2b f1112345 - vpksdus: 01f2f3f4f5f6f7f8, f9fafbfcfefdfeff @@ 01f2f3f4f5f6f7f8, f9fafbfcfefdfeff ==> ffffffff 00000000 ffffffff 00000000 -+vpksdus: 01f2f3f4f5f6f7f8, f9fafbfcfefdfeff @@ 0000000000000000, 0000000000000000 ==> ffffffff 00000000 00000000 00000000 -+vpksdus: 01f2f3f4f5f6f7f8, f9fafbfcfefdfeff @@ 0000000000000000, 0000000000000000 ==> ffffffff 00000000 00000000 00000000 -+vpksdus: 01f2f3f4f5f6f7f8, f9fafbfcfefdfeff @@ 0000000000000000, 0000000000000031 ==> ffffffff 00000000 00000000 00000031 -+vpksdus: 0000000000000000, 0000000000000000 @@ 000000007c118a2b, 00000000f1112345 ==> 00000000 00000000 7c118a2b f1112345 -+vpksdus: 0000000000000000, 0000000000000000 @@ 01f2f3f4f5f6f7f8, f9fafbfcfefdfeff ==> 00000000 00000000 ffffffff 00000000 -+vpksdus: 0000000000000000, 0000000000000000 @@ 0000000000000000, 0000000000000000 ==> 00000000 00000000 00000000 00000000 -+vpksdus: 0000000000000000, 0000000000000000 @@ 0000000000000000, 0000000000000000 ==> 00000000 00000000 00000000 00000000 -+vpksdus: 0000000000000000, 0000000000000000 @@ 0000000000000000, 0000000000000031 ==> 00000000 00000000 00000000 00000031 -+vpksdus: 0000000000000000, 0000000000000000 @@ 000000007c118a2b, 00000000f1112345 ==> 00000000 00000000 7c118a2b f1112345 -+vpksdus: 0000000000000000, 0000000000000000 @@ 01f2f3f4f5f6f7f8, f9fafbfcfefdfeff ==> 00000000 00000000 ffffffff 00000000 -+vpksdus: 0000000000000000, 0000000000000000 @@ 0000000000000000, 0000000000000000 ==> 00000000 00000000 00000000 00000000 -+vpksdus: 0000000000000000, 0000000000000000 @@ 0000000000000000, 0000000000000000 ==> 00000000 00000000 00000000 00000000 -+vpksdus: 0000000000000000, 0000000000000000 @@ 0000000000000000, 0000000000000031 ==> 00000000 00000000 00000000 00000031 -+vpksdus: 0000000000000000, 0000000000000031 @@ 000000007c118a2b, 00000000f1112345 ==> 00000000 00000031 7c118a2b f1112345 -+vpksdus: 0000000000000000, 0000000000000031 @@ 01f2f3f4f5f6f7f8, f9fafbfcfefdfeff ==> 00000000 00000031 ffffffff 00000000 -+vpksdus: 0000000000000000, 0000000000000031 @@ 0000000000000000, 0000000000000000 ==> 00000000 00000031 00000000 00000000 -+vpksdus: 0000000000000000, 0000000000000031 @@ 0000000000000000, 0000000000000000 ==> 00000000 00000031 00000000 00000000 -+vpksdus: 0000000000000000, 0000000000000031 @@ 0000000000000000, 0000000000000031 ==> 00000000 00000031 00000000 00000031 - - vpksdss: 000000007c118a2b, 00000000f1112345 @@ 000000007c118a2b, 00000000f1112345 ==> 7c118a2b 7fffffff 7c118a2b 7fffffff - vpksdss: 000000007c118a2b, 00000000f1112345 @@ 01f2f3f4f5f6f7f8, f9fafbfcfefdfeff ==> 7c118a2b 7fffffff 7fffffff 80000000 -+vpksdss: 000000007c118a2b, 00000000f1112345 @@ 0000000000000000, 0000000000000000 ==> 7c118a2b 7fffffff 00000000 00000000 -+vpksdss: 000000007c118a2b, 00000000f1112345 @@ 0000000000000000, 0000000000000000 ==> 7c118a2b 7fffffff 00000000 00000000 -+vpksdss: 000000007c118a2b, 00000000f1112345 @@ 0000000000000000, 0000000000000031 ==> 7c118a2b 7fffffff 00000000 00000031 - vpksdss: 01f2f3f4f5f6f7f8, f9fafbfcfefdfeff @@ 000000007c118a2b, 00000000f1112345 ==> 7fffffff 80000000 7c118a2b 7fffffff - vpksdss: 01f2f3f4f5f6f7f8, f9fafbfcfefdfeff @@ 01f2f3f4f5f6f7f8, f9fafbfcfefdfeff ==> 7fffffff 80000000 7fffffff 80000000 -+vpksdss: 01f2f3f4f5f6f7f8, f9fafbfcfefdfeff @@ 0000000000000000, 0000000000000000 ==> 7fffffff 80000000 00000000 00000000 -+vpksdss: 01f2f3f4f5f6f7f8, f9fafbfcfefdfeff @@ 0000000000000000, 0000000000000000 ==> 7fffffff 80000000 00000000 00000000 -+vpksdss: 01f2f3f4f5f6f7f8, f9fafbfcfefdfeff @@ 0000000000000000, 0000000000000031 ==> 7fffffff 80000000 00000000 00000031 -+vpksdss: 0000000000000000, 0000000000000000 @@ 000000007c118a2b, 00000000f1112345 ==> 00000000 00000000 7c118a2b 7fffffff -+vpksdss: 0000000000000000, 0000000000000000 @@ 01f2f3f4f5f6f7f8, f9fafbfcfefdfeff ==> 00000000 00000000 7fffffff 80000000 -+vpksdss: 0000000000000000, 0000000000000000 @@ 0000000000000000, 0000000000000000 ==> 00000000 00000000 00000000 00000000 -+vpksdss: 0000000000000000, 0000000000000000 @@ 0000000000000000, 0000000000000000 ==> 00000000 00000000 00000000 00000000 -+vpksdss: 0000000000000000, 0000000000000000 @@ 0000000000000000, 0000000000000031 ==> 00000000 00000000 00000000 00000031 -+vpksdss: 0000000000000000, 0000000000000000 @@ 000000007c118a2b, 00000000f1112345 ==> 00000000 00000000 7c118a2b 7fffffff -+vpksdss: 0000000000000000, 0000000000000000 @@ 01f2f3f4f5f6f7f8, f9fafbfcfefdfeff ==> 00000000 00000000 7fffffff 80000000 -+vpksdss: 0000000000000000, 0000000000000000 @@ 0000000000000000, 0000000000000000 ==> 00000000 00000000 00000000 00000000 -+vpksdss: 0000000000000000, 0000000000000000 @@ 0000000000000000, 0000000000000000 ==> 00000000 00000000 00000000 00000000 -+vpksdss: 0000000000000000, 0000000000000000 @@ 0000000000000000, 0000000000000031 ==> 00000000 00000000 00000000 00000031 -+vpksdss: 0000000000000000, 0000000000000031 @@ 000000007c118a2b, 00000000f1112345 ==> 00000000 00000031 7c118a2b 7fffffff -+vpksdss: 0000000000000000, 0000000000000031 @@ 01f2f3f4f5f6f7f8, f9fafbfcfefdfeff ==> 00000000 00000031 7fffffff 80000000 -+vpksdss: 0000000000000000, 0000000000000031 @@ 0000000000000000, 0000000000000000 ==> 00000000 00000031 00000000 00000000 -+vpksdss: 0000000000000000, 0000000000000031 @@ 0000000000000000, 0000000000000000 ==> 00000000 00000031 00000000 00000000 -+vpksdss: 0000000000000000, 0000000000000031 @@ 0000000000000000, 0000000000000031 ==> 00000000 00000031 00000000 00000031 - - vupkhsw: 01020304 05060708 090a0b0c 0e0d0e0f ==> 0000000001020304 0000000005060708 - vupkhsw: f1f2f3f4 f5f6f7f8 f9fafbfc fefdfeff ==> fffffffff1f2f3f4 fffffffff5f6f7f8 -@@ -300,6 +1312,18 @@ vpermxor: 0102030405060708 @@ f1f2f3f4f5f6f7f8 @@ 0102030405060708 ==> f3f2f5f4 - 090a0b0c0e0d0e0f @@ f9fafbfcfefdfeff @@ 090a0b0c0e0d0e0f ==> fbfafdfffffcfffe - vpermxor: 0102030405060708 @@ f1f2f3f4f5f6f7f8 @@ f1f2f3f4f5f6f7f8 ==> fdfcfbfaf9f8f7f6 - 090a0b0c0e0d0e0f @@ f9fafbfcfefdfeff @@ f9fafbfcfefdfeff ==> f5f4f3f1f1f2f1f0 -+vpermxor: 0102030405060708 @@ 00007fffffffffff @@ 0102030405060708 ==> 017efefefefefefe -+ 090a0b0c0e0d0e0f @@ ffff000000000000 @@ 090a0b0c0e0d0e0f ==> fe01010101010101 -+vpermxor: 0102030405060708 @@ 00007fffffffffff @@ f1f2f3f4f5f6f7f8 ==> 0f70f0f0f0f0f0f0 -+ 090a0b0c0e0d0e0f @@ ffff000000000000 @@ f9fafbfcfefdfeff ==> f00f0f0f0f0f0f0f -+vpermxor: 0102030405060708 @@ 0000800000000000 @@ 0102030405060708 ==> 0181010101010101 -+ 090a0b0c0e0d0e0f @@ 0000000000000000 @@ 090a0b0c0e0d0e0f ==> 0101010101010101 -+vpermxor: 0102030405060708 @@ 0000800000000000 @@ f1f2f3f4f5f6f7f8 ==> 0f8f0f0f0f0f0f0f -+ 090a0b0c0e0d0e0f @@ 0000000000000000 @@ f9fafbfcfefdfeff ==> 0f0f0f0f0f0f0f0f -+vpermxor: 0102030405060708 @@ ffffffffffffffff @@ 0102030405060708 ==> fefefefefefefe01 -+ 090a0b0c0e0d0e0f @@ 0000000000000051 @@ 090a0b0c0e0d0e0f ==> 0101010101010150 -+vpermxor: 0102030405060708 @@ ffffffffffffffff @@ f1f2f3f4f5f6f7f8 ==> f0f0f0f0f0f0f00f -+ 090a0b0c0e0d0e0f @@ 0000000000000051 @@ f9fafbfcfefdfeff ==> 0f0f0f0f0f0f0f5e - vpermxor: f1f2f3f4f5f6f7f8 @@ 0102030405060708 @@ 0102030405060708 ==> f3f2f5f4f7f6f9f8 - f9fafbfcfefdfeff @@ 090a0b0c0e0d0e0f @@ 090a0b0c0e0d0e0f ==> fbfafdfffffcfffe - vpermxor: f1f2f3f4f5f6f7f8 @@ 0102030405060708 @@ f1f2f3f4f5f6f7f8 ==> fdfcfbfaf9f8f7f6 -@@ -308,36 +1332,138 @@ vpermxor: f1f2f3f4f5f6f7f8 @@ f1f2f3f4f5f6f7f8 @@ 0102030405060708 ==> 03020504 - f9fafbfcfefdfeff @@ f9fafbfcfefdfeff @@ 090a0b0c0e0d0e0f ==> 0b0a0d0f0f0c0f0e - vpermxor: f1f2f3f4f5f6f7f8 @@ f1f2f3f4f5f6f7f8 @@ f1f2f3f4f5f6f7f8 ==> 0d0c0b0a09080706 - f9fafbfcfefdfeff @@ f9fafbfcfefdfeff @@ f9fafbfcfefdfeff ==> 0504030101020100 -+vpermxor: f1f2f3f4f5f6f7f8 @@ 00007fffffffffff @@ 0102030405060708 ==> f18e0e0e0e0e0e0e -+ f9fafbfcfefdfeff @@ ffff000000000000 @@ 090a0b0c0e0d0e0f ==> 0ef1f1f1f1f1f1f1 -+vpermxor: f1f2f3f4f5f6f7f8 @@ 00007fffffffffff @@ f1f2f3f4f5f6f7f8 ==> ff80000000000000 -+ f9fafbfcfefdfeff @@ ffff000000000000 @@ f9fafbfcfefdfeff ==> 00ffffffffffffff -+vpermxor: f1f2f3f4f5f6f7f8 @@ 0000800000000000 @@ 0102030405060708 ==> f171f1f1f1f1f1f1 -+ f9fafbfcfefdfeff @@ 0000000000000000 @@ 090a0b0c0e0d0e0f ==> f1f1f1f1f1f1f1f1 -+vpermxor: f1f2f3f4f5f6f7f8 @@ 0000800000000000 @@ f1f2f3f4f5f6f7f8 ==> ff7fffffffffffff -+ f9fafbfcfefdfeff @@ 0000000000000000 @@ f9fafbfcfefdfeff ==> ffffffffffffffff -+vpermxor: f1f2f3f4f5f6f7f8 @@ ffffffffffffffff @@ 0102030405060708 ==> 0e0e0e0e0e0e0ef1 -+ f9fafbfcfefdfeff @@ 0000000000000051 @@ 090a0b0c0e0d0e0f ==> f1f1f1f1f1f1f1a0 -+vpermxor: f1f2f3f4f5f6f7f8 @@ ffffffffffffffff @@ f1f2f3f4f5f6f7f8 ==> 00000000000000ff -+ f9fafbfcfefdfeff @@ 0000000000000051 @@ f9fafbfcfefdfeff ==> ffffffffffffffae -+vpermxor: 00007fffffffffff @@ 0102030405060708 @@ 0102030405060708 ==> 0203040506070809 -+ ffff000000000000 @@ 090a0b0c0e0d0e0f @@ 090a0b0c0e0d0e0f ==> 0a0b0c0e0e0d0e0f -+vpermxor: 00007fffffffffff @@ 0102030405060708 @@ f1f2f3f4f5f6f7f8 ==> 0203040506070809 -+ ffff000000000000 @@ 090a0b0c0e0d0e0f @@ f9fafbfcfefdfeff ==> 0a0b0c0e0e0d0e0f -+vpermxor: 00007fffffffffff @@ f1f2f3f4f5f6f7f8 @@ 0102030405060708 ==> f2f3f4f5f6f7f8f9 -+ ffff000000000000 @@ f9fafbfcfefdfeff @@ 090a0b0c0e0d0e0f ==> fafbfcfefefdfeff -+vpermxor: 00007fffffffffff @@ f1f2f3f4f5f6f7f8 @@ f1f2f3f4f5f6f7f8 ==> f2f3f4f5f6f7f8f9 -+ ffff000000000000 @@ f9fafbfcfefdfeff @@ f9fafbfcfefdfeff ==> fafbfcfefefdfeff -+vpermxor: 00007fffffffffff @@ 00007fffffffffff @@ 0102030405060708 ==> 007fffffffffffff -+ ffff000000000000 @@ ffff000000000000 @@ 090a0b0c0e0d0e0f ==> ff00000000000000 -+vpermxor: 00007fffffffffff @@ 00007fffffffffff @@ f1f2f3f4f5f6f7f8 ==> 007fffffffffffff -+ ffff000000000000 @@ ffff000000000000 @@ f9fafbfcfefdfeff ==> ff00000000000000 -+vpermxor: 00007fffffffffff @@ 0000800000000000 @@ 0102030405060708 ==> 0080000000000000 -+ ffff000000000000 @@ 0000000000000000 @@ 090a0b0c0e0d0e0f ==> 0000000000000000 -+vpermxor: 00007fffffffffff @@ 0000800000000000 @@ f1f2f3f4f5f6f7f8 ==> 0080000000000000 -+ ffff000000000000 @@ 0000000000000000 @@ f9fafbfcfefdfeff ==> 0000000000000000 -+vpermxor: 00007fffffffffff @@ ffffffffffffffff @@ 0102030405060708 ==> ffffffffffffff00 -+ ffff000000000000 @@ 0000000000000051 @@ 090a0b0c0e0d0e0f ==> 0000000000000051 -+vpermxor: 00007fffffffffff @@ ffffffffffffffff @@ f1f2f3f4f5f6f7f8 ==> ffffffffffffff00 -+ ffff000000000000 @@ 0000000000000051 @@ f9fafbfcfefdfeff ==> 0000000000000051 -+vpermxor: 0000800000000000 @@ 0102030405060708 @@ 0102030405060708 ==> 0203040506070809 -+ 0000000000000000 @@ 090a0b0c0e0d0e0f @@ 090a0b0c0e0d0e0f ==> 0a0b0c0e0e0d0e0f -+vpermxor: 0000800000000000 @@ 0102030405060708 @@ f1f2f3f4f5f6f7f8 ==> 0203040506070809 -+ 0000000000000000 @@ 090a0b0c0e0d0e0f @@ f9fafbfcfefdfeff ==> 0a0b0c0e0e0d0e0f -+vpermxor: 0000800000000000 @@ f1f2f3f4f5f6f7f8 @@ 0102030405060708 ==> f2f3f4f5f6f7f8f9 -+ 0000000000000000 @@ f9fafbfcfefdfeff @@ 090a0b0c0e0d0e0f ==> fafbfcfefefdfeff -+vpermxor: 0000800000000000 @@ f1f2f3f4f5f6f7f8 @@ f1f2f3f4f5f6f7f8 ==> f2f3f4f5f6f7f8f9 -+ 0000000000000000 @@ f9fafbfcfefdfeff @@ f9fafbfcfefdfeff ==> fafbfcfefefdfeff -+vpermxor: 0000800000000000 @@ 00007fffffffffff @@ 0102030405060708 ==> 007fffffffffffff -+ 0000000000000000 @@ ffff000000000000 @@ 090a0b0c0e0d0e0f ==> ff00000000000000 -+vpermxor: 0000800000000000 @@ 00007fffffffffff @@ f1f2f3f4f5f6f7f8 ==> 007fffffffffffff -+ 0000000000000000 @@ ffff000000000000 @@ f9fafbfcfefdfeff ==> ff00000000000000 -+vpermxor: 0000800000000000 @@ 0000800000000000 @@ 0102030405060708 ==> 0080000000000000 -+ 0000000000000000 @@ 0000000000000000 @@ 090a0b0c0e0d0e0f ==> 0000000000000000 -+vpermxor: 0000800000000000 @@ 0000800000000000 @@ f1f2f3f4f5f6f7f8 ==> 0080000000000000 -+ 0000000000000000 @@ 0000000000000000 @@ f9fafbfcfefdfeff ==> 0000000000000000 -+vpermxor: 0000800000000000 @@ ffffffffffffffff @@ 0102030405060708 ==> ffffffffffffff00 -+ 0000000000000000 @@ 0000000000000051 @@ 090a0b0c0e0d0e0f ==> 0000000000000051 -+vpermxor: 0000800000000000 @@ ffffffffffffffff @@ f1f2f3f4f5f6f7f8 ==> ffffffffffffff00 -+ 0000000000000000 @@ 0000000000000051 @@ f9fafbfcfefdfeff ==> 0000000000000051 -+vpermxor: ffffffffffffffff @@ 0102030405060708 @@ 0102030405060708 ==> fdfcfbfaf9f8f7f6 -+ 0000000000000051 @@ 090a0b0c0e0d0e0f @@ 090a0b0c0e0d0e0f ==> f5f4f3f1f1f2f1f0 -+vpermxor: ffffffffffffffff @@ 0102030405060708 @@ f1f2f3f4f5f6f7f8 ==> 5352555457565958 -+ 0000000000000051 @@ 090a0b0c0e0d0e0f @@ f9fafbfcfefdfeff ==> 5b5a5d5f5f5c5f5e -+vpermxor: ffffffffffffffff @@ f1f2f3f4f5f6f7f8 @@ 0102030405060708 ==> 0d0c0b0a09080706 -+ 0000000000000051 @@ f9fafbfcfefdfeff @@ 090a0b0c0e0d0e0f ==> 0504030101020100 -+vpermxor: ffffffffffffffff @@ f1f2f3f4f5f6f7f8 @@ f1f2f3f4f5f6f7f8 ==> a3a2a5a4a7a6a9a8 -+ 0000000000000051 @@ f9fafbfcfefdfeff @@ f9fafbfcfefdfeff ==> abaaadafafacafae -+vpermxor: ffffffffffffffff @@ 00007fffffffffff @@ 0102030405060708 ==> ff80000000000000 -+ 0000000000000051 @@ ffff000000000000 @@ 090a0b0c0e0d0e0f ==> 00ffffffffffffff -+vpermxor: ffffffffffffffff @@ 00007fffffffffff @@ f1f2f3f4f5f6f7f8 ==> 512eaeaeaeaeaeae -+ 0000000000000051 @@ ffff000000000000 @@ f9fafbfcfefdfeff ==> ae51515151515151 -+vpermxor: ffffffffffffffff @@ 0000800000000000 @@ 0102030405060708 ==> ff7fffffffffffff -+ 0000000000000051 @@ 0000000000000000 @@ 090a0b0c0e0d0e0f ==> ffffffffffffffff -+vpermxor: ffffffffffffffff @@ 0000800000000000 @@ f1f2f3f4f5f6f7f8 ==> 51d1515151515151 -+ 0000000000000051 @@ 0000000000000000 @@ f9fafbfcfefdfeff ==> 5151515151515151 -+vpermxor: ffffffffffffffff @@ ffffffffffffffff @@ 0102030405060708 ==> 00000000000000ff -+ 0000000000000051 @@ 0000000000000051 @@ 090a0b0c0e0d0e0f ==> ffffffffffffffae -+vpermxor: ffffffffffffffff @@ ffffffffffffffff @@ f1f2f3f4f5f6f7f8 ==> aeaeaeaeaeaeae51 -+ 0000000000000051 @@ 0000000000000051 @@ f9fafbfcfefdfeff ==> 5151515151515100 - - vclzb: 0102030405060708 @@ 090a0b0c0e0d0e0f ==> 07060605050505040404040404040404 - vclzb: f1f2f3f4f5f6f7f8 @@ f9fafbfcfefdfeff ==> 00000000000000000000000000000000 -+vclzb: 00007fffffffffff @@ ffff000000000000 ==> 08080100000000000000080808080808 -+vclzb: 0000800000000000 @@ 0000000000000000 ==> 08080008080808080808080808080808 -+vclzb: ffffffffffffffff @@ 0000000000000051 ==> 00000000000000000808080808080801 - - vclzw: 0102030405060708 @@ 090a0b0c0e0d0e0f ==> 00000007000000050000000400000004 - vclzw: f1f2f3f4f5f6f7f8 @@ f9fafbfcfefdfeff ==> 00000000000000000000000000000000 -+vclzw: 00007fffffffffff @@ ffff000000000000 ==> 00000011000000000000000000000020 -+vclzw: 0000800000000000 @@ 0000000000000000 ==> 00000010000000200000002000000020 -+vclzw: ffffffffffffffff @@ 0000000000000051 ==> 00000000000000000000002000000019 - - vclzh: 0102030405060708 @@ 090a0b0c0e0d0e0f ==> 00070006000500050004000400040004 - vclzh: f1f2f3f4f5f6f7f8 @@ f9fafbfcfefdfeff ==> 00000000000000000000000000000000 -+vclzh: 00007fffffffffff @@ ffff000000000000 ==> 00100001000000000000001000100010 -+vclzh: 0000800000000000 @@ 0000000000000000 ==> 00100000001000100010001000100010 -+vclzh: ffffffffffffffff @@ 0000000000000051 ==> 00000000000000000010001000100009 - - vclzd: 0102030405060708 @@ 090a0b0c0e0d0e0f ==> 00000000000000070000000000000004 - vclzd: f1f2f3f4f5f6f7f8 @@ f9fafbfcfefdfeff ==> 00000000000000000000000000000000 -+vclzd: 00007fffffffffff @@ ffff000000000000 ==> 00000000000000110000000000000000 -+vclzd: 0000800000000000 @@ 0000000000000000 ==> 00000000000000100000000000000040 -+vclzd: ffffffffffffffff @@ 0000000000000051 ==> 00000000000000000000000000000039 - - vpopcntb: 0102030405060708 @@ 090a0b0c0e0d0e0f ==> 01010201020203010202030203030304 - vpopcntb: f1f2f3f4f5f6f7f8 @@ f9fafbfcfefdfeff ==> 05050605060607050606070607070708 -+vpopcntb: 00007fffffffffff @@ ffff000000000000 ==> 00000708080808080808000000000000 -+vpopcntb: 0000800000000000 @@ 0000000000000000 ==> 00000100000000000000000000000000 -+vpopcntb: ffffffffffffffff @@ 0000000000000051 ==> 08080808080808080000000000000003 - - vpopcnth: 0102030405060708 @@ 090a0b0c0e0d0e0f ==> 00020003000400040004000500060007 - vpopcnth: f1f2f3f4f5f6f7f8 @@ f9fafbfcfefdfeff ==> 000a000b000c000c000c000d000e000f -+vpopcnth: 00007fffffffffff @@ ffff000000000000 ==> 0000000f001000100010000000000000 -+vpopcnth: 0000800000000000 @@ 0000000000000000 ==> 00000001000000000000000000000000 -+vpopcnth: ffffffffffffffff @@ 0000000000000051 ==> 00100010001000100000000000000003 - - vpopcntw: 0102030405060708 @@ 090a0b0c0e0d0e0f ==> 0000000500000008000000090000000d - vpopcntw: f1f2f3f4f5f6f7f8 @@ f9fafbfcfefdfeff ==> 0000001500000018000000190000001d -+vpopcntw: 00007fffffffffff @@ ffff000000000000 ==> 0000000f000000200000001000000000 -+vpopcntw: 0000800000000000 @@ 0000000000000000 ==> 00000001000000000000000000000000 -+vpopcntw: ffffffffffffffff @@ 0000000000000051 ==> 00000020000000200000000000000003 - - vpopcntd: 0102030405060708 @@ 090a0b0c0e0d0e0f ==> 000000000000000d0000000000000016 - vpopcntd: f1f2f3f4f5f6f7f8 @@ f9fafbfcfefdfeff ==> 000000000000002d0000000000000036 -+vpopcntd: 00007fffffffffff @@ ffff000000000000 ==> 000000000000002f0000000000000010 -+vpopcntd: 0000800000000000 @@ 0000000000000000 ==> 00000000000000010000000000000000 -+vpopcntd: ffffffffffffffff @@ 0000000000000051 ==> 00000000000000400000000000000003 - - vsbox: 0102030405060708 @@ 090a0b0c0e0d0e0f ==> 7c777bf26b6fc53001672bfeabd7ab76 - vsbox: f1f2f3f4f5f6f7f8 @@ f9fafbfcfefdfeff ==> a1890dbfe6426841992d0fb0bb54bb16 -+vsbox: 00007fffffffffff @@ ffff000000000000 ==> 6363d216161616161616636363636363 -+vsbox: 0000800000000000 @@ 0000000000000000 ==> 6363cd63636363636363636363636363 -+vsbox: ffffffffffffffff @@ 0000000000000051 ==> 161616161616161663636363636363d1 - - vgbbd: 0102030405060708 @@ 090a0b0c0e0d0e0f ==> 00000000011e66aa00000000ff1f6ba5 - vgbbd: f1f2f3f4f5f6f7f8 @@ f9fafbfcfefdfeff ==> ffffffff011e66aaffffffffff1f6ba5 -+vgbbd: 00007fffffffffff @@ ffff000000000000 ==> 1f3f3f3f3f3f3f3fc0c0c0c0c0c0c0c0 -+vgbbd: 0000800000000000 @@ 0000000000000000 ==> 20000000000000000000000000000000 -+vgbbd: ffffffffffffffff @@ 0000000000000051 ==> ffffffffffffffff0001000100000001 - - vshasigmad: 0102030405060708 @@ 090a0b0c0e0d0e0f ==> 088207870e8c098d || 8b9e1b9b13149015 - vshasigmad: 0102030405060708 @@ 090a0b0c0e0d0e0f ==> c8f5100c7844a0fc || e9b5916d0131c581 -@@ -347,6 +1473,18 @@ vshasigmad: f1f2f3f4f5f6f7f8 @@ f9fafbfcfefdfeff ==> 81eb6eee67e560e4 || 02f772 - vshasigmad: f1f2f3f4f5f6f7f8 @@ f9fafbfcfefdfeff ==> 52af4a56221efaa6 || 73efcb375b6b9fdb - vshasigmad: f1f2f3f4f5f6f7f8 @@ f9fafbfcfefdfeff ==> 8bf92f9ed2b06655 || 299d6bbd9e22f4c7 - vshasigmad: f1f2f3f4f5f6f7f8 @@ f9fafbfcfefdfeff ==> 986700cc8f5613df || 7a3f676a2ef03935 -+vshasigmad: 00007fffffffffff @@ ffff000000000000 ==> 7f003f7fffffffff || 7eff810000000000 -+vshasigmad: 00007fffffffffff @@ ffff000000000000 ==> fffc1e000ffffff8 || fc07e3ffe0000007 -+vshasigmad: 00007fffffffffff @@ ffff000000000000 ==> fffffff03e07e0ff || 0000000fc1f03e00 -+vshasigmad: 00007fffffffffff @@ ffff000000000000 ==> fffc3ffe1f80003f || 0003c003c07fff80 -+vshasigmad: 0000800000000000 @@ 0000000000000000 ==> 0000418000000000 || 0000000000000000 -+vshasigmad: 0000800000000000 @@ 0000000000000000 ==> 0004020010000000 || 0000000000000000 -+vshasigmad: 0000800000000000 @@ 0000000000000000 ==> 0000000000082100 || 0000000000000000 -+vshasigmad: 0000800000000000 @@ 0000000000000000 ==> 0000000220000040 || 0000000000000000 -+vshasigmad: ffffffffffffffff @@ 0000000000000051 ==> 01ffffffffffffff || d100000000000028 -+vshasigmad: ffffffffffffffff @@ 0000000000000051 ==> 03ffffffffffffff || 000a200000000289 -+vshasigmad: ffffffffffffffff @@ 0000000000000051 ==> ffffffffffffffff || 00000504e2000000 -+vshasigmad: ffffffffffffffff @@ 0000000000000051 ==> ffffffffffffffff || 0150400028800000 - - vshasigmaw: 0102030405060708 @@ 090a0b0c0e0d0e0f ==> 88e344269168cdae || 9bf057355c5e785e - vshasigmaw: 0102030405060708 @@ 090a0b0c0e0d0e0f ==> 41e2c021c36443a2 || 44e5c72626c5e584 -@@ -356,6 +1494,18 @@ vshasigmaw: f1f2f3f4f5f6f7f8 @@ f9fafbfcfefdfeff ==> 4b2087e552ab0e6d || 583394 - vshasigmaw: f1f2f3f4f5f6f7f8 @@ f9fafbfcfefdfeff ==> 27b89a7ba53e19f8 || 22bf9d7c409fbfde - vshasigmaw: f1f2f3f4f5f6f7f8 @@ f9fafbfcfefdfeff ==> 6814e0ad5965f19e || 0a7682cfffbb77ab - vshasigmaw: f1f2f3f4f5f6f7f8 @@ f9fafbfcfefdfeff ==> 54200fe9e7b2997b || 71052acc5efb57bb -+vshasigmaw: 00007fffffffffff @@ ffff000000000000 ==> e1ffcf001fffffff || de0021ff00000000 -+vshasigmaw: 00007fffffffffff @@ ffff000000000000 ==> 3000601f003fffff || 603f9fc000000000 -+vshasigmaw: 00007fffffffffff @@ ffff000000000000 ==> 3e07e3fcffffffff || c3f83c0700000000 -+vshasigmaw: 00007fffffffffff @@ ffff000000000000 ==> 03dffe70ffffffff || fc60039f00000000 -+vshasigmaw: 0000800000000000 @@ 0000000000000000 ==> 2000110000000000 || 0000000000000000 -+vshasigmaw: 0000800000000000 @@ 0000000000000000 ==> 5000002000000000 || 0000000000000000 -+vshasigmaw: 0000800000000000 @@ 0000000000000000 ==> 0200200400000000 || 0000000000000000 -+vshasigmaw: 0000800000000000 @@ 0000000000000000 ==> 0040021000000000 || 0000000000000000 -+vshasigmaw: ffffffffffffffff @@ 0000000000000051 ==> 1fffffff1fffffff || 00000000a214400a -+vshasigmaw: ffffffffffffffff @@ 0000000000000051 ==> 003fffff003fffff || 000000000022a000 -+vshasigmaw: ffffffffffffffff @@ 0000000000000051 ==> ffffffffffffffff || 0000000042894414 -+vshasigmaw: ffffffffffffffff @@ 0000000000000051 ==> ffffffffffffffff || 000000004e202881 - - bcdadd.: 8045090189321003 || 001122334556677d @@ 8045090189321003 || 001122334556677d ==> 6090180378642006 || 002244669113354d - bcdadd.: 8045090189321003 || 001122334556677d @@ 8045090189321003 || 001122334556677d ==> 6090180378642006 || 002244669113354d -@@ -425,63 +1575,336 @@ bcdsub.: 0000000000000000 || 0000000000000000 @@ 0000000000000000 || 00000000000 - - vaddcuq: 0102030405060708090a0b0c0e0d0e0f @@ 0102030405060708090a0b0c0e0d0e0f ==> 00000000000000000000000000000000 - vaddcuq: 0102030405060708090a0b0c0e0d0e0f @@ f1f2f3f4f5f6f7f8f9fafbfcfefdfeff ==> 00000000000000000000000000000000 -+vaddcuq: 0102030405060708090a0b0c0e0d0e0f @@ 00007fffffffffffffff000000000000 ==> 00000000000000000000000000000000 -+vaddcuq: 0102030405060708090a0b0c0e0d0e0f @@ 00008000000000000000000000000000 ==> 00000000000000000000000000000000 -+vaddcuq: 0102030405060708090a0b0c0e0d0e0f @@ ffffffffffffffff0000000000000051 ==> 00000000000000000000000000000001 - vaddcuq: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff @@ 0102030405060708090a0b0c0e0d0e0f ==> 00000000000000000000000000000000 - vaddcuq: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff @@ f1f2f3f4f5f6f7f8f9fafbfcfefdfeff ==> 00000000000000000000000000000001 -+vaddcuq: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff @@ 00007fffffffffffffff000000000000 ==> 00000000000000000000000000000000 -+vaddcuq: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff @@ 00008000000000000000000000000000 ==> 00000000000000000000000000000000 -+vaddcuq: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff @@ ffffffffffffffff0000000000000051 ==> 00000000000000000000000000000001 -+vaddcuq: 00007fffffffffffffff000000000000 @@ 0102030405060708090a0b0c0e0d0e0f ==> 00000000000000000000000000000000 -+vaddcuq: 00007fffffffffffffff000000000000 @@ f1f2f3f4f5f6f7f8f9fafbfcfefdfeff ==> 00000000000000000000000000000000 -+vaddcuq: 00007fffffffffffffff000000000000 @@ 00007fffffffffffffff000000000000 ==> 00000000000000000000000000000000 -+vaddcuq: 00007fffffffffffffff000000000000 @@ 00008000000000000000000000000000 ==> 00000000000000000000000000000000 -+vaddcuq: 00007fffffffffffffff000000000000 @@ ffffffffffffffff0000000000000051 ==> 00000000000000000000000000000001 -+vaddcuq: 00008000000000000000000000000000 @@ 0102030405060708090a0b0c0e0d0e0f ==> 00000000000000000000000000000000 -+vaddcuq: 00008000000000000000000000000000 @@ f1f2f3f4f5f6f7f8f9fafbfcfefdfeff ==> 00000000000000000000000000000000 -+vaddcuq: 00008000000000000000000000000000 @@ 00007fffffffffffffff000000000000 ==> 00000000000000000000000000000000 -+vaddcuq: 00008000000000000000000000000000 @@ 00008000000000000000000000000000 ==> 00000000000000000000000000000000 -+vaddcuq: 00008000000000000000000000000000 @@ ffffffffffffffff0000000000000051 ==> 00000000000000000000000000000001 -+vaddcuq: ffffffffffffffff0000000000000051 @@ 0102030405060708090a0b0c0e0d0e0f ==> 00000000000000000000000000000001 -+vaddcuq: ffffffffffffffff0000000000000051 @@ f1f2f3f4f5f6f7f8f9fafbfcfefdfeff ==> 00000000000000000000000000000001 -+vaddcuq: ffffffffffffffff0000000000000051 @@ 00007fffffffffffffff000000000000 ==> 00000000000000000000000000000001 -+vaddcuq: ffffffffffffffff0000000000000051 @@ 00008000000000000000000000000000 ==> 00000000000000000000000000000001 -+vaddcuq: ffffffffffffffff0000000000000051 @@ ffffffffffffffff0000000000000051 ==> 00000000000000000000000000000001 - - vadduqm: 0102030405060708090a0b0c0e0d0e0f @@ 0102030405060708090a0b0c0e0d0e0f ==> 020406080a0c0e10121416181c1a1c1e - vadduqm: 0102030405060708090a0b0c0e0d0e0f @@ f1f2f3f4f5f6f7f8f9fafbfcfefdfeff ==> f2f4f6f8fafcff01030507090d0b0d0e -+vadduqm: 0102030405060708090a0b0c0e0d0e0f @@ 00007fffffffffffffff000000000000 ==> 010283040506070809090b0c0e0d0e0f -+vadduqm: 0102030405060708090a0b0c0e0d0e0f @@ 00008000000000000000000000000000 ==> 0102830405060708090a0b0c0e0d0e0f -+vadduqm: 0102030405060708090a0b0c0e0d0e0f @@ ffffffffffffffff0000000000000051 ==> 0102030405060707090a0b0c0e0d0e60 - vadduqm: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff @@ 0102030405060708090a0b0c0e0d0e0f ==> f2f4f6f8fafcff01030507090d0b0d0e - vadduqm: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff @@ f1f2f3f4f5f6f7f8f9fafbfcfefdfeff ==> e3e5e7e9ebedeff1f3f5f7f9fdfbfdfe -+vadduqm: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff @@ 00007fffffffffffffff000000000000 ==> f1f373f4f5f6f7f8f9f9fbfcfefdfeff -+vadduqm: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff @@ 00008000000000000000000000000000 ==> f1f373f4f5f6f7f8f9fafbfcfefdfeff -+vadduqm: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff @@ ffffffffffffffff0000000000000051 ==> f1f2f3f4f5f6f7f7f9fafbfcfefdff50 -+vadduqm: 00007fffffffffffffff000000000000 @@ 0102030405060708090a0b0c0e0d0e0f ==> 010283040506070809090b0c0e0d0e0f -+vadduqm: 00007fffffffffffffff000000000000 @@ f1f2f3f4f5f6f7f8f9fafbfcfefdfeff ==> f1f373f4f5f6f7f8f9f9fbfcfefdfeff -+vadduqm: 00007fffffffffffffff000000000000 @@ 00007fffffffffffffff000000000000 ==> 0000fffffffffffffffe000000000000 -+vadduqm: 00007fffffffffffffff000000000000 @@ 00008000000000000000000000000000 ==> 0000ffffffffffffffff000000000000 -+vadduqm: 00007fffffffffffffff000000000000 @@ ffffffffffffffff0000000000000051 ==> 00007ffffffffffeffff000000000051 -+vadduqm: 00008000000000000000000000000000 @@ 0102030405060708090a0b0c0e0d0e0f ==> 0102830405060708090a0b0c0e0d0e0f -+vadduqm: 00008000000000000000000000000000 @@ f1f2f3f4f5f6f7f8f9fafbfcfefdfeff ==> f1f373f4f5f6f7f8f9fafbfcfefdfeff -+vadduqm: 00008000000000000000000000000000 @@ 00007fffffffffffffff000000000000 ==> 0000ffffffffffffffff000000000000 -+vadduqm: 00008000000000000000000000000000 @@ 00008000000000000000000000000000 ==> 00010000000000000000000000000000 -+vadduqm: 00008000000000000000000000000000 @@ ffffffffffffffff0000000000000051 ==> 00007fffffffffff0000000000000051 -+vadduqm: ffffffffffffffff0000000000000051 @@ 0102030405060708090a0b0c0e0d0e0f ==> 0102030405060707090a0b0c0e0d0e60 -+vadduqm: ffffffffffffffff0000000000000051 @@ f1f2f3f4f5f6f7f8f9fafbfcfefdfeff ==> f1f2f3f4f5f6f7f7f9fafbfcfefdff50 -+vadduqm: ffffffffffffffff0000000000000051 @@ 00007fffffffffffffff000000000000 ==> 00007ffffffffffeffff000000000051 -+vadduqm: ffffffffffffffff0000000000000051 @@ 00008000000000000000000000000000 ==> 00007fffffffffff0000000000000051 -+vadduqm: ffffffffffffffff0000000000000051 @@ ffffffffffffffff0000000000000051 ==> fffffffffffffffe00000000000000a2 - - vsubcuq: 0102030405060708090a0b0c0e0d0e0f @@ 0102030405060708090a0b0c0e0d0e0f ==> 00000000000000000000000000000001 - vsubcuq: 0102030405060708090a0b0c0e0d0e0f @@ f1f2f3f4f5f6f7f8f9fafbfcfefdfeff ==> 00000000000000000000000000000000 -+vsubcuq: 0102030405060708090a0b0c0e0d0e0f @@ 00007fffffffffffffff000000000000 ==> 00000000000000000000000000000001 -+vsubcuq: 0102030405060708090a0b0c0e0d0e0f @@ 00008000000000000000000000000000 ==> 00000000000000000000000000000001 -+vsubcuq: 0102030405060708090a0b0c0e0d0e0f @@ ffffffffffffffff0000000000000051 ==> 00000000000000000000000000000000 - vsubcuq: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff @@ 0102030405060708090a0b0c0e0d0e0f ==> 00000000000000000000000000000001 - vsubcuq: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff @@ f1f2f3f4f5f6f7f8f9fafbfcfefdfeff ==> 00000000000000000000000000000001 -+vsubcuq: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff @@ 00007fffffffffffffff000000000000 ==> 00000000000000000000000000000001 -+vsubcuq: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff @@ 00008000000000000000000000000000 ==> 00000000000000000000000000000001 -+vsubcuq: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff @@ ffffffffffffffff0000000000000051 ==> 00000000000000000000000000000000 -+vsubcuq: 00007fffffffffffffff000000000000 @@ 0102030405060708090a0b0c0e0d0e0f ==> 00000000000000000000000000000000 -+vsubcuq: 00007fffffffffffffff000000000000 @@ f1f2f3f4f5f6f7f8f9fafbfcfefdfeff ==> 00000000000000000000000000000000 -+vsubcuq: 00007fffffffffffffff000000000000 @@ 00007fffffffffffffff000000000000 ==> 00000000000000000000000000000001 -+vsubcuq: 00007fffffffffffffff000000000000 @@ 00008000000000000000000000000000 ==> 00000000000000000000000000000000 -+vsubcuq: 00007fffffffffffffff000000000000 @@ ffffffffffffffff0000000000000051 ==> 00000000000000000000000000000000 -+vsubcuq: 00008000000000000000000000000000 @@ 0102030405060708090a0b0c0e0d0e0f ==> 00000000000000000000000000000000 -+vsubcuq: 00008000000000000000000000000000 @@ f1f2f3f4f5f6f7f8f9fafbfcfefdfeff ==> 00000000000000000000000000000000 -+vsubcuq: 00008000000000000000000000000000 @@ 00007fffffffffffffff000000000000 ==> 00000000000000000000000000000001 -+vsubcuq: 00008000000000000000000000000000 @@ 00008000000000000000000000000000 ==> 00000000000000000000000000000001 -+vsubcuq: 00008000000000000000000000000000 @@ ffffffffffffffff0000000000000051 ==> 00000000000000000000000000000000 -+vsubcuq: ffffffffffffffff0000000000000051 @@ 0102030405060708090a0b0c0e0d0e0f ==> 00000000000000000000000000000001 -+vsubcuq: ffffffffffffffff0000000000000051 @@ f1f2f3f4f5f6f7f8f9fafbfcfefdfeff ==> 00000000000000000000000000000001 -+vsubcuq: ffffffffffffffff0000000000000051 @@ 00007fffffffffffffff000000000000 ==> 00000000000000000000000000000001 -+vsubcuq: ffffffffffffffff0000000000000051 @@ 00008000000000000000000000000000 ==> 00000000000000000000000000000001 -+vsubcuq: ffffffffffffffff0000000000000051 @@ ffffffffffffffff0000000000000051 ==> 00000000000000000000000000000001 - - vsubuqm: 0102030405060708090a0b0c0e0d0e0f @@ 0102030405060708090a0b0c0e0d0e0f ==> 00000000000000000000000000000000 - vsubuqm: 0102030405060708090a0b0c0e0d0e0f @@ f1f2f3f4f5f6f7f8f9fafbfcfefdfeff ==> 0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f10 -+vsubuqm: 0102030405060708090a0b0c0e0d0e0f @@ 00007fffffffffffffff000000000000 ==> 0101830405060708090b0b0c0e0d0e0f -+vsubuqm: 0102030405060708090a0b0c0e0d0e0f @@ 00008000000000000000000000000000 ==> 0101830405060708090a0b0c0e0d0e0f -+vsubuqm: 0102030405060708090a0b0c0e0d0e0f @@ ffffffffffffffff0000000000000051 ==> 0102030405060709090a0b0c0e0d0dbe - vsubuqm: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff @@ 0102030405060708090a0b0c0e0d0e0f ==> f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0 - vsubuqm: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff @@ f1f2f3f4f5f6f7f8f9fafbfcfefdfeff ==> 00000000000000000000000000000000 -+vsubuqm: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff @@ 00007fffffffffffffff000000000000 ==> f1f273f4f5f6f7f8f9fbfbfcfefdfeff -+vsubuqm: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff @@ 00008000000000000000000000000000 ==> f1f273f4f5f6f7f8f9fafbfcfefdfeff -+vsubuqm: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff @@ ffffffffffffffff0000000000000051 ==> f1f2f3f4f5f6f7f9f9fafbfcfefdfeae -+vsubuqm: 00007fffffffffffffff000000000000 @@ 0102030405060708090a0b0c0e0d0e0f ==> fefe7cfbfaf9f8f7f6f4f4f3f1f2f1f1 -+vsubuqm: 00007fffffffffffffff000000000000 @@ f1f2f3f4f5f6f7f8f9fafbfcfefdfeff ==> 0e0d8c0b0a0908070604040301020101 -+vsubuqm: 00007fffffffffffffff000000000000 @@ 00007fffffffffffffff000000000000 ==> 00000000000000000000000000000000 -+vsubuqm: 00007fffffffffffffff000000000000 @@ 00008000000000000000000000000000 ==> ffffffffffffffffffff000000000000 -+vsubuqm: 00007fffffffffffffff000000000000 @@ ffffffffffffffff0000000000000051 ==> 0000800000000000fffeffffffffffaf -+vsubuqm: 00008000000000000000000000000000 @@ 0102030405060708090a0b0c0e0d0e0f ==> fefe7cfbfaf9f8f7f6f5f4f3f1f2f1f1 -+vsubuqm: 00008000000000000000000000000000 @@ f1f2f3f4f5f6f7f8f9fafbfcfefdfeff ==> 0e0d8c0b0a0908070605040301020101 -+vsubuqm: 00008000000000000000000000000000 @@ 00007fffffffffffffff000000000000 ==> 00000000000000000001000000000000 -+vsubuqm: 00008000000000000000000000000000 @@ 00008000000000000000000000000000 ==> 00000000000000000000000000000000 -+vsubuqm: 00008000000000000000000000000000 @@ ffffffffffffffff0000000000000051 ==> 0000800000000000ffffffffffffffaf -+vsubuqm: ffffffffffffffff0000000000000051 @@ 0102030405060708090a0b0c0e0d0e0f ==> fefdfcfbfaf9f8f6f6f5f4f3f1f2f242 -+vsubuqm: ffffffffffffffff0000000000000051 @@ f1f2f3f4f5f6f7f8f9fafbfcfefdfeff ==> 0e0d0c0b0a0908060605040301020152 -+vsubuqm: ffffffffffffffff0000000000000051 @@ 00007fffffffffffffff000000000000 ==> ffff7fffffffffff0001000000000051 -+vsubuqm: ffffffffffffffff0000000000000051 @@ 00008000000000000000000000000000 ==> ffff7fffffffffff0000000000000051 -+vsubuqm: ffffffffffffffff0000000000000051 @@ ffffffffffffffff0000000000000051 ==> 00000000000000000000000000000000 - - vbpermq: 0102030405060708090a0b0c0e0d0e0f @@ 0102030405060708090a0b0c0e0d0e0f ==> 000000000000020a0000000000000000 - vbpermq: 0102030405060708090a0b0c0e0d0e0f @@ f1f2f3f4f5f6f7f8f9fafbfcfefdfeff ==> 00000000000000000000000000000000 -+vbpermq: 0102030405060708090a0b0c0e0d0e0f @@ 00007fffffffffffffff000000000000 ==> 00000000000020000000000000000000 -+vbpermq: 0102030405060708090a0b0c0e0d0e0f @@ 00008000000000000000000000000000 ==> 00000000000000000000000000000000 -+vbpermq: 0102030405060708090a0b0c0e0d0e0f @@ ffffffffffffffff0000000000000051 ==> 00000000000000000000000000000000 - vbpermq: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff @@ 0102030405060708090a0b0c0e0d0e0f ==> 000000000000e3ea0000000000000000 - vbpermq: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff @@ f1f2f3f4f5f6f7f8f9fafbfcfefdfeff ==> 00000000000000000000000000000000 -+vbpermq: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff @@ 00007fffffffffffffff000000000000 ==> 000000000000e03f0000000000000000 -+vbpermq: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff @@ 00008000000000000000000000000000 ==> 000000000000dfff0000000000000000 -+vbpermq: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff @@ ffffffffffffffff0000000000000051 ==> 00000000000000ff0000000000000000 -+vbpermq: 00007fffffffffffffff000000000000 @@ 0102030405060708090a0b0c0e0d0e0f ==> 00000000000000000000000000000000 -+vbpermq: 00007fffffffffffffff000000000000 @@ f1f2f3f4f5f6f7f8f9fafbfcfefdfeff ==> 00000000000000000000000000000000 -+vbpermq: 00007fffffffffffffff000000000000 @@ 00007fffffffffffffff000000000000 ==> 00000000000000000000000000000000 -+vbpermq: 00007fffffffffffffff000000000000 @@ 00008000000000000000000000000000 ==> 00000000000000000000000000000000 -+vbpermq: 00007fffffffffffffff000000000000 @@ ffffffffffffffff0000000000000051 ==> 00000000000000000000000000000000 -+vbpermq: 00008000000000000000000000000000 @@ 0102030405060708090a0b0c0e0d0e0f ==> 00000000000000000000000000000000 -+vbpermq: 00008000000000000000000000000000 @@ f1f2f3f4f5f6f7f8f9fafbfcfefdfeff ==> 00000000000000000000000000000000 -+vbpermq: 00008000000000000000000000000000 @@ 00007fffffffffffffff000000000000 ==> 00000000000000000000000000000000 -+vbpermq: 00008000000000000000000000000000 @@ 00008000000000000000000000000000 ==> 00000000000000000000000000000000 -+vbpermq: 00008000000000000000000000000000 @@ ffffffffffffffff0000000000000051 ==> 00000000000000000000000000000000 -+vbpermq: ffffffffffffffff0000000000000051 @@ 0102030405060708090a0b0c0e0d0e0f ==> 000000000000ffff0000000000000000 -+vbpermq: ffffffffffffffff0000000000000051 @@ f1f2f3f4f5f6f7f8f9fafbfcfefdfeff ==> 00000000000000000000000000000000 -+vbpermq: ffffffffffffffff0000000000000051 @@ 00007fffffffffffffff000000000000 ==> 000000000000e03f0000000000000000 -+vbpermq: ffffffffffffffff0000000000000051 @@ 00008000000000000000000000000000 ==> 000000000000dfff0000000000000000 -+vbpermq: ffffffffffffffff0000000000000051 @@ ffffffffffffffff0000000000000051 ==> 00000000000000fe0000000000000000 - - vaddecuq: 0102030405060708090a0b0c0e0d0e0f @@ 0102030405060708090a0b0c0e0d0e0f @@ f000000000000000 ==> 00000000000000000000000000000000 - vaddecuq: 0102030405060708090a0b0c0e0d0e0f @@ 0102030405060708090a0b0c0e0d0e0f @@ f000000000000001 ==> 00000000000000000000000000000000 - vaddecuq: 0102030405060708090a0b0c0e0d0e0f @@ f1f2f3f4f5f6f7f8f9fafbfcfefdfeff @@ f000000000000000 ==> 00000000000000000000000000000000 - vaddecuq: 0102030405060708090a0b0c0e0d0e0f @@ f1f2f3f4f5f6f7f8f9fafbfcfefdfeff @@ f000000000000001 ==> 00000000000000000000000000000000 -+vaddecuq: 0102030405060708090a0b0c0e0d0e0f @@ 00007fffffffffffffff000000000000 @@ f000000000000000 ==> 00000000000000000000000000000000 -+vaddecuq: 0102030405060708090a0b0c0e0d0e0f @@ 00007fffffffffffffff000000000000 @@ f000000000000001 ==> 00000000000000000000000000000000 -+vaddecuq: 0102030405060708090a0b0c0e0d0e0f @@ 00008000000000000000000000000000 @@ f000000000000000 ==> 00000000000000000000000000000000 -+vaddecuq: 0102030405060708090a0b0c0e0d0e0f @@ 00008000000000000000000000000000 @@ f000000000000001 ==> 00000000000000000000000000000000 -+vaddecuq: 0102030405060708090a0b0c0e0d0e0f @@ ffffffffffffffff0000000000000051 @@ f000000000000000 ==> 00000000000000000000000000000001 -+vaddecuq: 0102030405060708090a0b0c0e0d0e0f @@ ffffffffffffffff0000000000000051 @@ f000000000000001 ==> 00000000000000000000000000000001 - vaddecuq: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff @@ 0102030405060708090a0b0c0e0d0e0f @@ f000000000000000 ==> 00000000000000000000000000000000 - vaddecuq: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff @@ 0102030405060708090a0b0c0e0d0e0f @@ f000000000000001 ==> 00000000000000000000000000000000 - vaddecuq: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff @@ f1f2f3f4f5f6f7f8f9fafbfcfefdfeff @@ f000000000000000 ==> 00000000000000000000000000000001 - vaddecuq: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff @@ f1f2f3f4f5f6f7f8f9fafbfcfefdfeff @@ f000000000000001 ==> 00000000000000000000000000000001 -+vaddecuq: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff @@ 00007fffffffffffffff000000000000 @@ f000000000000000 ==> 00000000000000000000000000000000 -+vaddecuq: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff @@ 00007fffffffffffffff000000000000 @@ f000000000000001 ==> 00000000000000000000000000000000 -+vaddecuq: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff @@ 00008000000000000000000000000000 @@ f000000000000000 ==> 00000000000000000000000000000000 -+vaddecuq: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff @@ 00008000000000000000000000000000 @@ f000000000000001 ==> 00000000000000000000000000000000 -+vaddecuq: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff @@ ffffffffffffffff0000000000000051 @@ f000000000000000 ==> 00000000000000000000000000000001 -+vaddecuq: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff @@ ffffffffffffffff0000000000000051 @@ f000000000000001 ==> 00000000000000000000000000000001 -+vaddecuq: 00007fffffffffffffff000000000000 @@ 0102030405060708090a0b0c0e0d0e0f @@ f000000000000000 ==> 00000000000000000000000000000000 -+vaddecuq: 00007fffffffffffffff000000000000 @@ 0102030405060708090a0b0c0e0d0e0f @@ f000000000000001 ==> 00000000000000000000000000000000 -+vaddecuq: 00007fffffffffffffff000000000000 @@ f1f2f3f4f5f6f7f8f9fafbfcfefdfeff @@ f000000000000000 ==> 00000000000000000000000000000000 -+vaddecuq: 00007fffffffffffffff000000000000 @@ f1f2f3f4f5f6f7f8f9fafbfcfefdfeff @@ f000000000000001 ==> 00000000000000000000000000000000 -+vaddecuq: 00007fffffffffffffff000000000000 @@ 00007fffffffffffffff000000000000 @@ f000000000000000 ==> 00000000000000000000000000000000 -+vaddecuq: 00007fffffffffffffff000000000000 @@ 00007fffffffffffffff000000000000 @@ f000000000000001 ==> 00000000000000000000000000000000 -+vaddecuq: 00007fffffffffffffff000000000000 @@ 00008000000000000000000000000000 @@ f000000000000000 ==> 00000000000000000000000000000000 -+vaddecuq: 00007fffffffffffffff000000000000 @@ 00008000000000000000000000000000 @@ f000000000000001 ==> 00000000000000000000000000000000 -+vaddecuq: 00007fffffffffffffff000000000000 @@ ffffffffffffffff0000000000000051 @@ f000000000000000 ==> 00000000000000000000000000000001 -+vaddecuq: 00007fffffffffffffff000000000000 @@ ffffffffffffffff0000000000000051 @@ f000000000000001 ==> 00000000000000000000000000000001 -+vaddecuq: 00008000000000000000000000000000 @@ 0102030405060708090a0b0c0e0d0e0f @@ f000000000000000 ==> 00000000000000000000000000000000 -+vaddecuq: 00008000000000000000000000000000 @@ 0102030405060708090a0b0c0e0d0e0f @@ f000000000000001 ==> 00000000000000000000000000000000 -+vaddecuq: 00008000000000000000000000000000 @@ f1f2f3f4f5f6f7f8f9fafbfcfefdfeff @@ f000000000000000 ==> 00000000000000000000000000000000 -+vaddecuq: 00008000000000000000000000000000 @@ f1f2f3f4f5f6f7f8f9fafbfcfefdfeff @@ f000000000000001 ==> 00000000000000000000000000000000 -+vaddecuq: 00008000000000000000000000000000 @@ 00007fffffffffffffff000000000000 @@ f000000000000000 ==> 00000000000000000000000000000000 -+vaddecuq: 00008000000000000000000000000000 @@ 00007fffffffffffffff000000000000 @@ f000000000000001 ==> 00000000000000000000000000000000 -+vaddecuq: 00008000000000000000000000000000 @@ 00008000000000000000000000000000 @@ f000000000000000 ==> 00000000000000000000000000000000 -+vaddecuq: 00008000000000000000000000000000 @@ 00008000000000000000000000000000 @@ f000000000000001 ==> 00000000000000000000000000000000 -+vaddecuq: 00008000000000000000000000000000 @@ ffffffffffffffff0000000000000051 @@ f000000000000000 ==> 00000000000000000000000000000001 -+vaddecuq: 00008000000000000000000000000000 @@ ffffffffffffffff0000000000000051 @@ f000000000000001 ==> 00000000000000000000000000000001 -+vaddecuq: ffffffffffffffff0000000000000051 @@ 0102030405060708090a0b0c0e0d0e0f @@ f000000000000000 ==> 00000000000000000000000000000001 -+vaddecuq: ffffffffffffffff0000000000000051 @@ 0102030405060708090a0b0c0e0d0e0f @@ f000000000000001 ==> 00000000000000000000000000000001 -+vaddecuq: ffffffffffffffff0000000000000051 @@ f1f2f3f4f5f6f7f8f9fafbfcfefdfeff @@ f000000000000000 ==> 00000000000000000000000000000001 -+vaddecuq: ffffffffffffffff0000000000000051 @@ f1f2f3f4f5f6f7f8f9fafbfcfefdfeff @@ f000000000000001 ==> 00000000000000000000000000000001 -+vaddecuq: ffffffffffffffff0000000000000051 @@ 00007fffffffffffffff000000000000 @@ f000000000000000 ==> 00000000000000000000000000000001 -+vaddecuq: ffffffffffffffff0000000000000051 @@ 00007fffffffffffffff000000000000 @@ f000000000000001 ==> 00000000000000000000000000000001 -+vaddecuq: ffffffffffffffff0000000000000051 @@ 00008000000000000000000000000000 @@ f000000000000000 ==> 00000000000000000000000000000001 -+vaddecuq: ffffffffffffffff0000000000000051 @@ 00008000000000000000000000000000 @@ f000000000000001 ==> 00000000000000000000000000000001 -+vaddecuq: ffffffffffffffff0000000000000051 @@ ffffffffffffffff0000000000000051 @@ f000000000000000 ==> 00000000000000000000000000000001 -+vaddecuq: ffffffffffffffff0000000000000051 @@ ffffffffffffffff0000000000000051 @@ f000000000000001 ==> 00000000000000000000000000000001 - - vaddeuqm: 0102030405060708090a0b0c0e0d0e0f @@ 0102030405060708090a0b0c0e0d0e0f @@ f000000000000000 ==> 020406080a0c0e10121416181c1a1c1e - vaddeuqm: 0102030405060708090a0b0c0e0d0e0f @@ 0102030405060708090a0b0c0e0d0e0f @@ f000000000000001 ==> 020406080a0c0e10121416181c1a1c1f - vaddeuqm: 0102030405060708090a0b0c0e0d0e0f @@ f1f2f3f4f5f6f7f8f9fafbfcfefdfeff @@ f000000000000000 ==> f2f4f6f8fafcff01030507090d0b0d0e - vaddeuqm: 0102030405060708090a0b0c0e0d0e0f @@ f1f2f3f4f5f6f7f8f9fafbfcfefdfeff @@ f000000000000001 ==> f2f4f6f8fafcff01030507090d0b0d0f -+vaddeuqm: 0102030405060708090a0b0c0e0d0e0f @@ 00007fffffffffffffff000000000000 @@ f000000000000000 ==> 010283040506070809090b0c0e0d0e0f -+vaddeuqm: 0102030405060708090a0b0c0e0d0e0f @@ 00007fffffffffffffff000000000000 @@ f000000000000001 ==> 010283040506070809090b0c0e0d0e10 -+vaddeuqm: 0102030405060708090a0b0c0e0d0e0f @@ 00008000000000000000000000000000 @@ f000000000000000 ==> 0102830405060708090a0b0c0e0d0e0f -+vaddeuqm: 0102030405060708090a0b0c0e0d0e0f @@ 00008000000000000000000000000000 @@ f000000000000001 ==> 0102830405060708090a0b0c0e0d0e10 -+vaddeuqm: 0102030405060708090a0b0c0e0d0e0f @@ ffffffffffffffff0000000000000051 @@ f000000000000000 ==> 0102030405060707090a0b0c0e0d0e60 -+vaddeuqm: 0102030405060708090a0b0c0e0d0e0f @@ ffffffffffffffff0000000000000051 @@ f000000000000001 ==> 0102030405060707090a0b0c0e0d0e61 - vaddeuqm: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff @@ 0102030405060708090a0b0c0e0d0e0f @@ f000000000000000 ==> f2f4f6f8fafcff01030507090d0b0d0e - vaddeuqm: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff @@ 0102030405060708090a0b0c0e0d0e0f @@ f000000000000001 ==> f2f4f6f8fafcff01030507090d0b0d0f - vaddeuqm: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff @@ f1f2f3f4f5f6f7f8f9fafbfcfefdfeff @@ f000000000000000 ==> e3e5e7e9ebedeff1f3f5f7f9fdfbfdfe - vaddeuqm: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff @@ f1f2f3f4f5f6f7f8f9fafbfcfefdfeff @@ f000000000000001 ==> e3e5e7e9ebedeff1f3f5f7f9fdfbfdff -+vaddeuqm: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff @@ 00007fffffffffffffff000000000000 @@ f000000000000000 ==> f1f373f4f5f6f7f8f9f9fbfcfefdfeff -+vaddeuqm: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff @@ 00007fffffffffffffff000000000000 @@ f000000000000001 ==> f1f373f4f5f6f7f8f9f9fbfcfefdff00 -+vaddeuqm: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff @@ 00008000000000000000000000000000 @@ f000000000000000 ==> f1f373f4f5f6f7f8f9fafbfcfefdfeff -+vaddeuqm: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff @@ 00008000000000000000000000000000 @@ f000000000000001 ==> f1f373f4f5f6f7f8f9fafbfcfefdff00 -+vaddeuqm: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff @@ ffffffffffffffff0000000000000051 @@ f000000000000000 ==> f1f2f3f4f5f6f7f7f9fafbfcfefdff50 -+vaddeuqm: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff @@ ffffffffffffffff0000000000000051 @@ f000000000000001 ==> f1f2f3f4f5f6f7f7f9fafbfcfefdff51 -+vaddeuqm: 00007fffffffffffffff000000000000 @@ 0102030405060708090a0b0c0e0d0e0f @@ f000000000000000 ==> 010283040506070809090b0c0e0d0e0f -+vaddeuqm: 00007fffffffffffffff000000000000 @@ 0102030405060708090a0b0c0e0d0e0f @@ f000000000000001 ==> 010283040506070809090b0c0e0d0e10 -+vaddeuqm: 00007fffffffffffffff000000000000 @@ f1f2f3f4f5f6f7f8f9fafbfcfefdfeff @@ f000000000000000 ==> f1f373f4f5f6f7f8f9f9fbfcfefdfeff -+vaddeuqm: 00007fffffffffffffff000000000000 @@ f1f2f3f4f5f6f7f8f9fafbfcfefdfeff @@ f000000000000001 ==> f1f373f4f5f6f7f8f9f9fbfcfefdff00 -+vaddeuqm: 00007fffffffffffffff000000000000 @@ 00007fffffffffffffff000000000000 @@ f000000000000000 ==> 0000fffffffffffffffe000000000000 -+vaddeuqm: 00007fffffffffffffff000000000000 @@ 00007fffffffffffffff000000000000 @@ f000000000000001 ==> 0000fffffffffffffffe000000000001 -+vaddeuqm: 00007fffffffffffffff000000000000 @@ 00008000000000000000000000000000 @@ f000000000000000 ==> 0000ffffffffffffffff000000000000 -+vaddeuqm: 00007fffffffffffffff000000000000 @@ 00008000000000000000000000000000 @@ f000000000000001 ==> 0000ffffffffffffffff000000000001 -+vaddeuqm: 00007fffffffffffffff000000000000 @@ ffffffffffffffff0000000000000051 @@ f000000000000000 ==> 00007ffffffffffeffff000000000051 -+vaddeuqm: 00007fffffffffffffff000000000000 @@ ffffffffffffffff0000000000000051 @@ f000000000000001 ==> 00007ffffffffffeffff000000000052 -+vaddeuqm: 00008000000000000000000000000000 @@ 0102030405060708090a0b0c0e0d0e0f @@ f000000000000000 ==> 0102830405060708090a0b0c0e0d0e0f -+vaddeuqm: 00008000000000000000000000000000 @@ 0102030405060708090a0b0c0e0d0e0f @@ f000000000000001 ==> 0102830405060708090a0b0c0e0d0e10 -+vaddeuqm: 00008000000000000000000000000000 @@ f1f2f3f4f5f6f7f8f9fafbfcfefdfeff @@ f000000000000000 ==> f1f373f4f5f6f7f8f9fafbfcfefdfeff -+vaddeuqm: 00008000000000000000000000000000 @@ f1f2f3f4f5f6f7f8f9fafbfcfefdfeff @@ f000000000000001 ==> f1f373f4f5f6f7f8f9fafbfcfefdff00 -+vaddeuqm: 00008000000000000000000000000000 @@ 00007fffffffffffffff000000000000 @@ f000000000000000 ==> 0000ffffffffffffffff000000000000 -+vaddeuqm: 00008000000000000000000000000000 @@ 00007fffffffffffffff000000000000 @@ f000000000000001 ==> 0000ffffffffffffffff000000000001 -+vaddeuqm: 00008000000000000000000000000000 @@ 00008000000000000000000000000000 @@ f000000000000000 ==> 00010000000000000000000000000000 -+vaddeuqm: 00008000000000000000000000000000 @@ 00008000000000000000000000000000 @@ f000000000000001 ==> 00010000000000000000000000000001 -+vaddeuqm: 00008000000000000000000000000000 @@ ffffffffffffffff0000000000000051 @@ f000000000000000 ==> 00007fffffffffff0000000000000051 -+vaddeuqm: 00008000000000000000000000000000 @@ ffffffffffffffff0000000000000051 @@ f000000000000001 ==> 00007fffffffffff0000000000000052 -+vaddeuqm: ffffffffffffffff0000000000000051 @@ 0102030405060708090a0b0c0e0d0e0f @@ f000000000000000 ==> 0102030405060707090a0b0c0e0d0e60 -+vaddeuqm: ffffffffffffffff0000000000000051 @@ 0102030405060708090a0b0c0e0d0e0f @@ f000000000000001 ==> 0102030405060707090a0b0c0e0d0e61 -+vaddeuqm: ffffffffffffffff0000000000000051 @@ f1f2f3f4f5f6f7f8f9fafbfcfefdfeff @@ f000000000000000 ==> f1f2f3f4f5f6f7f7f9fafbfcfefdff50 -+vaddeuqm: ffffffffffffffff0000000000000051 @@ f1f2f3f4f5f6f7f8f9fafbfcfefdfeff @@ f000000000000001 ==> f1f2f3f4f5f6f7f7f9fafbfcfefdff51 -+vaddeuqm: ffffffffffffffff0000000000000051 @@ 00007fffffffffffffff000000000000 @@ f000000000000000 ==> 00007ffffffffffeffff000000000051 -+vaddeuqm: ffffffffffffffff0000000000000051 @@ 00007fffffffffffffff000000000000 @@ f000000000000001 ==> 00007ffffffffffeffff000000000052 -+vaddeuqm: ffffffffffffffff0000000000000051 @@ 00008000000000000000000000000000 @@ f000000000000000 ==> 00007fffffffffff0000000000000051 -+vaddeuqm: ffffffffffffffff0000000000000051 @@ 00008000000000000000000000000000 @@ f000000000000001 ==> 00007fffffffffff0000000000000052 -+vaddeuqm: ffffffffffffffff0000000000000051 @@ ffffffffffffffff0000000000000051 @@ f000000000000000 ==> fffffffffffffffe00000000000000a2 -+vaddeuqm: ffffffffffffffff0000000000000051 @@ ffffffffffffffff0000000000000051 @@ f000000000000001 ==> fffffffffffffffe00000000000000a3 - - vsubecuq: 0102030405060708090a0b0c0e0d0e0f @@ 0102030405060708090a0b0c0e0d0e0f @@ f000000000000000 ==> 00000000000000000000000000000000 - vsubecuq: 0102030405060708090a0b0c0e0d0e0f @@ 0102030405060708090a0b0c0e0d0e0f @@ f000000000000001 ==> 00000000000000000000000000000001 - vsubecuq: 0102030405060708090a0b0c0e0d0e0f @@ f1f2f3f4f5f6f7f8f9fafbfcfefdfeff @@ f000000000000000 ==> 00000000000000000000000000000000 - vsubecuq: 0102030405060708090a0b0c0e0d0e0f @@ f1f2f3f4f5f6f7f8f9fafbfcfefdfeff @@ f000000000000001 ==> 00000000000000000000000000000000 -+vsubecuq: 0102030405060708090a0b0c0e0d0e0f @@ 00007fffffffffffffff000000000000 @@ f000000000000000 ==> 00000000000000000000000000000001 -+vsubecuq: 0102030405060708090a0b0c0e0d0e0f @@ 00007fffffffffffffff000000000000 @@ f000000000000001 ==> 00000000000000000000000000000001 -+vsubecuq: 0102030405060708090a0b0c0e0d0e0f @@ 00008000000000000000000000000000 @@ f000000000000000 ==> 00000000000000000000000000000001 -+vsubecuq: 0102030405060708090a0b0c0e0d0e0f @@ 00008000000000000000000000000000 @@ f000000000000001 ==> 00000000000000000000000000000001 -+vsubecuq: 0102030405060708090a0b0c0e0d0e0f @@ ffffffffffffffff0000000000000051 @@ f000000000000000 ==> 00000000000000000000000000000000 -+vsubecuq: 0102030405060708090a0b0c0e0d0e0f @@ ffffffffffffffff0000000000000051 @@ f000000000000001 ==> 00000000000000000000000000000000 - vsubecuq: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff @@ 0102030405060708090a0b0c0e0d0e0f @@ f000000000000000 ==> 00000000000000000000000000000001 - vsubecuq: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff @@ 0102030405060708090a0b0c0e0d0e0f @@ f000000000000001 ==> 00000000000000000000000000000001 - vsubecuq: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff @@ f1f2f3f4f5f6f7f8f9fafbfcfefdfeff @@ f000000000000000 ==> 00000000000000000000000000000000 - vsubecuq: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff @@ f1f2f3f4f5f6f7f8f9fafbfcfefdfeff @@ f000000000000001 ==> 00000000000000000000000000000001 -+vsubecuq: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff @@ 00007fffffffffffffff000000000000 @@ f000000000000000 ==> 00000000000000000000000000000001 -+vsubecuq: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff @@ 00007fffffffffffffff000000000000 @@ f000000000000001 ==> 00000000000000000000000000000001 -+vsubecuq: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff @@ 00008000000000000000000000000000 @@ f000000000000000 ==> 00000000000000000000000000000001 -+vsubecuq: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff @@ 00008000000000000000000000000000 @@ f000000000000001 ==> 00000000000000000000000000000001 -+vsubecuq: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff @@ ffffffffffffffff0000000000000051 @@ f000000000000000 ==> 00000000000000000000000000000000 -+vsubecuq: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff @@ ffffffffffffffff0000000000000051 @@ f000000000000001 ==> 00000000000000000000000000000000 -+vsubecuq: 00007fffffffffffffff000000000000 @@ 0102030405060708090a0b0c0e0d0e0f @@ f000000000000000 ==> 00000000000000000000000000000000 -+vsubecuq: 00007fffffffffffffff000000000000 @@ 0102030405060708090a0b0c0e0d0e0f @@ f000000000000001 ==> 00000000000000000000000000000000 -+vsubecuq: 00007fffffffffffffff000000000000 @@ f1f2f3f4f5f6f7f8f9fafbfcfefdfeff @@ f000000000000000 ==> 00000000000000000000000000000000 -+vsubecuq: 00007fffffffffffffff000000000000 @@ f1f2f3f4f5f6f7f8f9fafbfcfefdfeff @@ f000000000000001 ==> 00000000000000000000000000000000 -+vsubecuq: 00007fffffffffffffff000000000000 @@ 00007fffffffffffffff000000000000 @@ f000000000000000 ==> 00000000000000000000000000000000 -+vsubecuq: 00007fffffffffffffff000000000000 @@ 00007fffffffffffffff000000000000 @@ f000000000000001 ==> 00000000000000000000000000000001 -+vsubecuq: 00007fffffffffffffff000000000000 @@ 00008000000000000000000000000000 @@ f000000000000000 ==> 00000000000000000000000000000000 -+vsubecuq: 00007fffffffffffffff000000000000 @@ 00008000000000000000000000000000 @@ f000000000000001 ==> 00000000000000000000000000000000 -+vsubecuq: 00007fffffffffffffff000000000000 @@ ffffffffffffffff0000000000000051 @@ f000000000000000 ==> 00000000000000000000000000000000 -+vsubecuq: 00007fffffffffffffff000000000000 @@ ffffffffffffffff0000000000000051 @@ f000000000000001 ==> 00000000000000000000000000000000 -+vsubecuq: 00008000000000000000000000000000 @@ 0102030405060708090a0b0c0e0d0e0f @@ f000000000000000 ==> 00000000000000000000000000000000 -+vsubecuq: 00008000000000000000000000000000 @@ 0102030405060708090a0b0c0e0d0e0f @@ f000000000000001 ==> 00000000000000000000000000000000 -+vsubecuq: 00008000000000000000000000000000 @@ f1f2f3f4f5f6f7f8f9fafbfcfefdfeff @@ f000000000000000 ==> 00000000000000000000000000000000 -+vsubecuq: 00008000000000000000000000000000 @@ f1f2f3f4f5f6f7f8f9fafbfcfefdfeff @@ f000000000000001 ==> 00000000000000000000000000000000 -+vsubecuq: 00008000000000000000000000000000 @@ 00007fffffffffffffff000000000000 @@ f000000000000000 ==> 00000000000000000000000000000001 -+vsubecuq: 00008000000000000000000000000000 @@ 00007fffffffffffffff000000000000 @@ f000000000000001 ==> 00000000000000000000000000000001 -+vsubecuq: 00008000000000000000000000000000 @@ 00008000000000000000000000000000 @@ f000000000000000 ==> 00000000000000000000000000000000 -+vsubecuq: 00008000000000000000000000000000 @@ 00008000000000000000000000000000 @@ f000000000000001 ==> 00000000000000000000000000000001 -+vsubecuq: 00008000000000000000000000000000 @@ ffffffffffffffff0000000000000051 @@ f000000000000000 ==> 00000000000000000000000000000000 -+vsubecuq: 00008000000000000000000000000000 @@ ffffffffffffffff0000000000000051 @@ f000000000000001 ==> 00000000000000000000000000000000 -+vsubecuq: ffffffffffffffff0000000000000051 @@ 0102030405060708090a0b0c0e0d0e0f @@ f000000000000000 ==> 00000000000000000000000000000001 -+vsubecuq: ffffffffffffffff0000000000000051 @@ 0102030405060708090a0b0c0e0d0e0f @@ f000000000000001 ==> 00000000000000000000000000000001 -+vsubecuq: ffffffffffffffff0000000000000051 @@ f1f2f3f4f5f6f7f8f9fafbfcfefdfeff @@ f000000000000000 ==> 00000000000000000000000000000001 -+vsubecuq: ffffffffffffffff0000000000000051 @@ f1f2f3f4f5f6f7f8f9fafbfcfefdfeff @@ f000000000000001 ==> 00000000000000000000000000000001 -+vsubecuq: ffffffffffffffff0000000000000051 @@ 00007fffffffffffffff000000000000 @@ f000000000000000 ==> 00000000000000000000000000000001 -+vsubecuq: ffffffffffffffff0000000000000051 @@ 00007fffffffffffffff000000000000 @@ f000000000000001 ==> 00000000000000000000000000000001 -+vsubecuq: ffffffffffffffff0000000000000051 @@ 00008000000000000000000000000000 @@ f000000000000000 ==> 00000000000000000000000000000001 -+vsubecuq: ffffffffffffffff0000000000000051 @@ 00008000000000000000000000000000 @@ f000000000000001 ==> 00000000000000000000000000000001 -+vsubecuq: ffffffffffffffff0000000000000051 @@ ffffffffffffffff0000000000000051 @@ f000000000000000 ==> 00000000000000000000000000000000 -+vsubecuq: ffffffffffffffff0000000000000051 @@ ffffffffffffffff0000000000000051 @@ f000000000000001 ==> 00000000000000000000000000000001 - - vsubeuqm: 0102030405060708090a0b0c0e0d0e0f @@ 0102030405060708090a0b0c0e0d0e0f @@ f000000000000000 ==> ffffffffffffffffffffffffffffffff - vsubeuqm: 0102030405060708090a0b0c0e0d0e0f @@ 0102030405060708090a0b0c0e0d0e0f @@ f000000000000001 ==> 00000000000000000000000000000000 - vsubeuqm: 0102030405060708090a0b0c0e0d0e0f @@ f1f2f3f4f5f6f7f8f9fafbfcfefdfeff @@ f000000000000000 ==> 0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f - vsubeuqm: 0102030405060708090a0b0c0e0d0e0f @@ f1f2f3f4f5f6f7f8f9fafbfcfefdfeff @@ f000000000000001 ==> 0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f10 -+vsubeuqm: 0102030405060708090a0b0c0e0d0e0f @@ 00007fffffffffffffff000000000000 @@ f000000000000000 ==> 0101830405060708090b0b0c0e0d0e0e -+vsubeuqm: 0102030405060708090a0b0c0e0d0e0f @@ 00007fffffffffffffff000000000000 @@ f000000000000001 ==> 0101830405060708090b0b0c0e0d0e0f -+vsubeuqm: 0102030405060708090a0b0c0e0d0e0f @@ 00008000000000000000000000000000 @@ f000000000000000 ==> 0101830405060708090a0b0c0e0d0e0e -+vsubeuqm: 0102030405060708090a0b0c0e0d0e0f @@ 00008000000000000000000000000000 @@ f000000000000001 ==> 0101830405060708090a0b0c0e0d0e0f -+vsubeuqm: 0102030405060708090a0b0c0e0d0e0f @@ ffffffffffffffff0000000000000051 @@ f000000000000000 ==> 0102030405060709090a0b0c0e0d0dbd -+vsubeuqm: 0102030405060708090a0b0c0e0d0e0f @@ ffffffffffffffff0000000000000051 @@ f000000000000001 ==> 0102030405060709090a0b0c0e0d0dbe - vsubeuqm: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff @@ 0102030405060708090a0b0c0e0d0e0f @@ f000000000000000 ==> f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0ef - vsubeuqm: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff @@ 0102030405060708090a0b0c0e0d0e0f @@ f000000000000001 ==> f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0 - vsubeuqm: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff @@ f1f2f3f4f5f6f7f8f9fafbfcfefdfeff @@ f000000000000000 ==> ffffffffffffffffffffffffffffffff - vsubeuqm: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff @@ f1f2f3f4f5f6f7f8f9fafbfcfefdfeff @@ f000000000000001 ==> 00000000000000000000000000000000 -+vsubeuqm: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff @@ 00007fffffffffffffff000000000000 @@ f000000000000000 ==> f1f273f4f5f6f7f8f9fbfbfcfefdfefe -+vsubeuqm: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff @@ 00007fffffffffffffff000000000000 @@ f000000000000001 ==> f1f273f4f5f6f7f8f9fbfbfcfefdfeff -+vsubeuqm: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff @@ 00008000000000000000000000000000 @@ f000000000000000 ==> f1f273f4f5f6f7f8f9fafbfcfefdfefe -+vsubeuqm: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff @@ 00008000000000000000000000000000 @@ f000000000000001 ==> f1f273f4f5f6f7f8f9fafbfcfefdfeff -+vsubeuqm: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff @@ ffffffffffffffff0000000000000051 @@ f000000000000000 ==> f1f2f3f4f5f6f7f9f9fafbfcfefdfead -+vsubeuqm: f1f2f3f4f5f6f7f8f9fafbfcfefdfeff @@ ffffffffffffffff0000000000000051 @@ f000000000000001 ==> f1f2f3f4f5f6f7f9f9fafbfcfefdfeae -+vsubeuqm: 00007fffffffffffffff000000000000 @@ 0102030405060708090a0b0c0e0d0e0f @@ f000000000000000 ==> fefe7cfbfaf9f8f7f6f4f4f3f1f2f1f0 -+vsubeuqm: 00007fffffffffffffff000000000000 @@ 0102030405060708090a0b0c0e0d0e0f @@ f000000000000001 ==> fefe7cfbfaf9f8f7f6f4f4f3f1f2f1f1 -+vsubeuqm: 00007fffffffffffffff000000000000 @@ f1f2f3f4f5f6f7f8f9fafbfcfefdfeff @@ f000000000000000 ==> 0e0d8c0b0a0908070604040301020100 -+vsubeuqm: 00007fffffffffffffff000000000000 @@ f1f2f3f4f5f6f7f8f9fafbfcfefdfeff @@ f000000000000001 ==> 0e0d8c0b0a0908070604040301020101 -+vsubeuqm: 00007fffffffffffffff000000000000 @@ 00007fffffffffffffff000000000000 @@ f000000000000000 ==> ffffffffffffffffffffffffffffffff -+vsubeuqm: 00007fffffffffffffff000000000000 @@ 00007fffffffffffffff000000000000 @@ f000000000000001 ==> 00000000000000000000000000000000 -+vsubeuqm: 00007fffffffffffffff000000000000 @@ 00008000000000000000000000000000 @@ f000000000000000 ==> fffffffffffffffffffeffffffffffff -+vsubeuqm: 00007fffffffffffffff000000000000 @@ 00008000000000000000000000000000 @@ f000000000000001 ==> ffffffffffffffffffff000000000000 -+vsubeuqm: 00007fffffffffffffff000000000000 @@ ffffffffffffffff0000000000000051 @@ f000000000000000 ==> 0000800000000000fffeffffffffffae -+vsubeuqm: 00007fffffffffffffff000000000000 @@ ffffffffffffffff0000000000000051 @@ f000000000000001 ==> 0000800000000000fffeffffffffffaf -+vsubeuqm: 00008000000000000000000000000000 @@ 0102030405060708090a0b0c0e0d0e0f @@ f000000000000000 ==> fefe7cfbfaf9f8f7f6f5f4f3f1f2f1f0 -+vsubeuqm: 00008000000000000000000000000000 @@ 0102030405060708090a0b0c0e0d0e0f @@ f000000000000001 ==> fefe7cfbfaf9f8f7f6f5f4f3f1f2f1f1 -+vsubeuqm: 00008000000000000000000000000000 @@ f1f2f3f4f5f6f7f8f9fafbfcfefdfeff @@ f000000000000000 ==> 0e0d8c0b0a0908070605040301020100 -+vsubeuqm: 00008000000000000000000000000000 @@ f1f2f3f4f5f6f7f8f9fafbfcfefdfeff @@ f000000000000001 ==> 0e0d8c0b0a0908070605040301020101 -+vsubeuqm: 00008000000000000000000000000000 @@ 00007fffffffffffffff000000000000 @@ f000000000000000 ==> 00000000000000000000ffffffffffff -+vsubeuqm: 00008000000000000000000000000000 @@ 00007fffffffffffffff000000000000 @@ f000000000000001 ==> 00000000000000000001000000000000 -+vsubeuqm: 00008000000000000000000000000000 @@ 00008000000000000000000000000000 @@ f000000000000000 ==> ffffffffffffffffffffffffffffffff -+vsubeuqm: 00008000000000000000000000000000 @@ 00008000000000000000000000000000 @@ f000000000000001 ==> 00000000000000000000000000000000 -+vsubeuqm: 00008000000000000000000000000000 @@ ffffffffffffffff0000000000000051 @@ f000000000000000 ==> 0000800000000000ffffffffffffffae -+vsubeuqm: 00008000000000000000000000000000 @@ ffffffffffffffff0000000000000051 @@ f000000000000001 ==> 0000800000000000ffffffffffffffaf -+vsubeuqm: ffffffffffffffff0000000000000051 @@ 0102030405060708090a0b0c0e0d0e0f @@ f000000000000000 ==> fefdfcfbfaf9f8f6f6f5f4f3f1f2f241 -+vsubeuqm: ffffffffffffffff0000000000000051 @@ 0102030405060708090a0b0c0e0d0e0f @@ f000000000000001 ==> fefdfcfbfaf9f8f6f6f5f4f3f1f2f242 -+vsubeuqm: ffffffffffffffff0000000000000051 @@ f1f2f3f4f5f6f7f8f9fafbfcfefdfeff @@ f000000000000000 ==> 0e0d0c0b0a0908060605040301020151 -+vsubeuqm: ffffffffffffffff0000000000000051 @@ f1f2f3f4f5f6f7f8f9fafbfcfefdfeff @@ f000000000000001 ==> 0e0d0c0b0a0908060605040301020152 -+vsubeuqm: ffffffffffffffff0000000000000051 @@ 00007fffffffffffffff000000000000 @@ f000000000000000 ==> ffff7fffffffffff0001000000000050 -+vsubeuqm: ffffffffffffffff0000000000000051 @@ 00007fffffffffffffff000000000000 @@ f000000000000001 ==> ffff7fffffffffff0001000000000051 -+vsubeuqm: ffffffffffffffff0000000000000051 @@ 00008000000000000000000000000000 @@ f000000000000000 ==> ffff7fffffffffff0000000000000050 -+vsubeuqm: ffffffffffffffff0000000000000051 @@ 00008000000000000000000000000000 @@ f000000000000001 ==> ffff7fffffffffff0000000000000051 -+vsubeuqm: ffffffffffffffff0000000000000051 @@ ffffffffffffffff0000000000000051 @@ f000000000000000 ==> ffffffffffffffffffffffffffffffff -+vsubeuqm: ffffffffffffffff0000000000000051 @@ ffffffffffffffff0000000000000051 @@ f000000000000001 ==> 00000000000000000000000000000000 - - All done. Tested 66 different instructions -diff --git a/none/tests/ppc64/test_isa_2_07_part1.c b/none/tests/ppc64/test_isa_2_07_part1.c -index be0a5ed..74424e8 100644 ---- a/none/tests/ppc64/test_isa_2_07_part1.c -+++ b/none/tests/ppc64/test_isa_2_07_part1.c -@@ -874,7 +874,7 @@ static int verbose = 0; - static int arg_list_size = 0; - static unsigned long long * vdargs = NULL; - static unsigned long long * vdargs_x = NULL; --#define NB_VDARGS 4 -+#define NB_VDARGS 9 - - static void build_vdargs_table (void) - { -@@ -884,6 +884,11 @@ static void build_vdargs_table (void) - vdargs[1] = 0x090A0B0C0E0D0E0FULL; - vdargs[2] = 0xF1F2F3F4F5F6F7F8ULL; - vdargs[3] = 0xF9FAFBFCFEFDFEFFULL; -+ vdargs[4] = 0x00007FFFFFFFFFFFULL; -+ vdargs[5] = 0xFFFF000000000000ULL; -+ vdargs[6] = 0x0000800000000000ULL; -+ vdargs[7] = 0x0000000000000000ULL; -+ vdargs[8] = 0xFFFFFFFFFFFFFFFFULL; - - vdargs_x = memalign16(NB_VDARGS * sizeof(unsigned long long)); - vdargs_x[0] = 0x000000007c118a2bULL; diff --git a/SOURCES/valgrind-3.11.0-ppc64-separate-socketcalls.patch b/SOURCES/valgrind-3.11.0-ppc64-separate-socketcalls.patch deleted file mode 100644 index d416511..0000000 --- a/SOURCES/valgrind-3.11.0-ppc64-separate-socketcalls.patch +++ /dev/null @@ -1,28 +0,0 @@ -diff --git a/coregrind/m_syswrap/syswrap-ppc64-linux.c b/coregrind/m_syswrap/syswrap-ppc64-linux.c -index 77668c7..6d5713b 100644 ---- a/coregrind/m_syswrap/syswrap-ppc64-linux.c -+++ b/coregrind/m_syswrap/syswrap-ppc64-linux.c -@@ -1151,6 +1151,23 @@ static SyscallTableEntry syscall_table[] = { - LINX_(__NR_pwritev, sys_pwritev), // 321 - LINXY(__NR_rt_tgsigqueueinfo, sys_rt_tgsigqueueinfo),// 322 - -+ LINXY(__NR_socket, sys_socket), // 326 -+ LINX_(__NR_bind, sys_bind), // 327 -+ LINX_(__NR_connect, sys_connect), // 328 -+ LINX_(__NR_listen, sys_listen), // 329 -+ LINXY(__NR_accept, sys_accept), // 330 -+ LINXY(__NR_getsockname, sys_getsockname), // 331 -+ LINXY(__NR_getpeername, sys_getpeername), // 332 -+ LINXY(__NR_socketpair, sys_socketpair), // 333 -+ LINX_(__NR_send, sys_send), // 334 -+ LINX_(__NR_sendto, sys_sendto), // 335 -+ LINXY(__NR_recv, sys_recv), // 336 -+ LINXY(__NR_recvfrom, sys_recvfrom), // 337 -+ LINX_(__NR_shutdown, sys_shutdown), // 338 -+ LINX_(__NR_setsockopt, sys_setsockopt), // 339 -+ LINXY(__NR_getsockopt, sys_getsockopt), // 340 -+ LINX_(__NR_sendmsg, sys_sendmsg), // 341 -+ LINXY(__NR_recvmsg, sys_recvmsg), // 342 - LINXY(__NR_recvmmsg, sys_recvmmsg), // 343 - LINXY(__NR_accept4, sys_accept4), // 344 - diff --git a/SOURCES/valgrind-3.11.0-ppc64-syscalls.patch b/SOURCES/valgrind-3.11.0-ppc64-syscalls.patch deleted file mode 100644 index 360c766..0000000 --- a/SOURCES/valgrind-3.11.0-ppc64-syscalls.patch +++ /dev/null @@ -1,40 +0,0 @@ -commit 9a51385e9d032e9f66076ce2c0f1343e4caeec21 -Author: mjw -Date: Mon May 30 20:16:04 2016 +0000 - - Bug 363714 ppc64 missing syscalls sync, waitid and name_to/open_by_handle_at - - git-svn-id: svn://svn.valgrind.org/valgrind/trunk@15888 a5019735-40e9-0310-863c-91ae7b9d1cf9 - -diff --git a/coregrind/m_syswrap/syswrap-ppc64-linux.c b/coregrind/m_syswrap/syswrap-ppc64-linux.c -index 6d5713b..2a027f0 100644 ---- a/coregrind/m_syswrap/syswrap-ppc64-linux.c -+++ b/coregrind/m_syswrap/syswrap-ppc64-linux.c -@@ -821,7 +821,7 @@ static SyscallTableEntry syscall_table[] = { - // _____(__NR_nice, sys_nice), // 34 - - // _____(__NR_ftime, sys_ftime), // 35 --// _____(__NR_sync, sys_sync), // 36 -+ GENX_(__NR_sync, sys_sync), // 36 - GENX_(__NR_kill, sys_kill), // 37 - GENX_(__NR_rename, sys_rename), // 38 - GENX_(__NR_mkdir, sys_mkdir), // 39 -@@ -1102,7 +1102,7 @@ static SyscallTableEntry syscall_table[] = { - - LINX_(__NR_request_key, sys_request_key), // 270 - LINXY(__NR_keyctl, sys_keyctl), // 271 --// _____(__NR_waitid, sys_waitid), // 272 -+ LINXY(__NR_waitid, sys_waitid), // 272 - LINX_(__NR_ioprio_set, sys_ioprio_set), // 273 - LINX_(__NR_ioprio_get, sys_ioprio_get), // 274 - -@@ -1170,7 +1170,8 @@ static SyscallTableEntry syscall_table[] = { - LINXY(__NR_recvmsg, sys_recvmsg), // 342 - LINXY(__NR_recvmmsg, sys_recvmmsg), // 343 - LINXY(__NR_accept4, sys_accept4), // 344 -- -+ LINXY(__NR_name_to_handle_at, sys_name_to_handle_at),// 345 -+ LINXY(__NR_open_by_handle_at, sys_open_by_handle_at),// 346 - LINXY(__NR_clock_adjtime, sys_clock_adjtime), // 347 - LINX_(__NR_syncfs, sys_syncfs), // 348 - LINXY(__NR_sendmmsg, sys_sendmmsg), // 349 diff --git a/SOURCES/valgrind-3.11.0-ppc64-vgdb-vr-regs.patch b/SOURCES/valgrind-3.11.0-ppc64-vgdb-vr-regs.patch deleted file mode 100644 index 036d5b6..0000000 --- a/SOURCES/valgrind-3.11.0-ppc64-vgdb-vr-regs.patch +++ /dev/null @@ -1,824 +0,0 @@ -commit 42d961c3744b2afb236c4fd3d2b59eb61421b9a8 -Author: carll -Date: Thu Apr 21 18:21:26 2016 +0000 - - PPC64, Valgrind with GDB does not display 64-bit and 128-bit registers - correctly - - 1) Fix Endianess issue that was missed in the BE to LE port. GDB was - not displaying the contents of the 64-bit and 128-bit registers - correctly due to an Endianess issue. - - 2) Fix displaying the shadow registers for the 64-bit and 128-bit - registers. - - Bugzilla 360008 was opened for this issue. - - git-svn-id: svn://svn.valgrind.org/valgrind/trunk@15864 a5019735-40e9-0310-863c-91ae7b9d1cf9 - -diff --git a/coregrind/Makefile.am b/coregrind/Makefile.am -index d29f954..00d9fc7 100644 ---- a/coregrind/Makefile.am -+++ b/coregrind/Makefile.am -@@ -605,12 +605,17 @@ GDBSERVER_XML_FILES = \ - m_gdbserver/power64-core-valgrind-s1.xml \ - m_gdbserver/power64-core-valgrind-s2.xml \ - m_gdbserver/power64-core.xml \ -+ m_gdbserver/power64-core2-valgrind-s1.xml \ -+ m_gdbserver/power64-core2-valgrind-s2.xml \ - m_gdbserver/power64-linux-valgrind-s1.xml \ - m_gdbserver/power64-linux-valgrind-s2.xml \ - m_gdbserver/power64-linux.xml \ - m_gdbserver/power-altivec-valgrind-s1.xml \ - m_gdbserver/power-altivec-valgrind-s2.xml \ - m_gdbserver/power-altivec.xml \ -+ m_gdbserver/power-vsx-valgrind-s1.xml \ -+ m_gdbserver/power-vsx-valgrind-s2.xml \ -+ m_gdbserver/power-vsx.xml \ - m_gdbserver/power-core-valgrind-s1.xml \ - m_gdbserver/power-core-valgrind-s2.xml \ - m_gdbserver/power-core.xml \ -diff --git a/coregrind/m_gdbserver/power-altivec.xml b/coregrind/m_gdbserver/power-altivec.xml -index 45d31af..d416075 100644 ---- a/coregrind/m_gdbserver/power-altivec.xml -+++ b/coregrind/m_gdbserver/power-altivec.xml -@@ -19,7 +19,7 @@ - - - -- -+ - - - -diff --git a/coregrind/m_gdbserver/power-fpu-valgrind-s1.xml b/coregrind/m_gdbserver/power-fpu-valgrind-s1.xml -index 00d9108..a23d550 100644 ---- a/coregrind/m_gdbserver/power-fpu-valgrind-s1.xml -+++ b/coregrind/m_gdbserver/power-fpu-valgrind-s1.xml -@@ -7,7 +7,7 @@ - - - -- -+ - - - -@@ -40,5 +40,5 @@ - - - -- -+ - -diff --git a/coregrind/m_gdbserver/power-fpu-valgrind-s2.xml b/coregrind/m_gdbserver/power-fpu-valgrind-s2.xml -index a12fa6e..45e434c 100644 ---- a/coregrind/m_gdbserver/power-fpu-valgrind-s2.xml -+++ b/coregrind/m_gdbserver/power-fpu-valgrind-s2.xml -@@ -7,7 +7,7 @@ - - - -- -+ - - - -@@ -40,5 +40,5 @@ - - - -- -+ - -diff --git a/coregrind/m_gdbserver/power64-core-valgrind-s1.xml b/coregrind/m_gdbserver/power64-core-valgrind-s1.xml -index f6296bf..857e9da 100644 ---- a/coregrind/m_gdbserver/power64-core-valgrind-s1.xml -+++ b/coregrind/m_gdbserver/power64-core-valgrind-s1.xml -@@ -40,10 +40,29 @@ - - - -- -+ -+ -+ - -diff --git a/coregrind/m_gdbserver/power64-core-valgrind-s2.xml b/coregrind/m_gdbserver/power64-core-valgrind-s2.xml -index 663232e..3825c67 100644 ---- a/coregrind/m_gdbserver/power64-core-valgrind-s2.xml -+++ b/coregrind/m_gdbserver/power64-core-valgrind-s2.xml -@@ -40,10 +40,29 @@ - - - -- -+ -+ -+ - -diff --git a/coregrind/m_gdbserver/power64-core.xml b/coregrind/m_gdbserver/power64-core.xml -index e0a6ee3..c5cfb3b 100644 ---- a/coregrind/m_gdbserver/power64-core.xml -+++ b/coregrind/m_gdbserver/power64-core.xml -@@ -40,6 +40,13 @@ - - - -+ - - - -diff --git a/coregrind/m_gdbserver/power64-linux-valgrind-s1.xml b/coregrind/m_gdbserver/power64-linux-valgrind-s1.xml -index 7f1d0ac..736c1e7 100644 ---- a/coregrind/m_gdbserver/power64-linux-valgrind-s1.xml -+++ b/coregrind/m_gdbserver/power64-linux-valgrind-s1.xml -@@ -7,6 +7,6 @@ - - - -- -+ - - -diff --git a/coregrind/m_gdbserver/power64-linux-valgrind-s2.xml b/coregrind/m_gdbserver/power64-linux-valgrind-s2.xml -index 007bd04..626a59c 100644 ---- a/coregrind/m_gdbserver/power64-linux-valgrind-s2.xml -+++ b/coregrind/m_gdbserver/power64-linux-valgrind-s2.xml -@@ -7,6 +7,6 @@ - - - -- -+ - - -diff --git a/coregrind/m_gdbserver/powerpc-altivec64l-valgrind.xml b/coregrind/m_gdbserver/powerpc-altivec64l-valgrind.xml -index a2cd615..7760e3d 100644 ---- a/coregrind/m_gdbserver/powerpc-altivec64l-valgrind.xml -+++ b/coregrind/m_gdbserver/powerpc-altivec64l-valgrind.xml -@@ -16,12 +16,17 @@ - - - -+ - - -+ - - -+ - - -+ - - -+ - -diff --git a/coregrind/m_gdbserver/powerpc-altivec64l.xml b/coregrind/m_gdbserver/powerpc-altivec64l.xml -index d06dad9..3fc4fda 100644 ---- a/coregrind/m_gdbserver/powerpc-altivec64l.xml -+++ b/coregrind/m_gdbserver/powerpc-altivec64l.xml -@@ -16,4 +16,5 @@ - - - -+ - -diff --git a/coregrind/m_gdbserver/valgrind-low-ppc64.c b/coregrind/m_gdbserver/valgrind-low-ppc64.c -index 3bf90b1..3c6146c 100644 ---- a/coregrind/m_gdbserver/valgrind-low-ppc64.c -+++ b/coregrind/m_gdbserver/valgrind-low-ppc64.c -@@ -35,6 +35,51 @@ - - #include "libvex_guest_ppc64.h" - -+/* The PPC64 register layout with vs register support (Power 7 and beyond) -+ consists of 64 VSR registers of size 128-bits. The 32 floating point -+ registers fp map to the upper 64-bits of vsr[0] to vsr[31]. The 32 -+ vr[0] to vr[31] registers of size 128-bits map to vsr[31] to vsr[63]. The -+ lower 64-bits of the vsr[0] to vsr[31] registers are in the pseudo -+ registers vs[0]h to vs[31]h registers. These pseudo registers get printed -+ by GDB but there are no instructions that directly access these registers. -+ When GDB prints the vsr[0] to vsr[31] registers it combines the contents -+ of the floating point registers fp[0] to fp[31] and its corresponding -+ vs[0]h to vs[31]h registers to display the VSR contents. The vsr[32] -+ to vsr[63] contents are the same as the the vr[0] to vr[31] contents. -+ -+ GDB also prints fp[32] to fp[63]. These are simply the upper 64 bits of -+ vsr[32] to vsr[63] however, these are not "real" floating point registers -+ as none of the floating point instructions can access these registers. -+ -+ Register map. -+ MSB IBM bit numbering LSB -+ 0 63 64 127 -+ vsr[0] | fp[0] | vs[0]h | -+ vsr[1] | fp[1] | vs[1]h | -+ vsr[2] | fp[2] | vs[2]h | -+ ... -+ vsr[31] | fp[31] | vs[31]h | -+ vsr[32] | vr[0] | -+ vsr[33] | vr[1] | -+ ... -+ vsr[63] | vr[31] | -+ -+ Note, not shown above are the fake fp[32] to fp[63] that GDB prints -+ -+ Valgrind has two shadow registers for each real register denoted with -+ the suffix s1 and s2. When printing the contents of the shadow registers, -+ GDB does not explicitly print the shadow registers vsr[0] to vsr[63]. GDB -+ prints the shadow register contents of the 32 floating point registers as -+ fp[0]s1 to fp[31]s1 and fp[0]s2 to fp[31]s2. The shadow register contents -+ of vs[0]hs1 to vs[31]hs1 and vs[0]hs2 to vs[31]hs2 are also printed. The -+ user needs to construct the vsr[i]s1 shadow register contents by looking -+ at fp[i]s1 for the upper 64-bits and vs[i]hs1 for the lower 64-bits. The -+ vsr[i]s2 shadow register contents are constructed similarly. -+ -+ GDB prints the 128-bit shadow register contents of the 32 vr registers as -+ vr[0]s1 to vr[31]s1 and vr[0]s2 to vr[31]s2. These are also the value of the -+ VSR shadow registers vsr[32]s1 to vsr[63]s1 and vsr[32]s2 to vsr[63]s2. */ -+ - static struct reg regs[] = { - { "r0", 0, 64 }, - { "r1", 64, 64 }, -@@ -143,7 +188,40 @@ static struct reg regs[] = { - { "vr31", 8544, 128 }, - { "vscr", 8672, 32 }, - { "vrsave", 8704, 32 }, -+ { "vs0h", 8736, 64 }, -+ { "vs1h", 8800, 64 }, -+ { "vs2h", 8864, 64 }, -+ { "vs3h", 8928, 64 }, -+ { "vs4h", 8992, 64 }, -+ { "vs5h", 9056, 64 }, -+ { "vs6h", 9120, 64 }, -+ { "vs7h", 9184, 64 }, -+ { "vs8h", 9248, 64 }, -+ { "vs9h", 9312, 64 }, -+ { "vs10h", 9376, 64 }, -+ { "vs11h", 9440, 64 }, -+ { "vs12h", 9504, 64 }, -+ { "vs13h", 9568, 64 }, -+ { "vs14h", 9632, 64 }, -+ { "vs15h", 9696, 64 }, -+ { "vs16h", 9760, 64 }, -+ { "vs17h", 9824, 64 }, -+ { "vs18h", 9888, 64 }, -+ { "vs19h", 9952, 64 }, -+ { "vs20h", 10016, 64 }, -+ { "vs21h", 10080, 64 }, -+ { "vs22h", 10144, 64 }, -+ { "vs23h", 10208, 64 }, -+ { "vs24h", 10272, 64 }, -+ { "vs25h", 10336, 64 }, -+ { "vs26h", 10400, 64 }, -+ { "vs27h", 10464, 64 }, -+ { "vs28h", 10528, 64 }, -+ { "vs29h", 10592, 64 }, -+ { "vs30h", 10656, 64 }, -+ { "vs31h", 10720, 64 }, - }; -+ - static const char *expedite_regs[] = { "r1", "pc", 0 }; - #define num_regs (sizeof (regs) / sizeof (regs[0])) - -@@ -178,11 +256,42 @@ void transfer_register (ThreadId tid, int abs_regno, void * buf, - ThreadState* tst = VG_(get_ThreadState)(tid); - int set = abs_regno / num_regs; - int regno = abs_regno % num_regs; -+ int low_offset, high_offset; -+ - *mod = False; - - VexGuestPPC64State* ppc64 = (VexGuestPPC64State*) get_arch (set, tst); - -- switch (regno) { -+ -+#if defined (VG_LITTLEENDIAN) -+ /* Fetch the 64-bits for the VR registers (VSR[32] to VSR[63] stored as -+ * Little Endian. The 128-bit value is stored as an array of four 32-bit -+ * values. The lower 32-bits are in element 0 in Little Endian format. -+ */ -+ low_offset = 0; -+ -+ /* Fetch the upper 64-bits for the floating point register stored as -+ * Little Endian. The 128-bit value is stored as an array of four 32-bit -+ * values. The upper 32-bits are in element 3 in Little Endian format. -+ */ -+ high_offset = 2; -+#elif defined (VG_BIGENDIAN) -+ /* Fetch the 64-bits for the VR registers (VSR[32] to VSR[63] stored as -+ * Little Endian. The 128-bit value is stored as an array of four 32-bit -+ * values. The lower 32-bits are in element 3 in Big Endian format. -+ */ -+ low_offset = 2; -+ -+ /* Fetch the upper 64-bits for the floating point register stored as -+ * Little Endian. The 128-bit value is stored as an array of four 32-bit -+ * values. The upper 32-bits are in element 0 in Big Endian format. -+ */ -+ high_offset = 0; -+#else -+# error "Unknown endianness" -+#endif -+ -+ switch (regno) { - // numbers here have to match the order of regs above - // Attention: gdb order does not match valgrind order. - case 0: VG_(transfer) (&ppc64->guest_GPR0, buf, dir, size, mod); break; -@@ -217,44 +326,46 @@ void transfer_register (ThreadId tid, int abs_regno, void * buf, - case 29: VG_(transfer) (&ppc64->guest_GPR29, buf, dir, size, mod); break; - case 30: VG_(transfer) (&ppc64->guest_GPR30, buf, dir, size, mod); break; - case 31: VG_(transfer) (&ppc64->guest_GPR31, buf, dir, size, mod); break; -- case 32: VG_(transfer) (&ppc64->guest_VSR0, buf, dir, size, mod); break; -- case 33: VG_(transfer) (&ppc64->guest_VSR1, buf, dir, size, mod); break; -- case 34: VG_(transfer) (&ppc64->guest_VSR2, buf, dir, size, mod); break; -- case 35: VG_(transfer) (&ppc64->guest_VSR3, buf, dir, size, mod); break; -- case 36: VG_(transfer) (&ppc64->guest_VSR4, buf, dir, size, mod); break; -- case 37: VG_(transfer) (&ppc64->guest_VSR5, buf, dir, size, mod); break; -- case 38: VG_(transfer) (&ppc64->guest_VSR6, buf, dir, size, mod); break; -- case 39: VG_(transfer) (&ppc64->guest_VSR7, buf, dir, size, mod); break; -- case 40: VG_(transfer) (&ppc64->guest_VSR8, buf, dir, size, mod); break; -- case 41: VG_(transfer) (&ppc64->guest_VSR9, buf, dir, size, mod); break; -- case 42: VG_(transfer) (&ppc64->guest_VSR10, buf, dir, size, mod); break; -- case 43: VG_(transfer) (&ppc64->guest_VSR11, buf, dir, size, mod); break; -- case 44: VG_(transfer) (&ppc64->guest_VSR12, buf, dir, size, mod); break; -- case 45: VG_(transfer) (&ppc64->guest_VSR13, buf, dir, size, mod); break; -- case 46: VG_(transfer) (&ppc64->guest_VSR14, buf, dir, size, mod); break; -- case 47: VG_(transfer) (&ppc64->guest_VSR15, buf, dir, size, mod); break; -- case 48: VG_(transfer) (&ppc64->guest_VSR16, buf, dir, size, mod); break; -- case 49: VG_(transfer) (&ppc64->guest_VSR17, buf, dir, size, mod); break; -- case 50: VG_(transfer) (&ppc64->guest_VSR18, buf, dir, size, mod); break; -- case 51: VG_(transfer) (&ppc64->guest_VSR19, buf, dir, size, mod); break; -- case 52: VG_(transfer) (&ppc64->guest_VSR20, buf, dir, size, mod); break; -- case 53: VG_(transfer) (&ppc64->guest_VSR21, buf, dir, size, mod); break; -- case 54: VG_(transfer) (&ppc64->guest_VSR22, buf, dir, size, mod); break; -- case 55: VG_(transfer) (&ppc64->guest_VSR23, buf, dir, size, mod); break; -- case 56: VG_(transfer) (&ppc64->guest_VSR24, buf, dir, size, mod); break; -- case 57: VG_(transfer) (&ppc64->guest_VSR25, buf, dir, size, mod); break; -- case 58: VG_(transfer) (&ppc64->guest_VSR26, buf, dir, size, mod); break; -- case 59: VG_(transfer) (&ppc64->guest_VSR27, buf, dir, size, mod); break; -- case 60: VG_(transfer) (&ppc64->guest_VSR28, buf, dir, size, mod); break; -- case 61: VG_(transfer) (&ppc64->guest_VSR29, buf, dir, size, mod); break; -- case 62: VG_(transfer) (&ppc64->guest_VSR30, buf, dir, size, mod); break; -- case 63: VG_(transfer) (&ppc64->guest_VSR31, buf, dir, size, mod); break; -+ -+ case 32: VG_(transfer) (&ppc64->guest_VSR0[high_offset], buf, dir, size, mod); break; -+ case 33: VG_(transfer) (&ppc64->guest_VSR1[high_offset], buf, dir, size, mod); break; -+ case 34: VG_(transfer) (&ppc64->guest_VSR2[high_offset], buf, dir, size, mod); break; -+ case 35: VG_(transfer) (&ppc64->guest_VSR3[high_offset], buf, dir, size, mod); break; -+ case 36: VG_(transfer) (&ppc64->guest_VSR4[high_offset], buf, dir, size, mod); break; -+ case 37: VG_(transfer) (&ppc64->guest_VSR5[high_offset], buf, dir, size, mod); break; -+ case 38: VG_(transfer) (&ppc64->guest_VSR6[high_offset], buf, dir, size, mod); break; -+ case 39: VG_(transfer) (&ppc64->guest_VSR7[high_offset], buf, dir, size, mod); break; -+ case 40: VG_(transfer) (&ppc64->guest_VSR8[high_offset], buf, dir, size, mod); break; -+ case 41: VG_(transfer) (&ppc64->guest_VSR9[high_offset], buf, dir, size, mod); break; -+ case 42: VG_(transfer) (&ppc64->guest_VSR10[high_offset], buf, dir, size, mod); break; -+ case 43: VG_(transfer) (&ppc64->guest_VSR11[high_offset], buf, dir, size, mod); break; -+ case 44: VG_(transfer) (&ppc64->guest_VSR12[high_offset], buf, dir, size, mod); break; -+ case 45: VG_(transfer) (&ppc64->guest_VSR13[high_offset], buf, dir, size, mod); break; -+ case 46: VG_(transfer) (&ppc64->guest_VSR14[high_offset], buf, dir, size, mod); break; -+ case 47: VG_(transfer) (&ppc64->guest_VSR15[high_offset], buf, dir, size, mod); break; -+ case 48: VG_(transfer) (&ppc64->guest_VSR16[high_offset], buf, dir, size, mod); break; -+ case 49: VG_(transfer) (&ppc64->guest_VSR17[high_offset], buf, dir, size, mod); break; -+ case 50: VG_(transfer) (&ppc64->guest_VSR18[high_offset], buf, dir, size, mod); break; -+ case 51: VG_(transfer) (&ppc64->guest_VSR19[high_offset], buf, dir, size, mod); break; -+ case 52: VG_(transfer) (&ppc64->guest_VSR20[high_offset], buf, dir, size, mod); break; -+ case 53: VG_(transfer) (&ppc64->guest_VSR21[high_offset], buf, dir, size, mod); break; -+ case 54: VG_(transfer) (&ppc64->guest_VSR22[high_offset], buf, dir, size, mod); break; -+ case 55: VG_(transfer) (&ppc64->guest_VSR23[high_offset], buf, dir, size, mod); break; -+ case 56: VG_(transfer) (&ppc64->guest_VSR24[high_offset], buf, dir, size, mod); break; -+ case 57: VG_(transfer) (&ppc64->guest_VSR25[high_offset], buf, dir, size, mod); break; -+ case 58: VG_(transfer) (&ppc64->guest_VSR26[high_offset], buf, dir, size, mod); break; -+ case 59: VG_(transfer) (&ppc64->guest_VSR27[high_offset], buf, dir, size, mod); break; -+ case 60: VG_(transfer) (&ppc64->guest_VSR28[high_offset], buf, dir, size, mod); break; -+ case 61: VG_(transfer) (&ppc64->guest_VSR29[high_offset], buf, dir, size, mod); break; -+ case 62: VG_(transfer) (&ppc64->guest_VSR30[high_offset], buf, dir, size, mod); break; -+ case 63: VG_(transfer) (&ppc64->guest_VSR31[high_offset], buf, dir, size, mod); break; -+ - case 64: VG_(transfer) (&ppc64->guest_CIA, buf, dir, size, mod); break; - case 65: *mod = False; break; // VEX does not model Machine State Register - case 66: { - UInt cr = LibVEX_GuestPPC64_get_CR (ppc64); - if (dir == valgrind_to_gdbserver) { -- VG_(transfer) (&cr, buf, dir, size, mod); -+ VG_(transfer) (&cr, buf, dir, size, mod); - } else { - UInt newcr; - VG_(transfer) (&newcr, buf, dir, size, mod); -@@ -280,40 +391,79 @@ void transfer_register (ThreadId tid, int abs_regno, void * buf, - case 70: VG_(transfer) (&ppc64->guest_FPROUND, buf, dir, size, mod); break; - case 71: *mod = False; break; // GDBTD???? VEX { "orig_r3", 4448, 64 }, - case 72: *mod = False; break; // GDBTD???? VEX { "trap", 4512, 64 }, -- case 73: VG_(transfer) (&ppc64->guest_VSR32, buf, dir, size, mod); break; -- case 74: VG_(transfer) (&ppc64->guest_VSR33, buf, dir, size, mod); break; -- case 75: VG_(transfer) (&ppc64->guest_VSR34, buf, dir, size, mod); break; -- case 76: VG_(transfer) (&ppc64->guest_VSR35, buf, dir, size, mod); break; -- case 77: VG_(transfer) (&ppc64->guest_VSR36, buf, dir, size, mod); break; -- case 78: VG_(transfer) (&ppc64->guest_VSR37, buf, dir, size, mod); break; -- case 79: VG_(transfer) (&ppc64->guest_VSR38, buf, dir, size, mod); break; -- case 80: VG_(transfer) (&ppc64->guest_VSR39, buf, dir, size, mod); break; -- case 81: VG_(transfer) (&ppc64->guest_VSR40, buf, dir, size, mod); break; -- case 82: VG_(transfer) (&ppc64->guest_VSR41, buf, dir, size, mod); break; -- case 83: VG_(transfer) (&ppc64->guest_VSR42, buf, dir, size, mod); break; -- case 84: VG_(transfer) (&ppc64->guest_VSR43, buf, dir, size, mod); break; -- case 85: VG_(transfer) (&ppc64->guest_VSR44, buf, dir, size, mod); break; -- case 86: VG_(transfer) (&ppc64->guest_VSR45, buf, dir, size, mod); break; -- case 87: VG_(transfer) (&ppc64->guest_VSR46, buf, dir, size, mod); break; -- case 88: VG_(transfer) (&ppc64->guest_VSR47, buf, dir, size, mod); break; -- case 89: VG_(transfer) (&ppc64->guest_VSR48, buf, dir, size, mod); break; -- case 90: VG_(transfer) (&ppc64->guest_VSR49, buf, dir, size, mod); break; -- case 91: VG_(transfer) (&ppc64->guest_VSR50, buf, dir, size, mod); break; -- case 92: VG_(transfer) (&ppc64->guest_VSR51, buf, dir, size, mod); break; -- case 93: VG_(transfer) (&ppc64->guest_VSR52, buf, dir, size, mod); break; -- case 94: VG_(transfer) (&ppc64->guest_VSR53, buf, dir, size, mod); break; -- case 95: VG_(transfer) (&ppc64->guest_VSR54, buf, dir, size, mod); break; -- case 96: VG_(transfer) (&ppc64->guest_VSR55, buf, dir, size, mod); break; -- case 97: VG_(transfer) (&ppc64->guest_VSR56, buf, dir, size, mod); break; -- case 98: VG_(transfer) (&ppc64->guest_VSR57, buf, dir, size, mod); break; -- case 99: VG_(transfer) (&ppc64->guest_VSR58, buf, dir, size, mod); break; -- case 100: VG_(transfer) (&ppc64->guest_VSR59, buf, dir, size, mod); break; -- case 101: VG_(transfer) (&ppc64->guest_VSR60, buf, dir, size, mod); break; -- case 102: VG_(transfer) (&ppc64->guest_VSR61, buf, dir, size, mod); break; -- case 103: VG_(transfer) (&ppc64->guest_VSR62, buf, dir, size, mod); break; -- case 104: VG_(transfer) (&ppc64->guest_VSR63, buf, dir, size, mod); break; -- case 105: VG_(transfer) (&ppc64->guest_VSCR, buf, dir, size, mod); break; -+ -+ case 73: VG_(transfer) (&ppc64->guest_VSR32, buf, dir, size, mod); break; -+ case 74: VG_(transfer) (&ppc64->guest_VSR33, buf, dir, size, mod); break; -+ case 75: VG_(transfer) (&ppc64->guest_VSR34, buf, dir, size, mod); break; -+ case 76: VG_(transfer) (&ppc64->guest_VSR35, buf, dir, size, mod); break; -+ case 77: VG_(transfer) (&ppc64->guest_VSR36, buf, dir, size, mod); break; -+ case 78: VG_(transfer) (&ppc64->guest_VSR37, buf, dir, size, mod); break; -+ case 79: VG_(transfer) (&ppc64->guest_VSR38, buf, dir, size, mod); break; -+ case 80: VG_(transfer) (&ppc64->guest_VSR39, buf, dir, size, mod); break; -+ case 81: VG_(transfer) (&ppc64->guest_VSR40, buf, dir, size, mod); break; -+ case 82: VG_(transfer) (&ppc64->guest_VSR40, buf, dir, size, mod); break; -+ case 83: VG_(transfer) (&ppc64->guest_VSR42, buf, dir, size, mod); break; -+ case 84: VG_(transfer) (&ppc64->guest_VSR43, buf, dir, size, mod); break; -+ case 85: VG_(transfer) (&ppc64->guest_VSR44, buf, dir, size, mod); break; -+ case 86: VG_(transfer) (&ppc64->guest_VSR45, buf, dir, size, mod); break; -+ case 87: VG_(transfer) (&ppc64->guest_VSR46, buf, dir, size, mod); break; -+ case 88: VG_(transfer) (&ppc64->guest_VSR47, buf, dir, size, mod); break; -+ case 89: VG_(transfer) (&ppc64->guest_VSR48, buf, dir, size, mod); break; -+ case 90: VG_(transfer) (&ppc64->guest_VSR49, buf, dir, size, mod); break; -+ case 91: VG_(transfer) (&ppc64->guest_VSR50, buf, dir, size, mod); break; -+ case 92: VG_(transfer) (&ppc64->guest_VSR51, buf, dir, size, mod); break; -+ case 93: VG_(transfer) (&ppc64->guest_VSR52, buf, dir, size, mod); break; -+ case 94: VG_(transfer) (&ppc64->guest_VSR53, buf, dir, size, mod); break; -+ case 95: VG_(transfer) (&ppc64->guest_VSR54, buf, dir, size, mod); break; -+ case 96: VG_(transfer) (&ppc64->guest_VSR55, buf, dir, size, mod); break; -+ case 97: VG_(transfer) (&ppc64->guest_VSR56, buf, dir, size, mod); break; -+ case 98: VG_(transfer) (&ppc64->guest_VSR57, buf, dir, size, mod); break; -+ case 99: VG_(transfer) (&ppc64->guest_VSR58, buf, dir, size, mod); break; -+ case 100: VG_(transfer) (&ppc64->guest_VSR59, buf, dir, size, mod); break; -+ case 101: VG_(transfer) (&ppc64->guest_VSR60, buf, dir, size, mod); break; -+ case 102: VG_(transfer) (&ppc64->guest_VSR61, buf, dir, size, mod); break; -+ case 103: VG_(transfer) (&ppc64->guest_VSR62, buf, dir, size, mod); break; -+ case 104: VG_(transfer) (&ppc64->guest_VSR63, buf, dir, size, mod); break; -+ case 105: VG_(transfer) (&ppc64->guest_VSCR, buf, dir, size, mod); break; - case 106: VG_(transfer) (&ppc64->guest_VRSAVE, buf, dir, size, mod); break; -+ -+ /* Fetch the lower 64-bits of the VSR registers. GDB will combine the -+ * lower 64-bits of the VSR with the upper 64-bits it got fetching the -+ * corresponding floating point register to display the full 128-bit -+ * VSR value. -+ */ -+ case 107: VG_(transfer) (&ppc64->guest_VSR0[low_offset], buf, dir, size, mod); break; -+ case 108: VG_(transfer) (&ppc64->guest_VSR1[low_offset], buf, dir, size, mod); break; -+ case 109: VG_(transfer) (&ppc64->guest_VSR2[low_offset], buf, dir, size, mod); break; -+ case 110: VG_(transfer) (&ppc64->guest_VSR3[low_offset], buf, dir, size, mod); break; -+ case 111: VG_(transfer) (&ppc64->guest_VSR4[low_offset], buf, dir, size, mod); break; -+ case 112: VG_(transfer) (&ppc64->guest_VSR5[low_offset], buf, dir, size, mod); break; -+ case 113: VG_(transfer) (&ppc64->guest_VSR6[low_offset], buf, dir, size, mod); break; -+ case 114: VG_(transfer) (&ppc64->guest_VSR7[low_offset], buf, dir, size, mod); break; -+ case 115: VG_(transfer) (&ppc64->guest_VSR8[low_offset], buf, dir, size, mod); break; -+ case 116: VG_(transfer) (&ppc64->guest_VSR9[low_offset], buf, dir, size, mod); break; -+ case 117: VG_(transfer) (&ppc64->guest_VSR10[low_offset], buf, dir, size, mod); break; -+ case 118: VG_(transfer) (&ppc64->guest_VSR11[low_offset], buf, dir, size, mod); break; -+ case 119: VG_(transfer) (&ppc64->guest_VSR12[low_offset], buf, dir, size, mod); break; -+ case 120: VG_(transfer) (&ppc64->guest_VSR13[low_offset], buf, dir, size, mod); break; -+ case 121: VG_(transfer) (&ppc64->guest_VSR14[low_offset], buf, dir, size, mod); break; -+ case 122: VG_(transfer) (&ppc64->guest_VSR15[low_offset], buf, dir, size, mod); break; -+ case 123: VG_(transfer) (&ppc64->guest_VSR16[low_offset], buf, dir, size, mod); break; -+ case 124: VG_(transfer) (&ppc64->guest_VSR17[low_offset], buf, dir, size, mod); break; -+ case 125: VG_(transfer) (&ppc64->guest_VSR18[low_offset], buf, dir, size, mod); break; -+ case 126: VG_(transfer) (&ppc64->guest_VSR19[low_offset], buf, dir, size, mod); break; -+ case 127: VG_(transfer) (&ppc64->guest_VSR20[low_offset], buf, dir, size, mod); break; -+ case 128: VG_(transfer) (&ppc64->guest_VSR21[low_offset], buf, dir, size, mod); break; -+ case 129: VG_(transfer) (&ppc64->guest_VSR22[low_offset], buf, dir, size, mod); break; -+ case 130: VG_(transfer) (&ppc64->guest_VSR23[low_offset], buf, dir, size, mod); break; -+ case 131: VG_(transfer) (&ppc64->guest_VSR24[low_offset], buf, dir, size, mod); break; -+ case 132: VG_(transfer) (&ppc64->guest_VSR25[low_offset], buf, dir, size, mod); break; -+ case 133: VG_(transfer) (&ppc64->guest_VSR26[low_offset], buf, dir, size, mod); break; -+ case 134: VG_(transfer) (&ppc64->guest_VSR27[low_offset], buf, dir, size, mod); break; -+ case 135: VG_(transfer) (&ppc64->guest_VSR28[low_offset], buf, dir, size, mod); break; -+ case 136: VG_(transfer) (&ppc64->guest_VSR29[low_offset], buf, dir, size, mod); break; -+ case 137: VG_(transfer) (&ppc64->guest_VSR30[low_offset], buf, dir, size, mod); break; -+ case 138: VG_(transfer) (&ppc64->guest_VSR31[low_offset], buf, dir, size, mod); break; - default: vg_assert(0); - } - } -@@ -321,6 +471,14 @@ void transfer_register (ThreadId tid, int abs_regno, void * buf, - static - const char* target_xml (Bool shadow_mode) - { -+ /* NOTE, the current powerpc-altivec64l*.xml files includes the vsx -+ * registers. Power 6 and earlier power processors do not support the -+ * vsx registers. GDB has a bug in that it is only checking for ptrace -+ * support rather then checking the actual HW feature. Hence GDB on -+ * power 6 prints vsx registers that do not exist. Valgrind GDB support -+ * also has to include the vsx register definitions to be consistent with -+ * GDB. -+ */ - if (shadow_mode) { - return "powerpc-altivec64l-valgrind.xml"; - } else { - -commit 323a91bfd7dd10d52c77ff31ae6d6b8d0bb37f32 -Author: carll -Date: Fri Apr 22 15:03:46 2016 +0000 - - PPC64, Valgrind with GDB does not display 64-bit and 128-bit registers - correctly - - Forgot to add the new files to the previous commit 15864. - - coregrind/m_gdbserver/power64-core2-valgrind-s1.xml - coregrind/m_gdbserver/power64-core2-valgrind-s2.xml - coregrind/m_gdbserver/power-vsx-valgrind-s1.xml - coregrind/m_gdbserver/power-vsx-valgrind-s2.xml - coregrind/m_gdbserver/power-vsx.xml - - Bugzilla 360008 was opened for this issue. - - git-svn-id: svn://svn.valgrind.org/valgrind/trunk@15866 a5019735-40e9-0310-863c-91ae7b9d1cf9 - -diff --git a/coregrind/m_gdbserver/power-vsx-valgrind-s1.xml b/coregrind/m_gdbserver/power-vsx-valgrind-s1.xml -new file mode 100644 -index 0000000..24730ff ---- /dev/null -+++ b/coregrind/m_gdbserver/power-vsx-valgrind-s1.xml -@@ -0,0 +1,44 @@ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -diff --git a/coregrind/m_gdbserver/power-vsx-valgrind-s2.xml b/coregrind/m_gdbserver/power-vsx-valgrind-s2.xml -new file mode 100644 -index 0000000..8854e8f ---- /dev/null -+++ b/coregrind/m_gdbserver/power-vsx-valgrind-s2.xml -@@ -0,0 +1,44 @@ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -diff --git a/coregrind/m_gdbserver/power-vsx.xml b/coregrind/m_gdbserver/power-vsx.xml -new file mode 100644 -index 0000000..411e35c ---- /dev/null -+++ b/coregrind/m_gdbserver/power-vsx.xml -@@ -0,0 +1,44 @@ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -diff --git a/coregrind/m_gdbserver/power64-core2-valgrind-s1.xml b/coregrind/m_gdbserver/power64-core2-valgrind-s1.xml -new file mode 100644 -index 0000000..1012a2d ---- /dev/null -+++ b/coregrind/m_gdbserver/power64-core2-valgrind-s1.xml -@@ -0,0 +1,16 @@ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -diff --git a/coregrind/m_gdbserver/power64-core2-valgrind-s2.xml b/coregrind/m_gdbserver/power64-core2-valgrind-s2.xml -new file mode 100644 -index 0000000..fa50bd4 ---- /dev/null -+++ b/coregrind/m_gdbserver/power64-core2-valgrind-s2.xml -@@ -0,0 +1,16 @@ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -Only in valgrind-3.11.0: autom4te.cache -diff -ur valgrind-3.11.0.orig/coregrind/Makefile.in valgrind-3.11.0/coregrind/Makefile.in ---- valgrind-3.11.0.orig/coregrind/Makefile.in 2016-04-29 15:07:46.688655051 +0200 -+++ valgrind-3.11.0/coregrind/Makefile.in 2016-04-29 15:11:24.219880810 +0200 -@@ -1746,12 +1746,17 @@ - m_gdbserver/power64-core-valgrind-s1.xml \ - m_gdbserver/power64-core-valgrind-s2.xml \ - m_gdbserver/power64-core.xml \ -+ m_gdbserver/power64-core2-valgrind-s1.xml \ -+ m_gdbserver/power64-core2-valgrind-s2.xml \ - m_gdbserver/power64-linux-valgrind-s1.xml \ - m_gdbserver/power64-linux-valgrind-s2.xml \ - m_gdbserver/power64-linux.xml \ - m_gdbserver/power-altivec-valgrind-s1.xml \ - m_gdbserver/power-altivec-valgrind-s2.xml \ - m_gdbserver/power-altivec.xml \ -+ m_gdbserver/power-vsx-valgrind-s1.xml \ -+ m_gdbserver/power-vsx-valgrind-s2.xml \ -+ m_gdbserver/power-vsx.xml \ - m_gdbserver/power-core-valgrind-s1.xml \ - m_gdbserver/power-core-valgrind-s2.xml \ - m_gdbserver/power-core.xml \ diff --git a/SOURCES/valgrind-3.11.0-ppoll-mask.patch b/SOURCES/valgrind-3.11.0-ppoll-mask.patch deleted file mode 100644 index 720e54d..0000000 --- a/SOURCES/valgrind-3.11.0-ppoll-mask.patch +++ /dev/null @@ -1,950 +0,0 @@ -commit 515c3b6de3eff6ddf88fd14a0084b8ad0c692553 -Author: iraisr -Date: Tue Mar 8 09:04:48 2016 +0000 - - Sanitize signal mask in ppoll and pselect syscalls - Reported and Linux patch contributed by Steven Smith - Fixes BZ#359871 - - - - git-svn-id: svn://svn.valgrind.org/valgrind/trunk@15823 a5019735-40e9-0310-863c-91ae7b9d1cf9 - -diff --git a/coregrind/m_syswrap/priv_syswrap-main.h b/coregrind/m_syswrap/priv_syswrap-main.h -index cabad7c..3164c81 100644 ---- a/coregrind/m_syswrap/priv_syswrap-main.h -+++ b/coregrind/m_syswrap/priv_syswrap-main.h -@@ -38,6 +38,9 @@ - extern - void ML_(fixup_guest_state_to_restart_syscall) ( ThreadArchState* arch ); - -+extern -+void VG_(sanitize_client_sigmask)(vki_sigset_t *mask); -+ - #if defined(VGO_darwin) - /* Longjmp to scheduler after client calls workq_ops(WQOPS_THREAD_RETURN)*/ - extern -diff --git a/coregrind/m_syswrap/syswrap-amd64-linux.c b/coregrind/m_syswrap/syswrap-amd64-linux.c -index 7c88bc2..4a8344b 100644 ---- a/coregrind/m_syswrap/syswrap-amd64-linux.c -+++ b/coregrind/m_syswrap/syswrap-amd64-linux.c -@@ -1018,7 +1018,7 @@ static SyscallTableEntry syscall_table[] = { - LINX_(__NR_fchmodat, sys_fchmodat), // 268 - LINX_(__NR_faccessat, sys_faccessat), // 269 - -- LINX_(__NR_pselect6, sys_pselect6), // 270 -+ LINXY(__NR_pselect6, sys_pselect6), // 270 - LINXY(__NR_ppoll, sys_ppoll), // 271 - LINX_(__NR_unshare, sys_unshare), // 272 - LINX_(__NR_set_robust_list, sys_set_robust_list), // 273 -diff --git a/coregrind/m_syswrap/syswrap-arm-linux.c b/coregrind/m_syswrap/syswrap-arm-linux.c -index 3ccad12..224070c 100644 ---- a/coregrind/m_syswrap/syswrap-arm-linux.c -+++ b/coregrind/m_syswrap/syswrap-arm-linux.c -@@ -1188,7 +1188,7 @@ static SyscallTableEntry syscall_main_table[] = { - - LINX_(__NR_arm_fadvise64_64, sys_fadvise64_64), // 270 */(Linux?) - -- LINX_(__NR_pselect6, sys_pselect6), // 335 -+ LINXY(__NR_pselect6, sys_pselect6), // 335 - LINXY(__NR_ppoll, sys_ppoll), // 336 - - LINXY(__NR_epoll_pwait, sys_epoll_pwait), // 346 -diff --git a/coregrind/m_syswrap/syswrap-arm64-linux.c b/coregrind/m_syswrap/syswrap-arm64-linux.c -index 8d3027d..abddff1 100644 ---- a/coregrind/m_syswrap/syswrap-arm64-linux.c -+++ b/coregrind/m_syswrap/syswrap-arm64-linux.c -@@ -924,7 +924,7 @@ static SyscallTableEntry syscall_main_table[] = { - GENX_(__NR_writev, sys_writev), // 66 - GENXY(__NR_pread64, sys_pread64), // 67 - GENX_(__NR_pwrite64, sys_pwrite64), // 68 -- LINX_(__NR_pselect6, sys_pselect6), // 72 -+ LINXY(__NR_pselect6, sys_pselect6), // 72 - LINXY(__NR_ppoll, sys_ppoll), // 73 - LINXY(__NR_signalfd4, sys_signalfd4), // 74 - LINX_(__NR_readlinkat, sys_readlinkat), // 78 -diff --git a/coregrind/m_syswrap/syswrap-linux.c b/coregrind/m_syswrap/syswrap-linux.c -index f2d1076..6fdacda 100644 ---- a/coregrind/m_syswrap/syswrap-linux.c -+++ b/coregrind/m_syswrap/syswrap-linux.c -@@ -62,6 +62,7 @@ - #include "priv_types_n_macros.h" - #include "priv_syswrap-generic.h" - #include "priv_syswrap-linux.h" -+#include "priv_syswrap-main.h" - #include "priv_syswrap-xen.h" - - // Run a thread from beginning to end and return the thread's -@@ -1272,9 +1273,18 @@ POST(sys_get_robust_list) - POST_MEM_WRITE(ARG3, sizeof(struct vki_size_t *)); - } - -+struct pselect_sized_sigset { -+ const vki_sigset_t *ss; -+ vki_size_t ss_len; -+}; -+struct pselect_adjusted_sigset { -+ struct pselect_sized_sigset ss; /* The actual syscall arg */ -+ vki_sigset_t adjusted_ss; -+}; -+ - PRE(sys_pselect6) - { -- *flags |= SfMayBlock; -+ *flags |= SfMayBlock | SfPostOnFail; - PRINT("sys_pselect6 ( %ld, %#lx, %#lx, %#lx, %#lx, %#lx )", - SARG1, ARG2, ARG3, ARG4, ARG5, ARG6); - PRE_REG_READ6(long, "pselect6", -@@ -1293,15 +1303,41 @@ PRE(sys_pselect6) - ARG4, ARG1/8 /* __FD_SETSIZE/8 */ ); - if (ARG5 != 0) - PRE_MEM_READ( "pselect6(timeout)", ARG5, sizeof(struct vki_timeval) ); -- if (ARG6 != 0) -- PRE_MEM_READ( "pselect6(sig)", ARG6, sizeof(void *)+sizeof(vki_size_t) ); -+ if (ARG6 != 0) { -+ const struct pselect_sized_sigset *pss = -+ (struct pselect_sized_sigset *)ARG6; -+ PRE_MEM_READ( "pselect6(sig)", ARG6, sizeof(*pss) ); -+ if (!ML_(safe_to_deref)(pss, sizeof(*pss))) { -+ ARG6 = 1; /* Something recognisable to POST() hook. */ -+ } else { -+ struct pselect_adjusted_sigset *pas; -+ pas = VG_(malloc)("syswrap.pselect6.1", sizeof(*pas)); -+ ARG6 = (Addr)pas; -+ pas->ss.ss = (void *)1; -+ pas->ss.ss_len = pss->ss_len; -+ if (pss->ss_len == sizeof(*pss->ss)) { -+ PRE_MEM_READ("pselect6(sig->ss)", (Addr)pss->ss, pss->ss_len); -+ if (ML_(safe_to_deref)(pss->ss, sizeof(*pss->ss))) { -+ pas->adjusted_ss = *pss->ss; -+ pas->ss.ss = &pas->adjusted_ss; -+ VG_(sanitize_client_sigmask)(&pas->adjusted_ss); -+ } -+ } -+ } -+ } -+} -+POST(sys_pselect6) -+{ -+ if (ARG6 != 0 && ARG6 != 1) { -+ VG_(free)((struct pselect_adjusted_sigset *)ARG6); -+ } - } - - PRE(sys_ppoll) - { - UInt i; - struct vki_pollfd* ufds = (struct vki_pollfd *)ARG1; -- *flags |= SfMayBlock; -+ *flags |= SfMayBlock | SfPostOnFail; - PRINT("sys_ppoll ( %#lx, %lu, %#lx, %#lx, %lu )\n", ARG1,ARG2,ARG3,ARG4,ARG5); - PRE_REG_READ5(long, "ppoll", - struct vki_pollfd *, ufds, unsigned int, nfds, -@@ -1319,18 +1355,33 @@ PRE(sys_ppoll) - - if (ARG3) - PRE_MEM_READ( "ppoll(tsp)", ARG3, sizeof(struct vki_timespec) ); -- if (ARG4) -- PRE_MEM_READ( "ppoll(sigmask)", ARG4, sizeof(vki_sigset_t) ); -+ if (ARG4 != 0 && sizeof(vki_sigset_t) == ARG5) { -+ const vki_sigset_t *guest_sigmask = (vki_sigset_t *)ARG4; -+ PRE_MEM_READ( "ppoll(sigmask)", ARG4, ARG5); -+ if (!ML_(safe_to_deref)(guest_sigmask, sizeof(*guest_sigmask))) { -+ ARG4 = 1; /* Something recognisable to POST() hook. */ -+ } else { -+ vki_sigset_t *vg_sigmask = -+ VG_(malloc)("syswrap.ppoll.1", sizeof(*vg_sigmask)); -+ ARG4 = (Addr)vg_sigmask; -+ *vg_sigmask = *guest_sigmask; -+ VG_(sanitize_client_sigmask)(vg_sigmask); -+ } -+ } - } - - POST(sys_ppoll) - { -- if (RES > 0) { -+ vg_assert(SUCCESS || FAILURE); -+ if (SUCCESS && (RES >= 0)) { - UInt i; - struct vki_pollfd* ufds = (struct vki_pollfd *)ARG1; - for (i = 0; i < ARG2; i++) - POST_MEM_WRITE( (Addr)(&ufds[i].revents), sizeof(ufds[i].revents) ); - } -+ if (ARG4 != 0 && ARG5 == sizeof(vki_sigset_t) && ARG4 != 1) { -+ VG_(free)((vki_sigset_t *) ARG4); -+ } - } - - -diff --git a/coregrind/m_syswrap/syswrap-main.c b/coregrind/m_syswrap/syswrap-main.c -index 054891f..d854194 100644 ---- a/coregrind/m_syswrap/syswrap-main.c -+++ b/coregrind/m_syswrap/syswrap-main.c -@@ -1657,7 +1657,7 @@ static const SyscallTableEntry* get_syscall_entry ( Int syscallno ) - /* Add and remove signals from mask so that we end up telling the - kernel the state we actually want rather than what the client - wants. */ --static void sanitize_client_sigmask(vki_sigset_t *mask) -+void VG_(sanitize_client_sigmask)(vki_sigset_t *mask) - { - VG_(sigdelset)(mask, VKI_SIGKILL); - VG_(sigdelset)(mask, VKI_SIGSTOP); -@@ -1979,7 +1979,7 @@ void VG_(client_syscall) ( ThreadId tid, UInt trc ) - PRINT(" --> [async] ... \n"); - - mask = tst->sig_mask; -- sanitize_client_sigmask(&mask); -+ VG_(sanitize_client_sigmask)(&mask); - - /* Gack. More impedance matching. Copy the possibly - modified syscall args back into the guest state. */ -diff --git a/coregrind/m_syswrap/syswrap-mips64-linux.c b/coregrind/m_syswrap/syswrap-mips64-linux.c -index 12d147d..7c5fbdb 100644 ---- a/coregrind/m_syswrap/syswrap-mips64-linux.c -+++ b/coregrind/m_syswrap/syswrap-mips64-linux.c -@@ -889,7 +889,7 @@ static SyscallTableEntry syscall_main_table[] = { - LINX_ (__NR_readlinkat, sys_readlinkat), - LINX_ (__NR_fchmodat, sys_fchmodat), - LINX_ (__NR_faccessat, sys_faccessat), -- LINX_ (__NR_pselect6, sys_pselect6), -+ LINXY (__NR_pselect6, sys_pselect6), - LINXY (__NR_ppoll, sys_ppoll), - PLAX_ (__NR_unshare, sys_unshare), - PLAX_ (__NR_splice, sys_splice), -diff --git a/coregrind/m_syswrap/syswrap-ppc32-linux.c b/coregrind/m_syswrap/syswrap-ppc32-linux.c -index 9ceaa15..379fcb3 100644 ---- a/coregrind/m_syswrap/syswrap-ppc32-linux.c -+++ b/coregrind/m_syswrap/syswrap-ppc32-linux.c -@@ -1194,7 +1194,7 @@ static SyscallTableEntry syscall_table[] = { - PLAXY(__NR_spu_run, sys_spu_run), // 278 - PLAX_(__NR_spu_create, sys_spu_create), // 279 - -- LINX_(__NR_pselect6, sys_pselect6), // 280 -+ LINXY(__NR_pselect6, sys_pselect6), // 280 - LINXY(__NR_ppoll, sys_ppoll), // 281 - - LINXY(__NR_openat, sys_openat), // 286 -diff --git a/coregrind/m_syswrap/syswrap-ppc64-linux.c b/coregrind/m_syswrap/syswrap-ppc64-linux.c -index 15b8979..77668c7 100644 ---- a/coregrind/m_syswrap/syswrap-ppc64-linux.c -+++ b/coregrind/m_syswrap/syswrap-ppc64-linux.c -@@ -1110,7 +1110,7 @@ static SyscallTableEntry syscall_table[] = { - LINX_(__NR_inotify_add_watch, sys_inotify_add_watch), // 276 - LINX_(__NR_inotify_rm_watch, sys_inotify_rm_watch), // 277 - -- LINX_(__NR_pselect6, sys_pselect6), // 280 -+ LINXY(__NR_pselect6, sys_pselect6), // 280 - LINXY(__NR_ppoll, sys_ppoll), // 281 - - LINXY(__NR_openat, sys_openat), // 286 -diff --git a/coregrind/m_syswrap/syswrap-s390x-linux.c b/coregrind/m_syswrap/syswrap-s390x-linux.c -index 0513789..107a569 100644 ---- a/coregrind/m_syswrap/syswrap-s390x-linux.c -+++ b/coregrind/m_syswrap/syswrap-s390x-linux.c -@@ -992,7 +992,7 @@ static SyscallTableEntry syscall_table[] = { - LINX_(__NR_fchmodat, sys_fchmodat), // 299 - - LINX_(__NR_faccessat, sys_faccessat), // 300 -- LINX_(__NR_pselect6, sys_pselect6), // 301 -+ LINXY(__NR_pselect6, sys_pselect6), // 301 - LINXY(__NR_ppoll, sys_ppoll), // 302 - LINX_(__NR_unshare, sys_unshare), // 303 - LINX_(__NR_set_robust_list, sys_set_robust_list), // 304 -diff --git a/coregrind/m_syswrap/syswrap-solaris.c b/coregrind/m_syswrap/syswrap-solaris.c -index 7ac876f..a307f6c 100644 ---- a/coregrind/m_syswrap/syswrap-solaris.c -+++ b/coregrind/m_syswrap/syswrap-solaris.c -@@ -71,6 +71,7 @@ - - #include "priv_types_n_macros.h" - #include "priv_syswrap-generic.h" -+#include "priv_syswrap-main.h" - #include "priv_syswrap-solaris.h" - - /* Return the number of non-dead and daemon threads. -@@ -7327,7 +7328,7 @@ PRE(sys_pollsys) - UWord i; - struct vki_pollfd *ufds = (struct vki_pollfd *)ARG1; - -- *flags |= SfMayBlock; -+ *flags |= SfMayBlock | SfPostOnFail; - - PRINT("sys_pollsys ( %#lx, %lu, %#lx, %#lx )", ARG1, ARG2, ARG3, ARG4); - PRE_REG_READ4(long, "poll", pollfd_t *, fds, vki_nfds_t, nfds, -@@ -7343,18 +7344,37 @@ PRE(sys_pollsys) - - if (ARG3) - PRE_MEM_READ("poll(timeout)", ARG3, sizeof(vki_timespec_t)); -- if (ARG4) -+ -+ if (ARG4) { - PRE_MEM_READ("poll(set)", ARG4, sizeof(vki_sigset_t)); -+ -+ const vki_sigset_t *guest_sigmask = (vki_sigset_t *) ARG4; -+ if (!ML_(safe_to_deref)(guest_sigmask, sizeof(vki_sigset_t))) { -+ ARG4 = 1; /* Something recognisable to POST() hook. */ -+ } else { -+ vki_sigset_t *vg_sigmask = -+ VG_(malloc)("syswrap.pollsys.1", sizeof(vki_sigset_t)); -+ ARG4 = (Addr) vg_sigmask; -+ *vg_sigmask = *guest_sigmask; -+ VG_(sanitize_client_sigmask)(vg_sigmask); -+ } -+ } - } - - POST(sys_pollsys) - { -- if (RES >= 0) { -+ vg_assert(SUCCESS || FAILURE); -+ -+ if (SUCCESS && (RES >= 0)) { - UWord i; - vki_pollfd_t *ufds = (vki_pollfd_t*)ARG1; - for (i = 0; i < ARG2; i++) - POST_FIELD_WRITE(ufds[i].revents); - } -+ -+ if ((ARG4 != 0) && (ARG4 != 1)) { -+ VG_(free)((vki_sigset_t *) ARG4); -+ } - } - - PRE(sys_labelsys) -diff --git a/coregrind/m_syswrap/syswrap-tilegx-linux.c b/coregrind/m_syswrap/syswrap-tilegx-linux.c -index aceceb4..4845f79 100644 ---- a/coregrind/m_syswrap/syswrap-tilegx-linux.c -+++ b/coregrind/m_syswrap/syswrap-tilegx-linux.c -@@ -1202,7 +1202,7 @@ static SyscallTableEntry syscall_table[] = { - LINXY(__NR_preadv, sys_preadv), // 69 - LINX_(__NR_pwritev, sys_pwritev), // 70 - LINXY(__NR_sendfile, sys_sendfile), // 71 -- LINX_(__NR_pselect6, sys_pselect6), // 72 -+ LINXY(__NR_pselect6, sys_pselect6), // 72 - LINXY(__NR_ppoll, sys_ppoll), // 73 - LINXY(__NR_signalfd4, sys_signalfd4), // 74 - LINX_(__NR_splice, sys_splice), // 75 -diff --git a/coregrind/m_syswrap/syswrap-x86-linux.c b/coregrind/m_syswrap/syswrap-x86-linux.c -index 3c80e6a..f1f97d7 100644 ---- a/coregrind/m_syswrap/syswrap-x86-linux.c -+++ b/coregrind/m_syswrap/syswrap-x86-linux.c -@@ -1766,7 +1766,7 @@ static SyscallTableEntry syscall_table[] = { - LINX_(__NR_readlinkat, sys_readlinkat), // 305 - LINX_(__NR_fchmodat, sys_fchmodat), // 306 - LINX_(__NR_faccessat, sys_faccessat), // 307 -- LINX_(__NR_pselect6, sys_pselect6), // 308 -+ LINXY(__NR_pselect6, sys_pselect6), // 308 - LINXY(__NR_ppoll, sys_ppoll), // 309 - - LINX_(__NR_unshare, sys_unshare), // 310 -diff --git a/none/tests/Makefile.am b/none/tests/Makefile.am -index 7eb2bf8..5d8e942 100644 ---- a/none/tests/Makefile.am -+++ b/none/tests/Makefile.am -@@ -142,12 +142,14 @@ EXTRA_DIST = \ - nestedfns.stderr.exp nestedfns.stdout.exp nestedfns.vgtest \ - nodir.stderr.exp nodir.vgtest \ - pending.stdout.exp pending.stderr.exp pending.vgtest \ -+ ppoll_alarm.stdout.exp ppoll_alarm.stderr.exp ppoll_alarm.vgtest \ - procfs-linux.stderr.exp-with-readlinkat \ - procfs-linux.stderr.exp-without-readlinkat \ - procfs-linux.vgtest \ - procfs-non-linux.vgtest \ - procfs-non-linux.stderr.exp-with-readlinkat \ - procfs-non-linux.stderr.exp-without-readlinkat \ -+ pselect_alarm.stdout.exp pselect_alarm.stderr.exp pselect_alarm.vgtest \ - pth_atfork1.stderr.exp pth_atfork1.stdout.exp pth_atfork1.vgtest \ - pth_blockedsig.stderr.exp \ - pth_blockedsig.stdout.exp pth_blockedsig.vgtest \ -@@ -215,7 +217,9 @@ check_PROGRAMS = \ - mmap_fcntl_bug \ - munmap_exe map_unaligned map_unmap mq \ - pending \ -+ ppoll_alarm \ - procfs-cmdline-exe \ -+ pselect_alarm \ - pth_atfork1 pth_blockedsig pth_cancel1 pth_cancel2 pth_cvsimple \ - pth_empty pth_exit pth_exit2 pth_mutexspeed pth_once pth_rwlock \ - pth_stackalign \ -@@ -289,6 +293,8 @@ libvexmultiarch_test_LDADD = \ - ../../VEX/libvexmultiarch-@VGCONF_ARCH_PRI@-@VGCONF_OS@.a \ - ../../VEX/libvex-@VGCONF_ARCH_PRI@-@VGCONF_OS@.a @LIB_UBSAN@ - libvexmultiarch_test_SOURCES = libvex_test.c -+ppoll_alarm_LDADD = -lpthread -+pselect_alarm_LDADD = -lpthread - pth_atfork1_LDADD = -lpthread - pth_blockedsig_LDADD = -lpthread - pth_cancel1_CFLAGS = $(AM_CFLAGS) -Wno-shadow -diff --git a/none/tests/ppoll_alarm.c b/none/tests/ppoll_alarm.c -new file mode 100644 -index 0000000..1b1794b ---- /dev/null -+++ b/none/tests/ppoll_alarm.c -@@ -0,0 +1,55 @@ -+/* Tries to exploit bug in ppoll mask handling: -+ https://bugs.kde.org/show_bug.cgi?id=359871 -+ where client program was able to successfully block VG_SIGVGKILL. */ -+ -+#define _GNU_SOURCE /* for ppoll */ -+#include -+#include -+#include -+#include -+#include -+ -+static int ready = 0; -+static pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER; -+static pthread_cond_t cond = PTHREAD_COND_INITIALIZER; -+ -+static void * -+mythr(void *ignore) -+{ -+ pthread_mutex_lock(&mutex); -+ ready = 1; -+ pthread_cond_signal(&cond); -+ pthread_mutex_unlock(&mutex); -+ -+ sigset_t ss; -+ sigfillset(&ss); -+ while (1) { -+ struct timespec ts = {10000, 0}; -+ ppoll(NULL, 0, &ts, &ss); -+ } -+ -+ return NULL; -+} -+ -+int -+main() -+{ -+ pthread_t thr; -+ int ret = pthread_create(&thr, NULL, mythr, NULL); -+ if (ret != 0) { -+ fprintf(stderr, "pthread_create failed\n"); -+ return 1; -+ } -+ -+ pthread_mutex_lock(&mutex); -+ while (ready == 0) { -+ pthread_cond_wait(&cond, &mutex); -+ } -+ pthread_mutex_unlock(&mutex); -+ -+ alarm(1); /* Unhandled SIGALRM should cause exit. */ -+ while (1) -+ sleep(1); -+ -+ return 0; -+} -diff --git a/none/tests/ppoll_alarm.stderr.exp b/none/tests/ppoll_alarm.stderr.exp -new file mode 100644 -index 0000000..e69de29 -diff --git a/none/tests/ppoll_alarm.stdout.exp b/none/tests/ppoll_alarm.stdout.exp -new file mode 100644 -index 0000000..e69de29 -diff --git a/none/tests/ppoll_alarm.vgtest b/none/tests/ppoll_alarm.vgtest -new file mode 100644 -index 0000000..b1309d3 ---- /dev/null -+++ b/none/tests/ppoll_alarm.vgtest -@@ -0,0 +1,3 @@ -+prog: ppoll_alarm -+vgopts: -q -+stderr_filter: filter_stderr -diff --git a/none/tests/pselect_alarm.c b/none/tests/pselect_alarm.c -new file mode 100644 -index 0000000..7a68ec0 ---- /dev/null -+++ b/none/tests/pselect_alarm.c -@@ -0,0 +1,61 @@ -+/* Tries to exploit bug in pselect mask handling: -+ https://bugs.kde.org/show_bug.cgi?id=359871 -+ where client program was able to successfully block VG_SIGVGKILL. */ -+ -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+ -+static int ready = 0; -+static pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER; -+static pthread_cond_t cond = PTHREAD_COND_INITIALIZER; -+ -+static void * -+mythr(void *ignore) -+{ -+ pthread_mutex_lock(&mutex); -+ ready = 1; -+ pthread_cond_signal(&cond); -+ pthread_mutex_unlock(&mutex); -+ -+ sigset_t ss; -+ sigfillset(&ss); -+ while (1) { -+ struct timespec ts = {10000, 0}; -+ pselect(0, NULL, NULL, NULL, &ts, &ss); -+ } -+ -+ return NULL; -+} -+ -+int -+main() -+{ -+ pthread_t thr; -+ int ret = pthread_create(&thr, NULL, mythr, NULL); -+ if (ret != 0) { -+ fprintf(stderr, "pthread_create failed\n"); -+ return 1; -+ } -+ -+ pthread_mutex_lock(&mutex); -+ while (ready == 0) { -+ pthread_cond_wait(&cond, &mutex); -+ } -+ pthread_mutex_unlock(&mutex); -+ -+#if defined(VGO_linux) -+ assert(pselect(0, NULL, NULL, NULL, NULL, (sigset_t *)12) == -1); -+ assert(errno == EFAULT); -+#endif -+ -+ alarm(1); /* Unhandled SIGALRM should cause exit. */ -+ while (1) -+ sleep(1); -+ -+ return 0; -+} -diff --git a/none/tests/pselect_alarm.stderr.exp b/none/tests/pselect_alarm.stderr.exp -new file mode 100644 -index 0000000..e69de29 -diff --git a/none/tests/pselect_alarm.stdout.exp b/none/tests/pselect_alarm.stdout.exp -new file mode 100644 -index 0000000..e69de29 -diff --git a/none/tests/pselect_alarm.vgtest b/none/tests/pselect_alarm.vgtest -new file mode 100644 -index 0000000..84cc674 ---- /dev/null -+++ b/none/tests/pselect_alarm.vgtest -@@ -0,0 +1,3 @@ -+prog: pselect_alarm -+vgopts: -q -+stderr_filter: filter_stderr -diff --git a/tests/filter_stderr_basic b/tests/filter_stderr_basic -index 472cd8f..4b6e480 100755 ---- a/tests/filter_stderr_basic -+++ b/tests/filter_stderr_basic -@@ -46,7 +46,7 @@ sed "/warning: line info addresses out of order/d" | - # of the bash process. Newer bash versions redirect such messages properly. - # Suppress any redirected abnormal termination messages. You can find the - # complete list of messages in the bash source file siglist.c. --perl -n -e 'print if !/^(Segmentation fault|Alarm clock|Aborted|Bus error)( \(core dumped\))?$/' | -+perl -n -e 'print if !/^(Segmentation fault|Alarm clock|Aborted|Bus error|Killed)( \(core dumped\))?$/' | - - # Similar as above, but for ksh on Solaris/illumos. - perl -n -e 'print if !/^(Memory fault|Killed) $/' | -Only in valgrind-3.11.0: autom4te.cache -diff -ru valgrind-3.11.0.orig/none/tests/Makefile.in valgrind-3.11.0/none/tests/Makefile.in ---- valgrind-3.11.0.orig/none/tests/Makefile.in 2016-03-09 20:07:53.451112914 +0100 -+++ valgrind-3.11.0/none/tests/Makefile.in 2016-03-09 20:09:44.281584703 +0100 -@@ -151,7 +151,8 @@ - libvexmultiarch_test$(EXEEXT) manythreads$(EXEEXT) \ - mmap_fcntl_bug$(EXEEXT) munmap_exe$(EXEEXT) \ - map_unaligned$(EXEEXT) map_unmap$(EXEEXT) mq$(EXEEXT) \ -- pending$(EXEEXT) procfs-cmdline-exe$(EXEEXT) \ -+ pending$(EXEEXT) ppoll_alarm$(EXEEXT) \ -+ procfs-cmdline-exe$(EXEEXT) pselect_alarm$(EXEEXT) \ - pth_atfork1$(EXEEXT) pth_blockedsig$(EXEEXT) \ - pth_cancel1$(EXEEXT) pth_cancel2$(EXEEXT) \ - pth_cvsimple$(EXEEXT) pth_empty$(EXEEXT) pth_exit$(EXEEXT) \ -@@ -329,12 +330,18 @@ - pending_SOURCES = pending.c - pending_OBJECTS = pending.$(OBJEXT) - pending_LDADD = $(LDADD) -+ppoll_alarm_SOURCES = ppoll_alarm.c -+ppoll_alarm_OBJECTS = ppoll_alarm.$(OBJEXT) -+ppoll_alarm_DEPENDENCIES = - process_vm_readv_writev_SOURCES = process_vm_readv_writev.c - process_vm_readv_writev_OBJECTS = process_vm_readv_writev.$(OBJEXT) - process_vm_readv_writev_LDADD = $(LDADD) - procfs_cmdline_exe_SOURCES = procfs-cmdline-exe.c - procfs_cmdline_exe_OBJECTS = procfs-cmdline-exe.$(OBJEXT) - procfs_cmdline_exe_LDADD = $(LDADD) -+pselect_alarm_SOURCES = pselect_alarm.c -+pselect_alarm_OBJECTS = pselect_alarm.$(OBJEXT) -+pselect_alarm_DEPENDENCIES = - pth_atfork1_SOURCES = pth_atfork1.c - pth_atfork1_OBJECTS = pth_atfork1.$(OBJEXT) - pth_atfork1_DEPENDENCIES = -@@ -527,18 +534,18 @@ - $(gxx304_SOURCES) ifunc.c ioctl_moans.c libvex_test.c \ - $(libvexmultiarch_test_SOURCES) manythreads.c map_unaligned.c \ - map_unmap.c mmap_fcntl_bug.c mq.c munmap_exe.c nestedfns.c \ -- pending.c process_vm_readv_writev.c procfs-cmdline-exe.c \ -- pth_atfork1.c pth_blockedsig.c pth_cancel1.c pth_cancel2.c \ -- pth_cvsimple.c pth_empty.c pth_exit.c pth_exit2.c \ -- pth_mutexspeed.c pth_once.c pth_rwlock.c pth_stackalign.c \ -- rcrl.c readline1.c require-text-symbol.c res_search.c resolv.c \ -- rlimit64_nofile.c rlimit_nofile.c selfrun.c sem.c semlimit.c \ -- sha1_test.c shortpush.c shorts.c sigstackgrowth.c \ -- stackgrowth.c syscall-restart1.c syscall-restart2.c syslog.c \ -- system.c thread-exits.c threaded-fork.c threadederrno.c \ -- timestamp.c $(tls_SOURCES) $(tls_so_SOURCES) \ -- $(tls2_so_SOURCES) unit_debuglog.c \ -- $(valgrind_cpp_test_SOURCES) vgprintf.c -+ pending.c ppoll_alarm.c process_vm_readv_writev.c \ -+ procfs-cmdline-exe.c pselect_alarm.c pth_atfork1.c \ -+ pth_blockedsig.c pth_cancel1.c pth_cancel2.c pth_cvsimple.c \ -+ pth_empty.c pth_exit.c pth_exit2.c pth_mutexspeed.c pth_once.c \ -+ pth_rwlock.c pth_stackalign.c rcrl.c readline1.c \ -+ require-text-symbol.c res_search.c resolv.c rlimit64_nofile.c \ -+ rlimit_nofile.c selfrun.c sem.c semlimit.c sha1_test.c \ -+ shortpush.c shorts.c sigstackgrowth.c stackgrowth.c \ -+ syscall-restart1.c syscall-restart2.c syslog.c system.c \ -+ thread-exits.c threaded-fork.c threadederrno.c timestamp.c \ -+ $(tls_SOURCES) $(tls_so_SOURCES) $(tls2_so_SOURCES) \ -+ unit_debuglog.c $(valgrind_cpp_test_SOURCES) vgprintf.c - DIST_SOURCES = ansi.c args.c async-sigs.c bitfield1.c bug129866.c \ - bug234814.c closeall.c $(coolo_sigaction_SOURCES) \ - coolo_strlen.c discard.c exec-sigmask.c execve.c faultstatus.c \ -@@ -548,18 +555,18 @@ - $(gxx304_SOURCES) ifunc.c ioctl_moans.c libvex_test.c \ - $(libvexmultiarch_test_SOURCES) manythreads.c map_unaligned.c \ - map_unmap.c mmap_fcntl_bug.c mq.c munmap_exe.c nestedfns.c \ -- pending.c process_vm_readv_writev.c procfs-cmdline-exe.c \ -- pth_atfork1.c pth_blockedsig.c pth_cancel1.c pth_cancel2.c \ -- pth_cvsimple.c pth_empty.c pth_exit.c pth_exit2.c \ -- pth_mutexspeed.c pth_once.c pth_rwlock.c pth_stackalign.c \ -- rcrl.c readline1.c require-text-symbol.c res_search.c resolv.c \ -- rlimit64_nofile.c rlimit_nofile.c selfrun.c sem.c semlimit.c \ -- sha1_test.c shortpush.c shorts.c sigstackgrowth.c \ -- stackgrowth.c syscall-restart1.c syscall-restart2.c syslog.c \ -- system.c thread-exits.c threaded-fork.c threadederrno.c \ -- timestamp.c $(tls_SOURCES) $(tls_so_SOURCES) \ -- $(tls2_so_SOURCES) unit_debuglog.c \ -- $(valgrind_cpp_test_SOURCES) vgprintf.c -+ pending.c ppoll_alarm.c process_vm_readv_writev.c \ -+ procfs-cmdline-exe.c pselect_alarm.c pth_atfork1.c \ -+ pth_blockedsig.c pth_cancel1.c pth_cancel2.c pth_cvsimple.c \ -+ pth_empty.c pth_exit.c pth_exit2.c pth_mutexspeed.c pth_once.c \ -+ pth_rwlock.c pth_stackalign.c rcrl.c readline1.c \ -+ require-text-symbol.c res_search.c resolv.c rlimit64_nofile.c \ -+ rlimit_nofile.c selfrun.c sem.c semlimit.c sha1_test.c \ -+ shortpush.c shorts.c sigstackgrowth.c stackgrowth.c \ -+ syscall-restart1.c syscall-restart2.c syslog.c system.c \ -+ thread-exits.c threaded-fork.c threadederrno.c timestamp.c \ -+ $(tls_SOURCES) $(tls_so_SOURCES) $(tls2_so_SOURCES) \ -+ unit_debuglog.c $(valgrind_cpp_test_SOURCES) vgprintf.c - RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \ - ctags-recursive dvi-recursive html-recursive info-recursive \ - install-data-recursive install-dvi-recursive \ -@@ -1072,12 +1079,14 @@ - nestedfns.stderr.exp nestedfns.stdout.exp nestedfns.vgtest \ - nodir.stderr.exp nodir.vgtest \ - pending.stdout.exp pending.stderr.exp pending.vgtest \ -+ ppoll_alarm.stdout.exp ppoll_alarm.stderr.exp ppoll_alarm.vgtest \ - procfs-linux.stderr.exp-with-readlinkat \ - procfs-linux.stderr.exp-without-readlinkat \ - procfs-linux.vgtest \ - procfs-non-linux.vgtest \ - procfs-non-linux.stderr.exp-with-readlinkat \ - procfs-non-linux.stderr.exp-without-readlinkat \ -+ pselect_alarm.stdout.exp pselect_alarm.stderr.exp pselect_alarm.vgtest \ - pth_atfork1.stderr.exp pth_atfork1.stdout.exp pth_atfork1.vgtest \ - pth_blockedsig.stderr.exp \ - pth_blockedsig.stdout.exp pth_blockedsig.vgtest \ -@@ -1152,6 +1161,8 @@ - ../../VEX/libvex-@VGCONF_ARCH_PRI@-@VGCONF_OS@.a @LIB_UBSAN@ - - libvexmultiarch_test_SOURCES = libvex_test.c -+ppoll_alarm_LDADD = -lpthread -+pselect_alarm_LDADD = -lpthread - pth_atfork1_LDADD = -lpthread - pth_blockedsig_LDADD = -lpthread - pth_cancel1_CFLAGS = $(AM_CFLAGS) -Wno-shadow -@@ -1390,6 +1401,10 @@ - @rm -f pending$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(pending_OBJECTS) $(pending_LDADD) $(LIBS) - -+ppoll_alarm$(EXEEXT): $(ppoll_alarm_OBJECTS) $(ppoll_alarm_DEPENDENCIES) $(EXTRA_ppoll_alarm_DEPENDENCIES) -+ @rm -f ppoll_alarm$(EXEEXT) -+ $(AM_V_CCLD)$(LINK) $(ppoll_alarm_OBJECTS) $(ppoll_alarm_LDADD) $(LIBS) -+ - process_vm_readv_writev$(EXEEXT): $(process_vm_readv_writev_OBJECTS) $(process_vm_readv_writev_DEPENDENCIES) $(EXTRA_process_vm_readv_writev_DEPENDENCIES) - @rm -f process_vm_readv_writev$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(process_vm_readv_writev_OBJECTS) $(process_vm_readv_writev_LDADD) $(LIBS) -@@ -1398,6 +1413,10 @@ - @rm -f procfs-cmdline-exe$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(procfs_cmdline_exe_OBJECTS) $(procfs_cmdline_exe_LDADD) $(LIBS) - -+pselect_alarm$(EXEEXT): $(pselect_alarm_OBJECTS) $(pselect_alarm_DEPENDENCIES) $(EXTRA_pselect_alarm_DEPENDENCIES) -+ @rm -f pselect_alarm$(EXEEXT) -+ $(AM_V_CCLD)$(LINK) $(pselect_alarm_OBJECTS) $(pselect_alarm_LDADD) $(LIBS) -+ - pth_atfork1$(EXEEXT): $(pth_atfork1_OBJECTS) $(pth_atfork1_DEPENDENCIES) $(EXTRA_pth_atfork1_DEPENDENCIES) - @rm -f pth_atfork1$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(pth_atfork1_OBJECTS) $(pth_atfork1_LDADD) $(LIBS) -@@ -1607,8 +1626,10 @@ - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/munmap_exe.Po@am__quote@ - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nestedfns-nestedfns.Po@am__quote@ - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pending.Po@am__quote@ -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ppoll_alarm.Po@am__quote@ - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/process_vm_readv_writev.Po@am__quote@ - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/procfs-cmdline-exe.Po@am__quote@ -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pselect_alarm.Po@am__quote@ - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pth_atfork1.Po@am__quote@ - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pth_blockedsig.Po@am__quote@ - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pth_cancel1-pth_cancel1.Po@am__quote@ -commit 8c67aa7a7fb1a125e75937ad438d5f9a8fd20c5d -Author: mjw -Date: Tue Jun 21 19:58:21 2016 +0000 - - Bug 364413 pselect sycallwrapper mishandles NULL sigmask. - - Don't check or try to copy sigmask if it is NULL. The sigmask might be - given in a struct, where the length is non-zero, but the signal set - pointer is NULL. - - Testcase provided by Paul Eggert . - - git-svn-id: svn://svn.valgrind.org/valgrind/trunk@15893 a5019735-40e9-0310-863c-91ae7b9d1cf9 - -diff --git a/coregrind/m_syswrap/syswrap-linux.c b/coregrind/m_syswrap/syswrap-linux.c -index 24a5ae9..9ace4fd 100644 ---- a/coregrind/m_syswrap/syswrap-linux.c -+++ b/coregrind/m_syswrap/syswrap-linux.c -@@ -1316,11 +1316,15 @@ PRE(sys_pselect6) - pas->ss.ss = (void *)1; - pas->ss.ss_len = pss->ss_len; - if (pss->ss_len == sizeof(*pss->ss)) { -- PRE_MEM_READ("pselect6(sig->ss)", (Addr)pss->ss, pss->ss_len); -- if (ML_(safe_to_deref)(pss->ss, sizeof(*pss->ss))) { -- pas->adjusted_ss = *pss->ss; -- pas->ss.ss = &pas->adjusted_ss; -- VG_(sanitize_client_sigmask)(&pas->adjusted_ss); -+ if (pss->ss == NULL) { -+ pas->ss.ss = NULL; -+ } else { -+ PRE_MEM_READ("pselect6(sig->ss)", (Addr)pss->ss, pss->ss_len); -+ if (ML_(safe_to_deref)(pss->ss, sizeof(*pss->ss))) { -+ pas->adjusted_ss = *pss->ss; -+ pas->ss.ss = &pas->adjusted_ss; -+ VG_(sanitize_client_sigmask)(&pas->adjusted_ss); -+ } - } - } - } -diff --git a/none/tests/Makefile.am b/none/tests/Makefile.am -index 0e11492..684c1af 100644 ---- a/none/tests/Makefile.am -+++ b/none/tests/Makefile.am -@@ -150,6 +150,8 @@ EXTRA_DIST = \ - procfs-non-linux.stderr.exp-with-readlinkat \ - procfs-non-linux.stderr.exp-without-readlinkat \ - pselect_alarm.stdout.exp pselect_alarm.stderr.exp pselect_alarm.vgtest \ -+ pselect_signask_null.vgtest \ -+ pselect_sigmask_null.stdout.exp pselect_sigmask_null.stderr.exp \ - pth_atfork1.stderr.exp pth_atfork1.stdout.exp pth_atfork1.vgtest \ - pth_blockedsig.stderr.exp \ - pth_blockedsig.stdout.exp pth_blockedsig.vgtest \ -@@ -222,6 +222,7 @@ - ppoll_alarm \ - procfs-cmdline-exe \ - pselect_alarm \ -+ pselect_sigmask_null \ - pth_atfork1 pth_blockedsig pth_cancel1 pth_cancel2 pth_cvsimple \ - pth_empty pth_exit pth_exit2 pth_mutexspeed pth_once pth_rwlock \ - pth_stackalign \ -diff --git a/none/tests/pselect_sigmask_null.c b/none/tests/pselect_sigmask_null.c -new file mode 100644 -index 0000000..34bd584 ---- /dev/null -+++ b/none/tests/pselect_sigmask_null.c -@@ -0,0 +1,26 @@ -+/* Make sure handling of NULL sigmask is correct. -+ https://bugs.kde.org/show_bug.cgi?id=XXX -+ We might try to make a copy and adjust the mask. -+ Testcase provided by Paul Eggert */ -+ -+#include -+#include -+#include -+ -+int -+main (void) -+{ -+ struct timespec timeout; -+ timeout.tv_sec = 1; -+ timeout.tv_nsec = 0; -+ switch (pselect (0, 0, 0, 0, &timeout, 0)) -+ { -+ default: -+ abort (); -+ case -1: -+ perror ("pselect"); -+ return 1; -+ case 0: -+ return 0; -+ } -+} -diff --git a/none/tests/pselect_sigmask_null.stderr.exp b/none/tests/pselect_sigmask_null.stderr.exp -new file mode 100644 -index 0000000..e69de29 -diff --git a/none/tests/pselect_sigmask_null.stdout.exp b/none/tests/pselect_sigmask_null.stdout.exp -new file mode 100644 -index 0000000..e69de29 -diff --git a/none/tests/pselect_sigmask_null.vgtest b/none/tests/pselect_sigmask_null.vgtest -new file mode 100644 -index 0000000..e59688c ---- /dev/null -+++ b/none/tests/pselect_sigmask_null.vgtest -@@ -0,0 +1,2 @@ -+prog: pselect_sigmask_null -+vgopts: -q - -commit d41bebeb1e561ddfac17d9be65b29aa5bb3ebaf8 -Author: mjw -Date: Tue Jun 21 21:06:27 2016 +0000 - - Bug 364413 followup - fix signask -> sigmask typo in EXTRA_DIST - - git-svn-id: svn://svn.valgrind.org/valgrind/trunk@15894 a5019735-40e9-0310-863c-91ae7b9d1cf9 - -diff --git a/none/tests/Makefile.am b/none/tests/Makefile.am -index 684c1af..7059e67 100644 ---- a/none/tests/Makefile.am -+++ b/none/tests/Makefile.am -@@ -150,7 +150,7 @@ EXTRA_DIST = \ - procfs-non-linux.stderr.exp-with-readlinkat \ - procfs-non-linux.stderr.exp-without-readlinkat \ - pselect_alarm.stdout.exp pselect_alarm.stderr.exp pselect_alarm.vgtest \ -- pselect_signask_null.vgtest \ -+ pselect_sigmask_null.vgtest \ - pselect_sigmask_null.stdout.exp pselect_sigmask_null.stderr.exp \ - pth_atfork1.stderr.exp pth_atfork1.stdout.exp pth_atfork1.vgtest \ - pth_blockedsig.stderr.exp \ -Only in valgrind-3.11.0: autom4te.cache -diff -ur valgrind-3.11.0.orig/none/tests/Makefile.in valgrind-3.11.0/none/tests/Makefile.in ---- valgrind-3.11.0.orig/none/tests/Makefile.in 2016-06-22 01:12:05.241643238 +0200 -+++ valgrind-3.11.0/none/tests/Makefile.in 2016-06-22 01:16:22.545150491 +0200 -@@ -153,12 +153,12 @@ - map_unaligned$(EXEEXT) map_unmap$(EXEEXT) mq$(EXEEXT) \ - pending$(EXEEXT) ppoll_alarm$(EXEEXT) \ - procfs-cmdline-exe$(EXEEXT) pselect_alarm$(EXEEXT) \ -- pth_atfork1$(EXEEXT) pth_blockedsig$(EXEEXT) \ -- pth_cancel1$(EXEEXT) pth_cancel2$(EXEEXT) \ -- pth_cvsimple$(EXEEXT) pth_empty$(EXEEXT) pth_exit$(EXEEXT) \ -- pth_exit2$(EXEEXT) pth_mutexspeed$(EXEEXT) pth_once$(EXEEXT) \ -- pth_rwlock$(EXEEXT) pth_stackalign$(EXEEXT) rcrl$(EXEEXT) \ -- readline1$(EXEEXT) require-text-symbol$(EXEEXT) \ -+ pselect_sigmask_null$(EXEEXT) pth_atfork1$(EXEEXT) \ -+ pth_blockedsig$(EXEEXT) pth_cancel1$(EXEEXT) \ -+ pth_cancel2$(EXEEXT) pth_cvsimple$(EXEEXT) pth_empty$(EXEEXT) \ -+ pth_exit$(EXEEXT) pth_exit2$(EXEEXT) pth_mutexspeed$(EXEEXT) \ -+ pth_once$(EXEEXT) pth_rwlock$(EXEEXT) pth_stackalign$(EXEEXT) \ -+ rcrl$(EXEEXT) readline1$(EXEEXT) require-text-symbol$(EXEEXT) \ - res_search$(EXEEXT) resolv$(EXEEXT) rlimit_nofile$(EXEEXT) \ - selfrun$(EXEEXT) sem$(EXEEXT) semlimit$(EXEEXT) \ - sha1_test$(EXEEXT) shortpush$(EXEEXT) shorts$(EXEEXT) \ -@@ -342,6 +342,9 @@ - pselect_alarm_SOURCES = pselect_alarm.c - pselect_alarm_OBJECTS = pselect_alarm.$(OBJEXT) - pselect_alarm_DEPENDENCIES = -+pselect_sigmask_null_SOURCES = pselect_sigmask_null.c -+pselect_sigmask_null_OBJECTS = pselect_sigmask_null.$(OBJEXT) -+pselect_sigmask_null_LDADD = $(LDADD) - pth_atfork1_SOURCES = pth_atfork1.c - pth_atfork1_OBJECTS = pth_atfork1.$(OBJEXT) - pth_atfork1_DEPENDENCIES = -@@ -535,17 +538,18 @@ - $(libvexmultiarch_test_SOURCES) manythreads.c map_unaligned.c \ - map_unmap.c mmap_fcntl_bug.c mq.c munmap_exe.c nestedfns.c \ - pending.c ppoll_alarm.c process_vm_readv_writev.c \ -- procfs-cmdline-exe.c pselect_alarm.c pth_atfork1.c \ -- pth_blockedsig.c pth_cancel1.c pth_cancel2.c pth_cvsimple.c \ -- pth_empty.c pth_exit.c pth_exit2.c pth_mutexspeed.c pth_once.c \ -- pth_rwlock.c pth_stackalign.c rcrl.c readline1.c \ -- require-text-symbol.c res_search.c resolv.c rlimit64_nofile.c \ -- rlimit_nofile.c selfrun.c sem.c semlimit.c sha1_test.c \ -- shortpush.c shorts.c sigstackgrowth.c stackgrowth.c \ -- syscall-restart1.c syscall-restart2.c syslog.c system.c \ -- thread-exits.c threaded-fork.c threadederrno.c timestamp.c \ -- $(tls_SOURCES) $(tls_so_SOURCES) $(tls2_so_SOURCES) \ -- unit_debuglog.c $(valgrind_cpp_test_SOURCES) vgprintf.c -+ procfs-cmdline-exe.c pselect_alarm.c pselect_sigmask_null.c \ -+ pth_atfork1.c pth_blockedsig.c pth_cancel1.c pth_cancel2.c \ -+ pth_cvsimple.c pth_empty.c pth_exit.c pth_exit2.c \ -+ pth_mutexspeed.c pth_once.c pth_rwlock.c pth_stackalign.c \ -+ rcrl.c readline1.c require-text-symbol.c res_search.c resolv.c \ -+ rlimit64_nofile.c rlimit_nofile.c selfrun.c sem.c semlimit.c \ -+ sha1_test.c shortpush.c shorts.c sigstackgrowth.c \ -+ stackgrowth.c syscall-restart1.c syscall-restart2.c syslog.c \ -+ system.c thread-exits.c threaded-fork.c threadederrno.c \ -+ timestamp.c $(tls_SOURCES) $(tls_so_SOURCES) \ -+ $(tls2_so_SOURCES) unit_debuglog.c \ -+ $(valgrind_cpp_test_SOURCES) vgprintf.c - DIST_SOURCES = ansi.c args.c async-sigs.c bitfield1.c bug129866.c \ - bug234814.c closeall.c $(coolo_sigaction_SOURCES) \ - coolo_strlen.c discard.c exec-sigmask.c execve.c faultstatus.c \ -@@ -556,17 +560,18 @@ - $(libvexmultiarch_test_SOURCES) manythreads.c map_unaligned.c \ - map_unmap.c mmap_fcntl_bug.c mq.c munmap_exe.c nestedfns.c \ - pending.c ppoll_alarm.c process_vm_readv_writev.c \ -- procfs-cmdline-exe.c pselect_alarm.c pth_atfork1.c \ -- pth_blockedsig.c pth_cancel1.c pth_cancel2.c pth_cvsimple.c \ -- pth_empty.c pth_exit.c pth_exit2.c pth_mutexspeed.c pth_once.c \ -- pth_rwlock.c pth_stackalign.c rcrl.c readline1.c \ -- require-text-symbol.c res_search.c resolv.c rlimit64_nofile.c \ -- rlimit_nofile.c selfrun.c sem.c semlimit.c sha1_test.c \ -- shortpush.c shorts.c sigstackgrowth.c stackgrowth.c \ -- syscall-restart1.c syscall-restart2.c syslog.c system.c \ -- thread-exits.c threaded-fork.c threadederrno.c timestamp.c \ -- $(tls_SOURCES) $(tls_so_SOURCES) $(tls2_so_SOURCES) \ -- unit_debuglog.c $(valgrind_cpp_test_SOURCES) vgprintf.c -+ procfs-cmdline-exe.c pselect_alarm.c pselect_sigmask_null.c \ -+ pth_atfork1.c pth_blockedsig.c pth_cancel1.c pth_cancel2.c \ -+ pth_cvsimple.c pth_empty.c pth_exit.c pth_exit2.c \ -+ pth_mutexspeed.c pth_once.c pth_rwlock.c pth_stackalign.c \ -+ rcrl.c readline1.c require-text-symbol.c res_search.c resolv.c \ -+ rlimit64_nofile.c rlimit_nofile.c selfrun.c sem.c semlimit.c \ -+ sha1_test.c shortpush.c shorts.c sigstackgrowth.c \ -+ stackgrowth.c syscall-restart1.c syscall-restart2.c syslog.c \ -+ system.c thread-exits.c threaded-fork.c threadederrno.c \ -+ timestamp.c $(tls_SOURCES) $(tls_so_SOURCES) \ -+ $(tls2_so_SOURCES) unit_debuglog.c \ -+ $(valgrind_cpp_test_SOURCES) vgprintf.c - RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \ - ctags-recursive dvi-recursive html-recursive info-recursive \ - install-data-recursive install-dvi-recursive \ -@@ -1087,6 +1092,8 @@ - procfs-non-linux.stderr.exp-with-readlinkat \ - procfs-non-linux.stderr.exp-without-readlinkat \ - pselect_alarm.stdout.exp pselect_alarm.stderr.exp pselect_alarm.vgtest \ -+ pselect_sigmask_null.vgtest \ -+ pselect_sigmask_null.stdout.exp pselect_sigmask_null.stderr.exp \ - pth_atfork1.stderr.exp pth_atfork1.stdout.exp pth_atfork1.vgtest \ - pth_blockedsig.stderr.exp \ - pth_blockedsig.stdout.exp pth_blockedsig.vgtest \ -@@ -1417,6 +1424,10 @@ - @rm -f pselect_alarm$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(pselect_alarm_OBJECTS) $(pselect_alarm_LDADD) $(LIBS) - -+pselect_sigmask_null$(EXEEXT): $(pselect_sigmask_null_OBJECTS) $(pselect_sigmask_null_DEPENDENCIES) $(EXTRA_pselect_sigmask_null_DEPENDENCIES) -+ @rm -f pselect_sigmask_null$(EXEEXT) -+ $(AM_V_CCLD)$(LINK) $(pselect_sigmask_null_OBJECTS) $(pselect_sigmask_null_LDADD) $(LIBS) -+ - pth_atfork1$(EXEEXT): $(pth_atfork1_OBJECTS) $(pth_atfork1_DEPENDENCIES) $(EXTRA_pth_atfork1_DEPENDENCIES) - @rm -f pth_atfork1$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(pth_atfork1_OBJECTS) $(pth_atfork1_LDADD) $(LIBS) -@@ -1630,6 +1641,7 @@ - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/process_vm_readv_writev.Po@am__quote@ - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/procfs-cmdline-exe.Po@am__quote@ - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pselect_alarm.Po@am__quote@ -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pselect_sigmask_null.Po@am__quote@ - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pth_atfork1.Po@am__quote@ - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pth_blockedsig.Po@am__quote@ - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pth_cancel1-pth_cancel1.Po@am__quote@ diff --git a/SOURCES/valgrind-3.11.0-pthread_barrier.patch b/SOURCES/valgrind-3.11.0-pthread_barrier.patch deleted file mode 100644 index 5942115..0000000 --- a/SOURCES/valgrind-3.11.0-pthread_barrier.patch +++ /dev/null @@ -1,757 +0,0 @@ -commit f4d91a5df8b749c6cdfec25e38a44c02c90ad4be -Author: Mark Wielaard -Date: Tue Jan 19 15:13:47 2016 +0100 - - Bug #358213 helgrind/drd pthread_barrier tests vs new glibc implementation - - glibc 2.23 will have a new pthread_barrier implementation. - This implementation reacts differently on bad usage of barriers. - Because of this the bar_bad testcase will hang indefinitely. - In particular pthread_barrier_destroy will hang when there are - still other threads waiting on a barrier. To solve this we add - extra threads to will "unblock" the hanging destroy by sleeping - for a while and then also waiting on the barrier, which will unblock - the destroy operation. Or if this is the last test, just exit - the whole program since we are done anyway. Also newer glibc is - more picky about destroying uninitialized barriers, we would crash - when zero filling, so we now one fill. Which doesn't crash, but - depending on glibc version might return an error or hang. Since - depending on version we now get slightly different error reports - there are now alternative exp files. - - Tested against glibc 2.17, glibc 2.22 and glibc 2.23-prerelease. - -diff --git a/drd/tests/Makefile.am b/drd/tests/Makefile.am -index 2885391..cfd74d0 100644 ---- a/drd/tests/Makefile.am -+++ b/drd/tests/Makefile.am -@@ -81,8 +81,10 @@ EXTRA_DIST = \ - atomic_var.stderr.exp \ - atomic_var.vgtest \ - bar_bad.stderr.exp \ -+ bar_bad.stderr.exp-nohang \ - bar_bad.vgtest \ - bar_bad_xml.stderr.exp \ -+ bar_bad_xml.stderr.exp-nohang \ - bar_bad_xml.vgtest \ - bar_trivial.stderr.exp \ - bar_trivial.stdout.exp \ -diff --git a/drd/tests/bar_bad.stderr.exp b/drd/tests/bar_bad.stderr.exp -index 75f121f..3581b08 100644 ---- a/drd/tests/bar_bad.stderr.exp -+++ b/drd/tests/bar_bad.stderr.exp -@@ -34,16 +34,5 @@ barrier 0x........ was first observed at: - - - destroy a barrier that was never initialised --Not a barrier -- at 0x........: pthread_barrier_destroy (drd_pthread_intercepts.c:?) -- by 0x........: main (bar_bad.c:?) -- --Destruction of barrier that is being waited upon: barrier 0x........ -- at 0x........: free (vg_replace_malloc.c:...) -- by 0x........: main (bar_bad.c:?) --barrier 0x........ was first observed at: -- at 0x........: pthread_barrier_init (drd_pthread_intercepts.c:?) -- by 0x........: main (bar_bad.c:?) -- - --ERROR SUMMARY: 7 errors from 6 contexts (suppressed: 0 from 0) -+ERROR SUMMARY: 5 errors from 4 contexts (suppressed: 0 from 0) -diff --git a/drd/tests/bar_bad.stderr.exp-nohang b/drd/tests/bar_bad.stderr.exp-nohang -new file mode 100644 -index 0000000..44f9651 ---- /dev/null -+++ b/drd/tests/bar_bad.stderr.exp-nohang -@@ -0,0 +1,42 @@ -+ -+ -+initialise a barrier with zero count -+pthread_barrier_init: 'count' argument is zero: barrier 0x........ -+ at 0x........: pthread_barrier_init (drd_pthread_intercepts.c:?) -+ by 0x........: main (bar_bad.c:?) -+ -+ -+initialise a barrier twice -+Barrier reinitialization: barrier 0x........ -+ at 0x........: pthread_barrier_init (drd_pthread_intercepts.c:?) -+ by 0x........: main (bar_bad.c:?) -+barrier 0x........ was first observed at: -+ at 0x........: pthread_barrier_init (drd_pthread_intercepts.c:?) -+ by 0x........: main (bar_bad.c:?) -+ -+ -+initialise a barrier which has threads waiting on it -+Barrier reinitialization: barrier 0x........ -+ at 0x........: pthread_barrier_init (drd_pthread_intercepts.c:?) -+ by 0x........: main (bar_bad.c:?) -+barrier 0x........ was first observed at: -+ at 0x........: pthread_barrier_init (drd_pthread_intercepts.c:?) -+ by 0x........: main (bar_bad.c:?) -+ -+ -+destroy a barrier that has waiting threads -+Destruction of a barrier with active waiters: barrier 0x........ -+ at 0x........: pthread_barrier_destroy (drd_pthread_intercepts.c:?) -+ by 0x........: main (bar_bad.c:?) -+barrier 0x........ was first observed at: -+ at 0x........: pthread_barrier_init (drd_pthread_intercepts.c:?) -+ by 0x........: main (bar_bad.c:?) -+ -+ -+destroy a barrier that was never initialised -+Not a barrier -+ at 0x........: pthread_barrier_destroy (drd_pthread_intercepts.c:?) -+ by 0x........: main (bar_bad.c:?) -+ -+ -+ERROR SUMMARY: 6 errors from 5 contexts (suppressed: 0 from 0) -diff --git a/drd/tests/bar_bad_xml.stderr.exp b/drd/tests/bar_bad_xml.stderr.exp -index acb9656..8539f75 100644 ---- a/drd/tests/bar_bad_xml.stderr.exp -+++ b/drd/tests/bar_bad_xml.stderr.exp -@@ -204,78 +204,6 @@ destroy a barrier that has waiting threads - - - destroy a barrier that was never initialised -- -- 0x........ -- ... -- GenericErr -- Not a barrier -- -- -- 0x........ -- ... -- pthread_barrier_destroy -- ... -- drd_pthread_intercepts.c -- ... -- -- -- 0x........ -- ... -- main -- ... -- bar_bad.c -- ... -- -- -- -- -- -- 0x........ -- ... -- BarrierErr -- Destruction of barrier that is being waited upon: barrier 0x........ -- -- -- 0x........ -- ... -- free -- ... -- vg_replace_malloc.c -- ... -- -- -- 0x........ -- ... -- main -- ... -- bar_bad.c -- ... -- -- -- -- barrier --
0x........
-- -- -- 0x........ -- ... -- pthread_barrier_init -- ... -- drd_pthread_intercepts.c -- ... -- -- -- 0x........ -- ... -- main -- ... -- bar_bad.c -- ... -- -- --
--
-- - - - FINISHED -@@ -299,14 +227,6 @@ destroy a barrier that was never initialised - ... - 0x........ - -- -- ... -- 0x........ -- -- -- ... -- 0x........ -- - - - ... -diff --git a/drd/tests/bar_bad_xml.stderr.exp-nohang b/drd/tests/bar_bad_xml.stderr.exp-nohang -new file mode 100644 -index 0000000..a47cd60 ---- /dev/null -+++ b/drd/tests/bar_bad_xml.stderr.exp-nohang -@@ -0,0 +1,264 @@ -+ -+ -+ -+ -+4 -+drd -+ -+ -+ ... -+ ... -+ ... -+ ... -+ -+ -+... -+... -+drd -+ -+ -+ ... -+ -+ ./../../helgrind/tests/bar_bad -+ -+ -+ -+ -+ RUNNING -+ -+ -+ -+ -+initialise a barrier with zero count -+ -+ 0x........ -+ ... -+ BarrierErr -+ pthread_barrier_init: 'count' argument is zero: barrier 0x........ -+ -+ -+ 0x........ -+ ... -+ pthread_barrier_init -+ ... -+ drd_pthread_intercepts.c -+ ... -+ -+ -+ 0x........ -+ ... -+ main -+ ... -+ bar_bad.c -+ ... -+ -+ -+ -+ -+ -+initialise a barrier twice -+ -+ 0x........ -+ ... -+ BarrierErr -+ Barrier reinitialization: barrier 0x........ -+ -+ -+ 0x........ -+ ... -+ pthread_barrier_init -+ ... -+ drd_pthread_intercepts.c -+ ... -+ -+ -+ 0x........ -+ ... -+ main -+ ... -+ bar_bad.c -+ ... -+ -+ -+ -+ barrier -+
0x........
-+ -+ -+ 0x........ -+ ... -+ pthread_barrier_init -+ ... -+ drd_pthread_intercepts.c -+ ... -+ -+ -+ 0x........ -+ ... -+ main -+ ... -+ bar_bad.c -+ ... -+ -+ -+
-+
-+ -+ -+initialise a barrier which has threads waiting on it -+ -+ 0x........ -+ ... -+ BarrierErr -+ Barrier reinitialization: barrier 0x........ -+ -+ -+ 0x........ -+ ... -+ pthread_barrier_init -+ ... -+ drd_pthread_intercepts.c -+ ... -+ -+ -+ 0x........ -+ ... -+ main -+ ... -+ bar_bad.c -+ ... -+ -+ -+ -+ barrier -+
0x........
-+ -+ -+ 0x........ -+ ... -+ pthread_barrier_init -+ ... -+ drd_pthread_intercepts.c -+ ... -+ -+ -+ 0x........ -+ ... -+ main -+ ... -+ bar_bad.c -+ ... -+ -+ -+
-+
-+ -+ -+destroy a barrier that has waiting threads -+ -+ 0x........ -+ ... -+ BarrierErr -+ Destruction of a barrier with active waiters: barrier 0x........ -+ -+ -+ 0x........ -+ ... -+ pthread_barrier_destroy -+ ... -+ drd_pthread_intercepts.c -+ ... -+ -+ -+ 0x........ -+ ... -+ main -+ ... -+ bar_bad.c -+ ... -+ -+ -+ -+ barrier -+
0x........
-+ -+ -+ 0x........ -+ ... -+ pthread_barrier_init -+ ... -+ drd_pthread_intercepts.c -+ ... -+ -+ -+ 0x........ -+ ... -+ main -+ ... -+ bar_bad.c -+ ... -+ -+ -+
-+
-+ -+ -+destroy a barrier that was never initialised -+ -+ 0x........ -+ ... -+ GenericErr -+ Not a barrier -+ -+ -+ 0x........ -+ ... -+ pthread_barrier_destroy -+ ... -+ drd_pthread_intercepts.c -+ ... -+ -+ -+ 0x........ -+ ... -+ main -+ ... -+ bar_bad.c -+ ... -+ -+ -+ -+ -+ -+ -+ FINISHED -+ -+ -+ -+ -+ -+ ... -+ 0x........ -+ -+ -+ ... -+ 0x........ -+ -+ -+ ... -+ 0x........ -+ -+ -+ ... -+ 0x........ -+ -+ -+ ... -+ 0x........ -+ -+ -+ -+... -+ -+
-+ -diff --git a/helgrind/tests/Makefile.am b/helgrind/tests/Makefile.am -index 8a0d6e6..df82169 100644 ---- a/helgrind/tests/Makefile.am -+++ b/helgrind/tests/Makefile.am -@@ -19,6 +19,7 @@ EXTRA_DIST = \ - cond_timedwait_test.vgtest cond_timedwait_test.stdout.exp \ - cond_timedwait_test.stderr.exp \ - bar_bad.vgtest bar_bad.stdout.exp bar_bad.stderr.exp \ -+ bar_bad.stderr.exp-destroy-hang \ - bar_trivial.vgtest bar_trivial.stdout.exp bar_trivial.stderr.exp \ - free_is_write.vgtest free_is_write.stdout.exp \ - free_is_write.stderr.exp \ -diff --git a/helgrind/tests/bar_bad.c b/helgrind/tests/bar_bad.c -index dd6079c..424ae2f 100644 ---- a/helgrind/tests/bar_bad.c -+++ b/helgrind/tests/bar_bad.c -@@ -15,23 +15,27 @@ void* child1 ( void* arg ) - return NULL; - } - -+void *sleep1 ( void* arg ) -+{ -+ /* Long sleep, we hope to never trigger. */ -+ sleep (6); -+ pthread_barrier_wait ( (pthread_barrier_t*)arg ); -+ return NULL; -+} -+ -+void *exit1 ( void* arg ) -+{ -+ /* Sleep a bit, then exit, we are done. */ -+ sleep (1); -+ exit (0); -+ return NULL; -+} -+ - int main ( void ) - { - pthread_barrier_t *bar1, *bar2, *bar3, *bar4, *bar5; -- pthread_t thr1, thr2; - int r; -- -- /* possibly set up a watchdog timer thread here. */ -- -- -- -- -- -- -- -- -- -- -+ pthread_t thr1, thr2, slp1, slp2, ext1; - - /* initialise a barrier with a zero count */ - fprintf(stderr, "\ninitialise a barrier with zero count\n"); -@@ -49,6 +53,9 @@ int main ( void ) - fprintf(stderr, "\ninitialise a barrier which has threads waiting on it\n"); - bar3 = malloc(sizeof(pthread_barrier_t)); - pthread_barrier_init(bar3, NULL, 2); -+ /* create a thread, whose purpose is to "unblock" the barrier after -+ some sleeping in case it keeps being blocked. */ -+ pthread_create(&slp1, NULL, sleep1, (void*)bar3); - /* create a thread, whose only purpose is to block on the barrier */ - pthread_create(&thr1, NULL, child1, (void*)bar3); - /* guarantee that it gets there first */ -@@ -61,6 +68,12 @@ int main ( void ) - /* once again, create a thread, whose only purpose is to block. */ - bar4 = malloc(sizeof(pthread_barrier_t)); - pthread_barrier_init(bar4, NULL, 2); -+ /* create a thread, whose purpose is to "unblock" the barrier after -+ some sleeping in case it keeps being blocked. We hope it isn't -+ needed, but if it is, because pthread_barier_destroy hangs -+ and we will get an extra warning about the barrier being already -+ destroyed. */ -+ pthread_create(&slp2, NULL, sleep1, (void*)bar4); - /* create a thread, whose only purpose is to block on the barrier */ - pthread_create(&thr2, NULL, child1, (void*)bar4); - /* guarantee that it gets there first */ -@@ -70,13 +83,16 @@ int main ( void ) - - /* destroy a barrier that was never initialised. This is a bit - tricky, in that we have to fill the barrier with bytes which -- ensure that the pthread_barrier_destroy call doesn't hang for -- some reason. Zero-fill seems to work ok on amd64-linux (glibc -+ ensure that the pthread_barrier_destroy call doesn't crash for -+ some reason. One-fill seems to work ok on amd64-linux (glibc - 2.8). */ - fprintf(stderr, "\ndestroy a barrier that was never initialised\n"); -+ /* Create a thread that just exits the process after some sleep. -+ We are really done at this point, even if we hang. */ -+ pthread_create(&ext1, NULL, exit1, NULL); - bar5 = malloc(sizeof(pthread_barrier_t)); - assert(bar5); -- memset(bar5, 0, sizeof(*bar5)); -+ memset(bar5, 1, sizeof(*bar5)); - pthread_barrier_destroy(bar5); - - /* now we need to clean up the mess .. */ -@@ -85,5 +101,6 @@ int main ( void ) - - free(bar1); free(bar2); free(bar3); free(bar4); free(bar5); - -- return 0; -+ /* Use exit, we want to kill any "sleeper threads". */ -+ exit (0); - } -diff --git a/helgrind/tests/bar_bad.stderr.exp b/helgrind/tests/bar_bad.stderr.exp -index 74af4fa..d0901b2 100644 ---- a/helgrind/tests/bar_bad.stderr.exp -+++ b/helgrind/tests/bar_bad.stderr.exp -@@ -8,14 +8,14 @@ Thread #x is the program's root thread - - Thread #x: pthread_barrier_init: 'count' argument is zero - at 0x........: pthread_barrier_init (hg_intercepts.c:...) -- by 0x........: main (bar_bad.c:39) -+ by 0x........: main (bar_bad.c:43) - - ---------------------------------------------------------------- - - Thread #x's call to pthread_barrier_init failed - with error code 22 (EINVAL: Invalid argument) - at 0x........: pthread_barrier_init (hg_intercepts.c:...) -- by 0x........: main (bar_bad.c:39) -+ by 0x........: main (bar_bad.c:43) - - - initialise a barrier twice -@@ -23,7 +23,7 @@ initialise a barrier twice - - Thread #x: pthread_barrier_init: barrier is already initialised - at 0x........: pthread_barrier_init (hg_intercepts.c:...) -- by 0x........: main (bar_bad.c:45) -+ by 0x........: main (bar_bad.c:49) - - - initialise a barrier which has threads waiting on it -@@ -31,13 +31,13 @@ initialise a barrier which has threads waiting on it - - Thread #x: pthread_barrier_init: barrier is already initialised - at 0x........: pthread_barrier_init (hg_intercepts.c:...) -- by 0x........: main (bar_bad.c:57) -+ by 0x........: main (bar_bad.c:64) - - ---------------------------------------------------------------- - - Thread #x: pthread_barrier_init: threads are waiting at barrier - at 0x........: pthread_barrier_init (hg_intercepts.c:...) -- by 0x........: main (bar_bad.c:57) -+ by 0x........: main (bar_bad.c:64) - - - destroy a barrier that has waiting threads -@@ -45,14 +45,14 @@ destroy a barrier that has waiting threads - - Thread #x: pthread_barrier_destroy: threads are waiting at barrier - at 0x........: pthread_barrier_destroy (hg_intercepts.c:...) -- by 0x........: main (bar_bad.c:69) -+ by 0x........: main (bar_bad.c:82) - - ---------------------------------------------------------------- - - Thread #x's call to pthread_barrier_destroy failed - with error code 16 (EBUSY: Device or resource busy) - at 0x........: pthread_barrier_destroy (hg_intercepts.c:...) -- by 0x........: main (bar_bad.c:69) -+ by 0x........: main (bar_bad.c:82) - - - destroy a barrier that was never initialised -@@ -60,5 +60,5 @@ destroy a barrier that was never initialised - - Thread #x: pthread_barrier_destroy: barrier was never initialised - at 0x........: pthread_barrier_destroy (hg_intercepts.c:...) -- by 0x........: main (bar_bad.c:80) -+ by 0x........: main (bar_bad.c:96) - -diff --git a/helgrind/tests/bar_bad.stderr.exp-destroy-hang b/helgrind/tests/bar_bad.stderr.exp-destroy-hang -new file mode 100644 -index 0000000..ddf5624 ---- /dev/null -+++ b/helgrind/tests/bar_bad.stderr.exp-destroy-hang -@@ -0,0 +1,72 @@ -+ -+initialise a barrier with zero count -+---Thread-Announcement------------------------------------------ -+ -+Thread #x is the program's root thread -+ -+---------------------------------------------------------------- -+ -+Thread #x: pthread_barrier_init: 'count' argument is zero -+ at 0x........: pthread_barrier_init (hg_intercepts.c:...) -+ by 0x........: main (bar_bad.c:43) -+ -+---------------------------------------------------------------- -+ -+Thread #x's call to pthread_barrier_init failed -+ with error code 22 (EINVAL: Invalid argument) -+ at 0x........: pthread_barrier_init (hg_intercepts.c:...) -+ by 0x........: main (bar_bad.c:43) -+ -+ -+initialise a barrier twice -+---------------------------------------------------------------- -+ -+Thread #x: pthread_barrier_init: barrier is already initialised -+ at 0x........: pthread_barrier_init (hg_intercepts.c:...) -+ by 0x........: main (bar_bad.c:49) -+ -+ -+initialise a barrier which has threads waiting on it -+---------------------------------------------------------------- -+ -+Thread #x: pthread_barrier_init: barrier is already initialised -+ at 0x........: pthread_barrier_init (hg_intercepts.c:...) -+ by 0x........: main (bar_bad.c:64) -+ -+---------------------------------------------------------------- -+ -+Thread #x: pthread_barrier_init: threads are waiting at barrier -+ at 0x........: pthread_barrier_init (hg_intercepts.c:...) -+ by 0x........: main (bar_bad.c:64) -+ -+ -+destroy a barrier that has waiting threads -+---------------------------------------------------------------- -+ -+Thread #x: pthread_barrier_destroy: threads are waiting at barrier -+ at 0x........: pthread_barrier_destroy (hg_intercepts.c:...) -+ by 0x........: main (bar_bad.c:82) -+ -+---Thread-Announcement------------------------------------------ -+ -+Thread #x was created -+ ... -+ by 0x........: pthread_create@* (hg_intercepts.c:...) -+ by 0x........: main (bar_bad.c:76) -+ -+---------------------------------------------------------------- -+ -+Thread #x: pthread_barrier_wait: barrier is uninitialised -+ at 0x........: pthread_barrier_wait (hg_intercepts.c:...) -+ by 0x........: sleep1 (bar_bad.c:22) -+ by 0x........: mythread_wrapper (hg_intercepts.c:...) -+ ... -+ -+ -+destroy a barrier that was never initialised -+---------------------------------------------------------------- -+ -+Thread #x: pthread_barrier_destroy: barrier was never initialised -+ at 0x........: pthread_barrier_destroy (hg_intercepts.c:...) -+ by 0x........: main (bar_bad.c:96) -+ -diff -ur valgrind-3.11.0.orig/drd/tests/Makefile.in valgrind-3.11.0/drd/tests/Makefile.in ---- valgrind-3.11.0.orig/drd/tests/Makefile.in 2016-01-25 21:16:13.095563405 +0100 -+++ valgrind-3.11.0/drd/tests/Makefile.in 2016-01-25 21:17:33.386330569 +0100 -@@ -1084,8 +1084,10 @@ - atomic_var.stderr.exp \ - atomic_var.vgtest \ - bar_bad.stderr.exp \ -+ bar_bad.stderr.exp-nohang \ - bar_bad.vgtest \ - bar_bad_xml.stderr.exp \ -+ bar_bad_xml.stderr.exp-nohang \ - bar_bad_xml.vgtest \ - bar_trivial.stderr.exp \ - bar_trivial.stdout.exp \ -diff -ur valgrind-3.11.0.orig/helgrind/tests/Makefile.in valgrind-3.11.0/helgrind/tests/Makefile.in ---- valgrind-3.11.0.orig/helgrind/tests/Makefile.in 2016-01-25 21:16:12.883564020 +0100 -+++ valgrind-3.11.0/helgrind/tests/Makefile.in 2016-01-25 21:17:34.266328017 +0100 -@@ -835,6 +835,7 @@ - cond_timedwait_test.vgtest cond_timedwait_test.stdout.exp \ - cond_timedwait_test.stderr.exp \ - bar_bad.vgtest bar_bad.stdout.exp bar_bad.stderr.exp \ -+ bar_bad.stderr.exp-destroy-hang \ - bar_trivial.vgtest bar_trivial.stdout.exp bar_trivial.stderr.exp \ - free_is_write.vgtest free_is_write.stdout.exp \ - free_is_write.stderr.exp \ diff --git a/SOURCES/valgrind-3.11.0-pthread_spin_destroy.patch b/SOURCES/valgrind-3.11.0-pthread_spin_destroy.patch deleted file mode 100644 index 1e83e18..0000000 --- a/SOURCES/valgrind-3.11.0-pthread_spin_destroy.patch +++ /dev/null @@ -1,1244 +0,0 @@ -commit c69445c1e07425e827ce936d7c416f7972b51aa2 -Author: iraisr -Date: Tue Jan 12 20:31:15 2016 +0000 - - Fix typo in Helgrind's wrapper of pthread_spin_destroy(). - Patch provided by: Jason Dillaman . - Fixes BZ #357871. - - - git-svn-id: svn://svn.valgrind.org/valgrind/trunk@15756 a5019735-40e9-0310-863c-91ae7b9d1cf9 - -diff --git a/helgrind/hg_intercepts.c b/helgrind/hg_intercepts.c -index fd53208..ff36e93 100644 ---- a/helgrind/hg_intercepts.c -+++ b/helgrind/hg_intercepts.c -@@ -1854,13 +1854,13 @@ static int pthread_spin_destroy_WRK(pthread_spinlock_t *lock) - return ret; - } - #if defined(VGO_linux) -- PTH_FUNC(int, pthreadZuspinZusdestroy, // pthread_spin_destroy -+ PTH_FUNC(int, pthreadZuspinZudestroy, // pthread_spin_destroy - pthread_spinlock_t *lock) { - return pthread_spin_destroy_WRK(lock); - } - #elif defined(VGO_darwin) - #elif defined(VGO_solaris) -- PTH_FUNC(int, pthreadZuspinZusdestroy, // pthread_spin_destroy -+ PTH_FUNC(int, pthreadZuspinZudestroy, // pthread_spin_destroy - pthread_spinlock_t *lock) { - return pthread_spin_destroy_WRK(lock); - } -diff --git a/helgrind/tests/tc20_verifywrap.c b/helgrind/tests/tc20_verifywrap.c -index f71c7f8..c110000 100644 ---- a/helgrind/tests/tc20_verifywrap.c -+++ b/helgrind/tests/tc20_verifywrap.c -@@ -29,6 +29,11 @@ - #endif - #endif /* __sun__ */ - -+typedef union { -+ pthread_spinlock_t spinlock; -+ pthread_rwlock_t rwlock; -+} spin_rw_lock; -+ - short unprotected = 0; - - void* lazy_child ( void* v ) { -@@ -236,6 +241,20 @@ int main ( void ) - r= pthread_rwlock_init( &rwl3, NULL ); assert(!r); - r= pthread_rwlock_rdlock( &rwl3 ); assert(!r); - -+ /* --------- pthread_spin_* --------- */ -+ -+ fprintf(stderr, -+ "\n---------------- pthread_spin_* ----------------\n\n"); -+ -+ /* The following sequence verifies correct wrapping of pthread_spin_init() -+ and pthread_spin_destroy(). */ -+ spin_rw_lock srwl1; -+ pthread_spin_init(&srwl1.spinlock, PTHREAD_PROCESS_PRIVATE); -+ pthread_spin_destroy(&srwl1.spinlock); -+ -+ pthread_rwlock_init(&srwl1.rwlock, NULL); -+ pthread_rwlock_destroy(&srwl1.rwlock); -+ - /* ------------- sem_* ------------- */ - - /* This is pretty lame, and duplicates tc18_semabuse.c. */ -diff --git a/helgrind/tests/tc20_verifywrap.stderr.exp b/helgrind/tests/tc20_verifywrap.stderr.exp -index d9019d4..372daea 100644 ---- a/helgrind/tests/tc20_verifywrap.stderr.exp -+++ b/helgrind/tests/tc20_verifywrap.stderr.exp -@@ -14,21 +14,21 @@ Thread #x is the program's root thread - Thread #x was created - ... - by 0x........: pthread_create@* (hg_intercepts.c:...) -- by 0x........: main (tc20_verifywrap.c:81) -+ by 0x........: main (tc20_verifywrap.c:86) - - ---------------------------------------------------------------- - - Possible data race during write of size 2 at 0x........ by thread #x - Locks held: none -- at 0x........: main (tc20_verifywrap.c:83) -+ at 0x........: main (tc20_verifywrap.c:88) - - This conflicts with a previous write of size 2 by thread #x - Locks held: none -- at 0x........: racy_child (tc20_verifywrap.c:39) -+ at 0x........: racy_child (tc20_verifywrap.c:44) - by 0x........: mythread_wrapper (hg_intercepts.c:...) - ... - Location 0x........ is 0 bytes inside global var "unprotected" -- declared at tc20_verifywrap.c:32 -+ declared at tc20_verifywrap.c:37 - - ---------------------------------------------------------------- - -@@ -36,7 +36,7 @@ Thread #x's call to pthread_join failed - with error code 35 (EDEADLK: Resource deadlock would occur) - at 0x........: pthread_join_WRK (hg_intercepts.c:...) - by 0x........: pthread_join (hg_intercepts.c:...) -- by 0x........: main (tc20_verifywrap.c:88) -+ by 0x........: main (tc20_verifywrap.c:93) - - - ---------------- pthread_mutex_lock et al ---------------- -@@ -46,14 +46,14 @@ Thread #x's call to pthread_join failed - Thread #x's call to pthread_mutex_init failed - with error code 95 (EOPNOTSUPP: Operation not supported on transport endpoint) - at 0x........: pthread_mutex_init (hg_intercepts.c:...) -- by 0x........: main (tc20_verifywrap.c:102) -+ by 0x........: main (tc20_verifywrap.c:107) - - ---------------------------------------------------------------- - - Thread #x: pthread_mutex_destroy of a locked mutex - at 0x........: mutex_destroy_WRK (hg_intercepts.c:...) - by 0x........: pthread_mutex_destroy (hg_intercepts.c:...) -- by 0x........: main (tc20_verifywrap.c:112) -+ by 0x........: main (tc20_verifywrap.c:117) - - ---------------------------------------------------------------- - -@@ -61,7 +61,7 @@ Thread #x's call to pthread_mutex_destroy failed - with error code 16 (EBUSY: Device or resource busy) - at 0x........: mutex_destroy_WRK (hg_intercepts.c:...) - by 0x........: pthread_mutex_destroy (hg_intercepts.c:...) -- by 0x........: main (tc20_verifywrap.c:112) -+ by 0x........: main (tc20_verifywrap.c:117) - - ---------------------------------------------------------------- - -@@ -69,7 +69,7 @@ Thread #x's call to pthread_mutex_lock failed - with error code 22 (EINVAL: Invalid argument) - at 0x........: mutex_lock_WRK (hg_intercepts.c:...) - by 0x........: pthread_mutex_lock (hg_intercepts.c:...) -- by 0x........: main (tc20_verifywrap.c:118) -+ by 0x........: main (tc20_verifywrap.c:123) - - ---------------------------------------------------------------- - -@@ -77,7 +77,7 @@ Thread #x's call to pthread_mutex_trylock failed - with error code 22 (EINVAL: Invalid argument) - at 0x........: mutex_trylock_WRK (hg_intercepts.c:...) - by 0x........: pthread_mutex_trylock (hg_intercepts.c:...) -- by 0x........: main (tc20_verifywrap.c:126) -+ by 0x........: main (tc20_verifywrap.c:131) - - ---------------------------------------------------------------- - -@@ -85,14 +85,14 @@ Thread #x's call to pthread_mutex_timedlock failed - with error code 22 (EINVAL: Invalid argument) - at 0x........: mutex_timedlock_WRK (hg_intercepts.c:...) - by 0x........: pthread_mutex_timedlock (hg_intercepts.c:...) -- by 0x........: main (tc20_verifywrap.c:131) -+ by 0x........: main (tc20_verifywrap.c:136) - - ---------------------------------------------------------------- - - Thread #x unlocked an invalid lock at 0x........ - at 0x........: mutex_unlock_WRK (hg_intercepts.c:...) - by 0x........: pthread_mutex_unlock (hg_intercepts.c:...) -- by 0x........: main (tc20_verifywrap.c:135) -+ by 0x........: main (tc20_verifywrap.c:140) - - ---------------------------------------------------------------- - -@@ -100,7 +100,7 @@ Thread #x's call to pthread_mutex_unlock failed - with error code 22 (EINVAL: Invalid argument) - at 0x........: mutex_unlock_WRK (hg_intercepts.c:...) - by 0x........: pthread_mutex_unlock (hg_intercepts.c:...) -- by 0x........: main (tc20_verifywrap.c:135) -+ by 0x........: main (tc20_verifywrap.c:140) - - - ---------------- pthread_cond_wait et al ---------------- -@@ -110,7 +110,7 @@ Thread #x's call to pthread_mutex_unlock failed - Thread #x: pthread_cond_{timed}wait called with un-held mutex - at 0x........: pthread_cond_wait_WRK (hg_intercepts.c:...) - by 0x........: pthread_cond_wait@* (hg_intercepts.c:...) -- by 0x........: main (tc20_verifywrap.c:157) -+ by 0x........: main (tc20_verifywrap.c:162) - - ---------------------------------------------------------------- - -@@ -118,14 +118,14 @@ Thread #x's call to pthread_cond_wait failed - with error code 1 (EPERM: Operation not permitted) - at 0x........: pthread_cond_wait_WRK (hg_intercepts.c:...) - by 0x........: pthread_cond_wait@* (hg_intercepts.c:...) -- by 0x........: main (tc20_verifywrap.c:157) -+ by 0x........: main (tc20_verifywrap.c:162) - - ---------------------------------------------------------------- - - Thread #x: pthread_cond_{signal,broadcast}: dubious: associated lock is not held by any thread - at 0x........: pthread_cond_signal_WRK (hg_intercepts.c:...) - by 0x........: pthread_cond_signal@* (hg_intercepts.c:...) -- by 0x........: main (tc20_verifywrap.c:162) -+ by 0x........: main (tc20_verifywrap.c:167) - - - FIXME: can't figure out how to verify wrap of pthread_cond_signal -@@ -135,7 +135,7 @@ FIXME: can't figure out how to verify wrap of pthread_cond_signal - Thread #x: pthread_cond_{signal,broadcast}: dubious: associated lock is not held by any thread - at 0x........: pthread_cond_broadcast_WRK (hg_intercepts.c:...) - by 0x........: pthread_cond_broadcast@* (hg_intercepts.c:...) -- by 0x........: main (tc20_verifywrap.c:168) -+ by 0x........: main (tc20_verifywrap.c:173) - - - FIXME: can't figure out how to verify wrap of pthread_broadcast_signal -@@ -145,7 +145,7 @@ FIXME: can't figure out how to verify wrap of pthread_broadcast_signal - Thread #x: pthread_cond_{timed}wait called with un-held mutex - at 0x........: pthread_cond_timedwait_WRK (hg_intercepts.c:...) - by 0x........: pthread_cond_timedwait@* (hg_intercepts.c:...) -- by 0x........: main (tc20_verifywrap.c:175) -+ by 0x........: main (tc20_verifywrap.c:180) - - ---------------------------------------------------------------- - -@@ -153,7 +153,7 @@ Thread #x's call to pthread_cond_timedwait failed - with error code 22 (EINVAL: Invalid argument) - at 0x........: pthread_cond_timedwait_WRK (hg_intercepts.c:...) - by 0x........: pthread_cond_timedwait@* (hg_intercepts.c:...) -- by 0x........: main (tc20_verifywrap.c:175) -+ by 0x........: main (tc20_verifywrap.c:180) - - - ---------------- pthread_rwlock_* ---------------- -@@ -164,13 +164,13 @@ Thread #x unlocked a not-locked lock at 0x........ - at 0x........: pthread_rwlock_unlock_WRK (hg_intercepts.c:...) - by 0x........: pthread_rwlock_unlock (hg_intercepts.c:...) - ... -- by 0x........: main (tc20_verifywrap.c:189) -+ by 0x........: main (tc20_verifywrap.c:194) - Lock at 0x........ was first observed - at 0x........: pthread_rwlock_init_WRK (hg_intercepts.c:...) - by 0x........: pthread_rwlock_init (hg_intercepts.c:...) -- by 0x........: main (tc20_verifywrap.c:188) -+ by 0x........: main (tc20_verifywrap.c:193) - Location 0x........ is 0 bytes inside local var "rwl" -- declared at tc20_verifywrap.c:52, in frame #x of thread x -+ declared at tc20_verifywrap.c:57, in frame #x of thread x - - - (1) no error on next line -@@ -182,13 +182,13 @@ Thread #x unlocked a not-locked lock at 0x........ - at 0x........: pthread_rwlock_unlock_WRK (hg_intercepts.c:...) - by 0x........: pthread_rwlock_unlock (hg_intercepts.c:...) - ... -- by 0x........: main (tc20_verifywrap.c:206) -+ by 0x........: main (tc20_verifywrap.c:211) - Lock at 0x........ was first observed - at 0x........: pthread_rwlock_init_WRK (hg_intercepts.c:...) - by 0x........: pthread_rwlock_init (hg_intercepts.c:...) -- by 0x........: main (tc20_verifywrap.c:196) -+ by 0x........: main (tc20_verifywrap.c:201) - Location 0x........ is 0 bytes inside local var "rwl2" -- declared at tc20_verifywrap.c:53, in frame #x of thread x -+ declared at tc20_verifywrap.c:58, in frame #x of thread x - - - (4) no error on next line -@@ -202,14 +202,17 @@ Thread #x unlocked a not-locked lock at 0x........ - at 0x........: pthread_rwlock_unlock_WRK (hg_intercepts.c:...) - by 0x........: pthread_rwlock_unlock (hg_intercepts.c:...) - ... -- by 0x........: main (tc20_verifywrap.c:227) -+ by 0x........: main (tc20_verifywrap.c:232) - Lock at 0x........ was first observed - at 0x........: pthread_rwlock_init_WRK (hg_intercepts.c:...) - by 0x........: pthread_rwlock_init (hg_intercepts.c:...) -- by 0x........: main (tc20_verifywrap.c:196) -+ by 0x........: main (tc20_verifywrap.c:201) - Location 0x........ is 0 bytes inside local var "rwl2" -- declared at tc20_verifywrap.c:53, in frame #x of thread x -+ declared at tc20_verifywrap.c:58, in frame #x of thread x -+ -+ - -+---------------- pthread_spin_* ---------------- - - - ---------------- sem_* ---------------- -@@ -220,7 +223,7 @@ Thread #x's call to sem_init failed - with error code 22 (EINVAL: Invalid argument) - at 0x........: sem_init_WRK (hg_intercepts.c:...) - by 0x........: sem_init@* (hg_intercepts.c:...) -- by 0x........: main (tc20_verifywrap.c:248) -+ by 0x........: main (tc20_verifywrap.c:267) - - - FIXME: can't figure out how to verify wrap of sem_destroy -@@ -230,7 +233,7 @@ FIXME: can't figure out how to verify wrap of sem_destroy - Thread #x: Bug in libpthread: sem_wait succeeded on semaphore without prior sem_post - at 0x........: sem_wait_WRK (hg_intercepts.c:...) - by 0x........: sem_wait (hg_intercepts.c:...) -- by 0x........: main (tc20_verifywrap.c:262) -+ by 0x........: main (tc20_verifywrap.c:281) - - ---------------------------------------------------------------- - -@@ -239,7 +242,7 @@ Thread #x's call to sem_post failed - at 0x........: sem_post_WRK (hg_intercepts.c:...) - by 0x........: sem_post (hg_intercepts.c:...) - ... -- by 0x........: main (tc20_verifywrap.c:265) -+ by 0x........: main (tc20_verifywrap.c:284) - - - FIXME: can't figure out how to verify wrap of sem_post -diff --git a/helgrind/tests/tc20_verifywrap.stderr.exp-glibc-2.18 b/helgrind/tests/tc20_verifywrap.stderr.exp-glibc-2.18 -index f109673..b823d40 100644 ---- a/helgrind/tests/tc20_verifywrap.stderr.exp-glibc-2.18 -+++ b/helgrind/tests/tc20_verifywrap.stderr.exp-glibc-2.18 -@@ -14,21 +14,21 @@ Thread #x is the program's root thread - Thread #x was created - ... - by 0x........: pthread_create@* (hg_intercepts.c:...) -- by 0x........: main (tc20_verifywrap.c:81) -+ by 0x........: main (tc20_verifywrap.c:86) - - ---------------------------------------------------------------- - - Possible data race during write of size 2 at 0x........ by thread #x - Locks held: none -- at 0x........: main (tc20_verifywrap.c:83) -+ at 0x........: main (tc20_verifywrap.c:88) - - This conflicts with a previous write of size 2 by thread #x - Locks held: none -- at 0x........: racy_child (tc20_verifywrap.c:39) -+ at 0x........: racy_child (tc20_verifywrap.c:44) - by 0x........: mythread_wrapper (hg_intercepts.c:...) - ... - Location 0x........ is 0 bytes inside global var "unprotected" -- declared at tc20_verifywrap.c:32 -+ declared at tc20_verifywrap.c:37 - - ---------------------------------------------------------------- - -@@ -36,7 +36,7 @@ Thread #x's call to pthread_join failed - with error code 35 (EDEADLK: Resource deadlock would occur) - at 0x........: pthread_join_WRK (hg_intercepts.c:...) - by 0x........: pthread_join (hg_intercepts.c:...) -- by 0x........: main (tc20_verifywrap.c:88) -+ by 0x........: main (tc20_verifywrap.c:93) - - - ---------------- pthread_mutex_lock et al ---------------- -@@ -46,14 +46,14 @@ Thread #x's call to pthread_join failed - Thread #x's call to pthread_mutex_init failed - with error code 95 (EOPNOTSUPP: Operation not supported on transport endpoint) - at 0x........: pthread_mutex_init (hg_intercepts.c:...) -- by 0x........: main (tc20_verifywrap.c:102) -+ by 0x........: main (tc20_verifywrap.c:107) - - ---------------------------------------------------------------- - - Thread #x: pthread_mutex_destroy of a locked mutex - at 0x........: mutex_destroy_WRK (hg_intercepts.c:...) - by 0x........: pthread_mutex_destroy (hg_intercepts.c:...) -- by 0x........: main (tc20_verifywrap.c:112) -+ by 0x........: main (tc20_verifywrap.c:117) - - ---------------------------------------------------------------- - -@@ -61,7 +61,7 @@ Thread #x's call to pthread_mutex_lock failed - with error code 22 (EINVAL: Invalid argument) - at 0x........: mutex_lock_WRK (hg_intercepts.c:...) - by 0x........: pthread_mutex_lock (hg_intercepts.c:...) -- by 0x........: main (tc20_verifywrap.c:118) -+ by 0x........: main (tc20_verifywrap.c:123) - - ---------------------------------------------------------------- - -@@ -69,7 +69,7 @@ Thread #x's call to pthread_mutex_trylock failed - with error code 22 (EINVAL: Invalid argument) - at 0x........: mutex_trylock_WRK (hg_intercepts.c:...) - by 0x........: pthread_mutex_trylock (hg_intercepts.c:...) -- by 0x........: main (tc20_verifywrap.c:126) -+ by 0x........: main (tc20_verifywrap.c:131) - - ---------------------------------------------------------------- - -@@ -77,14 +77,14 @@ Thread #x's call to pthread_mutex_timedlock failed - with error code 22 (EINVAL: Invalid argument) - at 0x........: mutex_timedlock_WRK (hg_intercepts.c:...) - by 0x........: pthread_mutex_timedlock (hg_intercepts.c:...) -- by 0x........: main (tc20_verifywrap.c:131) -+ by 0x........: main (tc20_verifywrap.c:136) - - ---------------------------------------------------------------- - - Thread #x unlocked an invalid lock at 0x........ - at 0x........: mutex_unlock_WRK (hg_intercepts.c:...) - by 0x........: pthread_mutex_unlock (hg_intercepts.c:...) -- by 0x........: main (tc20_verifywrap.c:135) -+ by 0x........: main (tc20_verifywrap.c:140) - - ---------------------------------------------------------------- - -@@ -92,7 +92,7 @@ Thread #x's call to pthread_mutex_unlock failed - with error code 22 (EINVAL: Invalid argument) - at 0x........: mutex_unlock_WRK (hg_intercepts.c:...) - by 0x........: pthread_mutex_unlock (hg_intercepts.c:...) -- by 0x........: main (tc20_verifywrap.c:135) -+ by 0x........: main (tc20_verifywrap.c:140) - - - ---------------- pthread_cond_wait et al ---------------- -@@ -102,7 +102,7 @@ Thread #x's call to pthread_mutex_unlock failed - Thread #x: pthread_cond_{timed}wait called with un-held mutex - at 0x........: pthread_cond_wait_WRK (hg_intercepts.c:...) - by 0x........: pthread_cond_wait@* (hg_intercepts.c:...) -- by 0x........: main (tc20_verifywrap.c:157) -+ by 0x........: main (tc20_verifywrap.c:162) - - ---------------------------------------------------------------- - -@@ -110,14 +110,14 @@ Thread #x's call to pthread_cond_wait failed - with error code 1 (EPERM: Operation not permitted) - at 0x........: pthread_cond_wait_WRK (hg_intercepts.c:...) - by 0x........: pthread_cond_wait@* (hg_intercepts.c:...) -- by 0x........: main (tc20_verifywrap.c:157) -+ by 0x........: main (tc20_verifywrap.c:162) - - ---------------------------------------------------------------- - - Thread #x: pthread_cond_{signal,broadcast}: dubious: associated lock is not held by any thread - at 0x........: pthread_cond_signal_WRK (hg_intercepts.c:...) - by 0x........: pthread_cond_signal@* (hg_intercepts.c:...) -- by 0x........: main (tc20_verifywrap.c:162) -+ by 0x........: main (tc20_verifywrap.c:167) - - - FIXME: can't figure out how to verify wrap of pthread_cond_signal -@@ -127,7 +127,7 @@ FIXME: can't figure out how to verify wrap of pthread_cond_signal - Thread #x: pthread_cond_{signal,broadcast}: dubious: associated lock is not held by any thread - at 0x........: pthread_cond_broadcast_WRK (hg_intercepts.c:...) - by 0x........: pthread_cond_broadcast@* (hg_intercepts.c:...) -- by 0x........: main (tc20_verifywrap.c:168) -+ by 0x........: main (tc20_verifywrap.c:173) - - - FIXME: can't figure out how to verify wrap of pthread_broadcast_signal -@@ -137,7 +137,7 @@ FIXME: can't figure out how to verify wrap of pthread_broadcast_signal - Thread #x: pthread_cond_{timed}wait called with un-held mutex - at 0x........: pthread_cond_timedwait_WRK (hg_intercepts.c:...) - by 0x........: pthread_cond_timedwait@* (hg_intercepts.c:...) -- by 0x........: main (tc20_verifywrap.c:175) -+ by 0x........: main (tc20_verifywrap.c:180) - - ---------------------------------------------------------------- - -@@ -145,7 +145,7 @@ Thread #x's call to pthread_cond_timedwait failed - with error code 22 (EINVAL: Invalid argument) - at 0x........: pthread_cond_timedwait_WRK (hg_intercepts.c:...) - by 0x........: pthread_cond_timedwait@* (hg_intercepts.c:...) -- by 0x........: main (tc20_verifywrap.c:175) -+ by 0x........: main (tc20_verifywrap.c:180) - - - ---------------- pthread_rwlock_* ---------------- -@@ -156,11 +156,11 @@ Thread #x unlocked a not-locked lock at 0x........ - at 0x........: pthread_rwlock_unlock_WRK (hg_intercepts.c:...) - by 0x........: pthread_rwlock_unlock (hg_intercepts.c:...) - ... -- by 0x........: main (tc20_verifywrap.c:189) -+ by 0x........: main (tc20_verifywrap.c:194) - Lock at 0x........ was first observed - at 0x........: pthread_rwlock_init_WRK (hg_intercepts.c:...) - by 0x........: pthread_rwlock_init (hg_intercepts.c:...) -- by 0x........: main (tc20_verifywrap.c:188) -+ by 0x........: main (tc20_verifywrap.c:193) - - (1) no error on next line - (2) no error on next line -@@ -171,11 +171,11 @@ Thread #x unlocked a not-locked lock at 0x........ - at 0x........: pthread_rwlock_unlock_WRK (hg_intercepts.c:...) - by 0x........: pthread_rwlock_unlock (hg_intercepts.c:...) - ... -- by 0x........: main (tc20_verifywrap.c:206) -+ by 0x........: main (tc20_verifywrap.c:211) - Lock at 0x........ was first observed - at 0x........: pthread_rwlock_init_WRK (hg_intercepts.c:...) - by 0x........: pthread_rwlock_init (hg_intercepts.c:...) -- by 0x........: main (tc20_verifywrap.c:196) -+ by 0x........: main (tc20_verifywrap.c:201) - - (4) no error on next line - (5) no error on next line -@@ -187,11 +187,15 @@ Thread #x unlocked a not-locked lock at 0x........ - Thread #x unlocked a not-locked lock at 0x........ - at 0x........: pthread_rwlock_unlock_WRK (hg_intercepts.c:...) - by 0x........: pthread_rwlock_unlock (hg_intercepts.c:...) -- by 0x........: main (tc20_verifywrap.c:227) -+ by 0x........: main (tc20_verifywrap.c:232) - Lock at 0x........ was first observed - at 0x........: pthread_rwlock_init_WRK (hg_intercepts.c:...) - by 0x........: pthread_rwlock_init (hg_intercepts.c:...) -- by 0x........: main (tc20_verifywrap.c:196) -+ by 0x........: main (tc20_verifywrap.c:201) -+ -+ -+ -+---------------- pthread_spin_* ---------------- - - - ---------------- sem_* ---------------- -@@ -202,7 +206,7 @@ Thread #x's call to sem_init failed - with error code 22 (EINVAL: Invalid argument) - at 0x........: sem_init_WRK (hg_intercepts.c:...) - by 0x........: sem_init@* (hg_intercepts.c:...) -- by 0x........: main (tc20_verifywrap.c:243) -+ by 0x........: main (tc20_verifywrap.c:267) - - - FIXME: can't figure out how to verify wrap of sem_destroy -@@ -212,7 +216,7 @@ FIXME: can't figure out how to verify wrap of sem_destroy - Thread #x: Bug in libpthread: sem_wait succeeded on semaphore without prior sem_post - at 0x........: sem_wait_WRK (hg_intercepts.c:...) - by 0x........: sem_wait (hg_intercepts.c:...) -- by 0x........: main (tc20_verifywrap.c:257) -+ by 0x........: main (tc20_verifywrap.c:281) - - ---------------------------------------------------------------- - -@@ -220,7 +224,7 @@ Thread #x's call to sem_post failed - with error code 22 (EINVAL: Invalid argument) - at 0x........: sem_post_WRK (hg_intercepts.c:...) - by 0x........: sem_post (hg_intercepts.c:...) -- by 0x........: main (tc20_verifywrap.c:260) -+ by 0x........: main (tc20_verifywrap.c:284) - - - FIXME: can't figure out how to verify wrap of sem_post -diff --git a/helgrind/tests/tc20_verifywrap.stderr.exp-glibc-2.21 b/helgrind/tests/tc20_verifywrap.stderr.exp-glibc-2.21 -index 7f4eb21..2a2ee9b 100644 ---- a/helgrind/tests/tc20_verifywrap.stderr.exp-glibc-2.21 -+++ b/helgrind/tests/tc20_verifywrap.stderr.exp-glibc-2.21 -@@ -14,21 +14,21 @@ Thread #x is the program's root thread - Thread #x was created - ... - by 0x........: pthread_create@* (hg_intercepts.c:...) -- by 0x........: main (tc20_verifywrap.c:81) -+ by 0x........: main (tc20_verifywrap.c:86) - - ---------------------------------------------------------------- - - Possible data race during write of size 2 at 0x........ by thread #x - Locks held: none -- at 0x........: main (tc20_verifywrap.c:83) -+ at 0x........: main (tc20_verifywrap.c:88) - - This conflicts with a previous write of size 2 by thread #x - Locks held: none -- at 0x........: racy_child (tc20_verifywrap.c:39) -+ at 0x........: racy_child (tc20_verifywrap.c:44) - by 0x........: mythread_wrapper (hg_intercepts.c:...) - ... - Location 0x........ is 0 bytes inside global var "unprotected" -- declared at tc20_verifywrap.c:32 -+ declared at tc20_verifywrap.c:37 - - ---------------------------------------------------------------- - -@@ -36,7 +36,7 @@ Thread #x's call to pthread_join failed - with error code 35 (EDEADLK: Resource deadlock would occur) - at 0x........: pthread_join_WRK (hg_intercepts.c:...) - by 0x........: pthread_join (hg_intercepts.c:...) -- by 0x........: main (tc20_verifywrap.c:88) -+ by 0x........: main (tc20_verifywrap.c:93) - - - ---------------- pthread_mutex_lock et al ---------------- -@@ -46,14 +46,14 @@ Thread #x's call to pthread_join failed - Thread #x's call to pthread_mutex_init failed - with error code 95 (EOPNOTSUPP: Operation not supported on transport endpoint) - at 0x........: pthread_mutex_init (hg_intercepts.c:...) -- by 0x........: main (tc20_verifywrap.c:102) -+ by 0x........: main (tc20_verifywrap.c:107) - - ---------------------------------------------------------------- - - Thread #x: pthread_mutex_destroy of a locked mutex - at 0x........: mutex_destroy_WRK (hg_intercepts.c:...) - by 0x........: pthread_mutex_destroy (hg_intercepts.c:...) -- by 0x........: main (tc20_verifywrap.c:112) -+ by 0x........: main (tc20_verifywrap.c:117) - - ---------------------------------------------------------------- - -@@ -61,7 +61,7 @@ Thread #x's call to pthread_mutex_destroy failed - with error code 16 (EBUSY: Device or resource busy) - at 0x........: mutex_destroy_WRK (hg_intercepts.c:...) - by 0x........: pthread_mutex_destroy (hg_intercepts.c:...) -- by 0x........: main (tc20_verifywrap.c:112) -+ by 0x........: main (tc20_verifywrap.c:117) - - ---------------------------------------------------------------- - -@@ -69,7 +69,7 @@ Thread #x's call to pthread_mutex_lock failed - with error code 22 (EINVAL: Invalid argument) - at 0x........: mutex_lock_WRK (hg_intercepts.c:...) - by 0x........: pthread_mutex_lock (hg_intercepts.c:...) -- by 0x........: main (tc20_verifywrap.c:118) -+ by 0x........: main (tc20_verifywrap.c:123) - - ---------------------------------------------------------------- - -@@ -77,7 +77,7 @@ Thread #x's call to pthread_mutex_trylock failed - with error code 22 (EINVAL: Invalid argument) - at 0x........: mutex_trylock_WRK (hg_intercepts.c:...) - by 0x........: pthread_mutex_trylock (hg_intercepts.c:...) -- by 0x........: main (tc20_verifywrap.c:126) -+ by 0x........: main (tc20_verifywrap.c:131) - - ---------------------------------------------------------------- - -@@ -85,14 +85,14 @@ Thread #x's call to pthread_mutex_timedlock failed - with error code 22 (EINVAL: Invalid argument) - at 0x........: mutex_timedlock_WRK (hg_intercepts.c:...) - by 0x........: pthread_mutex_timedlock (hg_intercepts.c:...) -- by 0x........: main (tc20_verifywrap.c:131) -+ by 0x........: main (tc20_verifywrap.c:136) - - ---------------------------------------------------------------- - - Thread #x unlocked an invalid lock at 0x........ - at 0x........: mutex_unlock_WRK (hg_intercepts.c:...) - by 0x........: pthread_mutex_unlock (hg_intercepts.c:...) -- by 0x........: main (tc20_verifywrap.c:135) -+ by 0x........: main (tc20_verifywrap.c:140) - - ---------------------------------------------------------------- - -@@ -100,7 +100,7 @@ Thread #x's call to pthread_mutex_unlock failed - with error code 22 (EINVAL: Invalid argument) - at 0x........: mutex_unlock_WRK (hg_intercepts.c:...) - by 0x........: pthread_mutex_unlock (hg_intercepts.c:...) -- by 0x........: main (tc20_verifywrap.c:135) -+ by 0x........: main (tc20_verifywrap.c:140) - - - ---------------- pthread_cond_wait et al ---------------- -@@ -110,7 +110,7 @@ Thread #x's call to pthread_mutex_unlock failed - Thread #x: pthread_cond_{timed}wait called with un-held mutex - at 0x........: pthread_cond_wait_WRK (hg_intercepts.c:...) - by 0x........: pthread_cond_wait@* (hg_intercepts.c:...) -- by 0x........: main (tc20_verifywrap.c:157) -+ by 0x........: main (tc20_verifywrap.c:162) - - ---------------------------------------------------------------- - -@@ -118,14 +118,14 @@ Thread #x's call to pthread_cond_wait failed - with error code 1 (EPERM: Operation not permitted) - at 0x........: pthread_cond_wait_WRK (hg_intercepts.c:...) - by 0x........: pthread_cond_wait@* (hg_intercepts.c:...) -- by 0x........: main (tc20_verifywrap.c:157) -+ by 0x........: main (tc20_verifywrap.c:162) - - ---------------------------------------------------------------- - - Thread #x: pthread_cond_{signal,broadcast}: dubious: associated lock is not held by any thread - at 0x........: pthread_cond_signal_WRK (hg_intercepts.c:...) - by 0x........: pthread_cond_signal@* (hg_intercepts.c:...) -- by 0x........: main (tc20_verifywrap.c:162) -+ by 0x........: main (tc20_verifywrap.c:167) - - - FIXME: can't figure out how to verify wrap of pthread_cond_signal -@@ -135,7 +135,7 @@ FIXME: can't figure out how to verify wrap of pthread_cond_signal - Thread #x: pthread_cond_{signal,broadcast}: dubious: associated lock is not held by any thread - at 0x........: pthread_cond_broadcast_WRK (hg_intercepts.c:...) - by 0x........: pthread_cond_broadcast@* (hg_intercepts.c:...) -- by 0x........: main (tc20_verifywrap.c:168) -+ by 0x........: main (tc20_verifywrap.c:173) - - - FIXME: can't figure out how to verify wrap of pthread_broadcast_signal -@@ -145,7 +145,7 @@ FIXME: can't figure out how to verify wrap of pthread_broadcast_signal - Thread #x: pthread_cond_{timed}wait called with un-held mutex - at 0x........: pthread_cond_timedwait_WRK (hg_intercepts.c:...) - by 0x........: pthread_cond_timedwait@* (hg_intercepts.c:...) -- by 0x........: main (tc20_verifywrap.c:175) -+ by 0x........: main (tc20_verifywrap.c:180) - - ---------------------------------------------------------------- - -@@ -153,7 +153,7 @@ Thread #x's call to pthread_cond_timedwait failed - with error code 22 (EINVAL: Invalid argument) - at 0x........: pthread_cond_timedwait_WRK (hg_intercepts.c:...) - by 0x........: pthread_cond_timedwait@* (hg_intercepts.c:...) -- by 0x........: main (tc20_verifywrap.c:175) -+ by 0x........: main (tc20_verifywrap.c:180) - - - ---------------- pthread_rwlock_* ---------------- -@@ -164,13 +164,13 @@ Thread #x unlocked a not-locked lock at 0x........ - at 0x........: pthread_rwlock_unlock_WRK (hg_intercepts.c:...) - by 0x........: pthread_rwlock_unlock (hg_intercepts.c:...) - ... -- by 0x........: main (tc20_verifywrap.c:189) -+ by 0x........: main (tc20_verifywrap.c:194) - Lock at 0x........ was first observed - at 0x........: pthread_rwlock_init_WRK (hg_intercepts.c:...) - by 0x........: pthread_rwlock_init (hg_intercepts.c:...) -- by 0x........: main (tc20_verifywrap.c:188) -+ by 0x........: main (tc20_verifywrap.c:193) - Location 0x........ is 0 bytes inside local var "rwl" -- declared at tc20_verifywrap.c:52, in frame #x of thread x -+ declared at tc20_verifywrap.c:57, in frame #x of thread x - - - (1) no error on next line -@@ -182,13 +182,13 @@ Thread #x unlocked a not-locked lock at 0x........ - at 0x........: pthread_rwlock_unlock_WRK (hg_intercepts.c:...) - by 0x........: pthread_rwlock_unlock (hg_intercepts.c:...) - ... -- by 0x........: main (tc20_verifywrap.c:206) -+ by 0x........: main (tc20_verifywrap.c:211) - Lock at 0x........ was first observed - at 0x........: pthread_rwlock_init_WRK (hg_intercepts.c:...) - by 0x........: pthread_rwlock_init (hg_intercepts.c:...) -- by 0x........: main (tc20_verifywrap.c:196) -+ by 0x........: main (tc20_verifywrap.c:201) - Location 0x........ is 0 bytes inside local var "rwl2" -- declared at tc20_verifywrap.c:53, in frame #x of thread x -+ declared at tc20_verifywrap.c:58, in frame #x of thread x - - - (4) no error on next line -@@ -202,14 +202,17 @@ Thread #x unlocked a not-locked lock at 0x........ - at 0x........: pthread_rwlock_unlock_WRK (hg_intercepts.c:...) - by 0x........: pthread_rwlock_unlock (hg_intercepts.c:...) - ... -- by 0x........: main (tc20_verifywrap.c:227) -+ by 0x........: main (tc20_verifywrap.c:232) - Lock at 0x........ was first observed - at 0x........: pthread_rwlock_init_WRK (hg_intercepts.c:...) - by 0x........: pthread_rwlock_init (hg_intercepts.c:...) -- by 0x........: main (tc20_verifywrap.c:196) -+ by 0x........: main (tc20_verifywrap.c:201) - Location 0x........ is 0 bytes inside local var "rwl2" -- declared at tc20_verifywrap.c:53, in frame #x of thread x -+ declared at tc20_verifywrap.c:58, in frame #x of thread x -+ -+ - -+---------------- pthread_spin_* ---------------- - - - ---------------- sem_* ---------------- -@@ -220,7 +223,7 @@ Thread #x's call to sem_init failed - with error code 22 (EINVAL: Invalid argument) - at 0x........: sem_init_WRK (hg_intercepts.c:...) - by 0x........: sem_init@* (hg_intercepts.c:...) -- by 0x........: main (tc20_verifywrap.c:248) -+ by 0x........: main (tc20_verifywrap.c:267) - - - FIXME: can't figure out how to verify wrap of sem_destroy -@@ -230,7 +233,7 @@ FIXME: can't figure out how to verify wrap of sem_destroy - Thread #x: Bug in libpthread: sem_wait succeeded on semaphore without prior sem_post - at 0x........: sem_wait_WRK (hg_intercepts.c:...) - by 0x........: sem_wait (hg_intercepts.c:...) -- by 0x........: main (tc20_verifywrap.c:262) -+ by 0x........: main (tc20_verifywrap.c:281) - - - FIXME: can't figure out how to verify wrap of sem_post -diff --git a/helgrind/tests/tc20_verifywrap.stderr.exp-s390x b/helgrind/tests/tc20_verifywrap.stderr.exp-s390x -index 3f60f79..f19215e 100644 ---- a/helgrind/tests/tc20_verifywrap.stderr.exp-s390x -+++ b/helgrind/tests/tc20_verifywrap.stderr.exp-s390x -@@ -15,22 +15,22 @@ Thread #x was created - ... - by 0x........: pthread_create_WRK (hg_intercepts.c:...) - by 0x........: pthread_create@* (hg_intercepts.c:...) -- by 0x........: main (tc20_verifywrap.c:81) -+ by 0x........: main (tc20_verifywrap.c:86) - - ---------------------------------------------------------------- - - Possible data race during write of size 2 at 0x........ by thread #x - Locks held: none -- at 0x........: main (tc20_verifywrap.c:83) -+ at 0x........: main (tc20_verifywrap.c:88) - - This conflicts with a previous write of size 2 by thread #x - Locks held: none -- at 0x........: racy_child (tc20_verifywrap.c:39) -+ at 0x........: racy_child (tc20_verifywrap.c:44) - by 0x........: mythread_wrapper (hg_intercepts.c:...) - ... - - Location 0x........ is 0 bytes inside global var "unprotected" --declared at tc20_verifywrap.c:32 -+declared at tc20_verifywrap.c:37 - - ---------------------------------------------------------------- - -@@ -38,7 +38,7 @@ Thread #x's call to pthread_join failed - with error code 35 (EDEADLK: Resource deadlock would occur) - at 0x........: pthread_join_WRK (hg_intercepts.c:...) - by 0x........: pthread_join (hg_intercepts.c:...) -- by 0x........: main (tc20_verifywrap.c:88) -+ by 0x........: main (tc20_verifywrap.c:93) - - - ---------------- pthread_mutex_lock et al ---------------- -@@ -48,14 +48,14 @@ Thread #x's call to pthread_join failed - Thread #x's call to pthread_mutex_init failed - with error code 95 (EOPNOTSUPP: Operation not supported on transport endpoint) - at 0x........: pthread_mutex_init (hg_intercepts.c:...) -- by 0x........: main (tc20_verifywrap.c:102) -+ by 0x........: main (tc20_verifywrap.c:107) - - ---------------------------------------------------------------- - - Thread #x: pthread_mutex_destroy of a locked mutex - at 0x........: mutex_destroy_WRK (hg_intercepts.c:...) - by 0x........: pthread_mutex_destroy (hg_intercepts.c:...) -- by 0x........: main (tc20_verifywrap.c:112) -+ by 0x........: main (tc20_verifywrap.c:117) - - ---------------------------------------------------------------- - -@@ -63,7 +63,7 @@ Thread #x's call to pthread_mutex_destroy failed - with error code 16 (EBUSY: Device or resource busy) - at 0x........: mutex_destroy_WRK (hg_intercepts.c:...) - by 0x........: pthread_mutex_destroy (hg_intercepts.c:...) -- by 0x........: main (tc20_verifywrap.c:112) -+ by 0x........: main (tc20_verifywrap.c:117) - - ---------------------------------------------------------------- - -@@ -71,7 +71,7 @@ Thread #x's call to pthread_mutex_lock failed - with error code 22 (EINVAL: Invalid argument) - at 0x........: mutex_lock_WRK (hg_intercepts.c:...) - by 0x........: pthread_mutex_lock (hg_intercepts.c:...) -- by 0x........: main (tc20_verifywrap.c:118) -+ by 0x........: main (tc20_verifywrap.c:123) - - ---------------------------------------------------------------- - -@@ -79,7 +79,7 @@ Thread #x's call to pthread_mutex_trylock failed - with error code 22 (EINVAL: Invalid argument) - at 0x........: mutex_trylock_WRK (hg_intercepts.c:...) - by 0x........: pthread_mutex_trylock (hg_intercepts.c:...) -- by 0x........: main (tc20_verifywrap.c:126) -+ by 0x........: main (tc20_verifywrap.c:131) - - ---------------------------------------------------------------- - -@@ -87,14 +87,14 @@ Thread #x's call to pthread_mutex_timedlock failed - with error code 22 (EINVAL: Invalid argument) - at 0x........: mutex_timedlock_WRK (hg_intercepts.c:...) - by 0x........: pthread_mutex_timedlock (hg_intercepts.c:...) -- by 0x........: main (tc20_verifywrap.c:131) -+ by 0x........: main (tc20_verifywrap.c:136) - - ---------------------------------------------------------------- - - Thread #x unlocked an invalid lock at 0x........ - at 0x........: mutex_unlock_WRK (hg_intercepts.c:...) - by 0x........: pthread_mutex_unlock (hg_intercepts.c:...) -- by 0x........: main (tc20_verifywrap.c:135) -+ by 0x........: main (tc20_verifywrap.c:140) - - ---------------------------------------------------------------- - -@@ -102,7 +102,7 @@ Thread #x's call to pthread_mutex_unlock failed - with error code 22 (EINVAL: Invalid argument) - at 0x........: mutex_unlock_WRK (hg_intercepts.c:...) - by 0x........: pthread_mutex_unlock (hg_intercepts.c:...) -- by 0x........: main (tc20_verifywrap.c:135) -+ by 0x........: main (tc20_verifywrap.c:140) - - - ---------------- pthread_cond_wait et al ---------------- -@@ -112,7 +112,7 @@ Thread #x's call to pthread_mutex_unlock failed - Thread #x: pthread_cond_{timed}wait called with un-held mutex - at 0x........: pthread_cond_wait_WRK (hg_intercepts.c:...) - by 0x........: pthread_cond_wait@* (hg_intercepts.c:...) -- by 0x........: main (tc20_verifywrap.c:157) -+ by 0x........: main (tc20_verifywrap.c:162) - - ---------------------------------------------------------------- - -@@ -120,14 +120,14 @@ Thread #x's call to pthread_cond_wait failed - with error code 1 (EPERM: Operation not permitted) - at 0x........: pthread_cond_wait_WRK (hg_intercepts.c:...) - by 0x........: pthread_cond_wait@* (hg_intercepts.c:...) -- by 0x........: main (tc20_verifywrap.c:157) -+ by 0x........: main (tc20_verifywrap.c:162) - - ---------------------------------------------------------------- - - Thread #x: pthread_cond_{signal,broadcast}: dubious: associated lock is not held by any thread - at 0x........: pthread_cond_signal_WRK (hg_intercepts.c:...) - by 0x........: pthread_cond_signal@* (hg_intercepts.c:...) -- by 0x........: main (tc20_verifywrap.c:162) -+ by 0x........: main (tc20_verifywrap.c:167) - - - FIXME: can't figure out how to verify wrap of pthread_cond_signal -@@ -137,7 +137,7 @@ FIXME: can't figure out how to verify wrap of pthread_cond_signal - Thread #x: pthread_cond_{signal,broadcast}: dubious: associated lock is not held by any thread - at 0x........: pthread_cond_broadcast_WRK (hg_intercepts.c:...) - by 0x........: pthread_cond_broadcast@* (hg_intercepts.c:...) -- by 0x........: main (tc20_verifywrap.c:168) -+ by 0x........: main (tc20_verifywrap.c:173) - - - FIXME: can't figure out how to verify wrap of pthread_broadcast_signal -@@ -147,7 +147,7 @@ FIXME: can't figure out how to verify wrap of pthread_broadcast_signal - Thread #x: pthread_cond_{timed}wait called with un-held mutex - at 0x........: pthread_cond_timedwait_WRK (hg_intercepts.c:...) - by 0x........: pthread_cond_timedwait@* (hg_intercepts.c:...) -- by 0x........: main (tc20_verifywrap.c:175) -+ by 0x........: main (tc20_verifywrap.c:180) - - ---------------------------------------------------------------- - -@@ -155,7 +155,7 @@ Thread #x's call to pthread_cond_timedwait failed - with error code 22 (EINVAL: Invalid argument) - at 0x........: pthread_cond_timedwait_WRK (hg_intercepts.c:...) - by 0x........: pthread_cond_timedwait@* (hg_intercepts.c:...) -- by 0x........: main (tc20_verifywrap.c:175) -+ by 0x........: main (tc20_verifywrap.c:180) - - - ---------------- pthread_rwlock_* ---------------- -@@ -166,11 +166,11 @@ Thread #x unlocked a not-locked lock at 0x........ - at 0x........: pthread_rwlock_unlock_WRK (hg_intercepts.c:...) - by 0x........: pthread_rwlock_unlock (hg_intercepts.c:...) - ... -- by 0x........: main (tc20_verifywrap.c:189) -+ by 0x........: main (tc20_verifywrap.c:194) - Lock at 0x........ was first observed - at 0x........: pthread_rwlock_init_WRK (hg_intercepts.c:...) - by 0x........: pthread_rwlock_init (hg_intercepts.c:...) -- by 0x........: main (tc20_verifywrap.c:188) -+ by 0x........: main (tc20_verifywrap.c:193) - - (1) no error on next line - (2) no error on next line -@@ -181,11 +181,11 @@ Thread #x unlocked a not-locked lock at 0x........ - at 0x........: pthread_rwlock_unlock_WRK (hg_intercepts.c:...) - by 0x........: pthread_rwlock_unlock (hg_intercepts.c:...) - ... -- by 0x........: main (tc20_verifywrap.c:206) -+ by 0x........: main (tc20_verifywrap.c:211) - Lock at 0x........ was first observed - at 0x........: pthread_rwlock_init_WRK (hg_intercepts.c:...) - by 0x........: pthread_rwlock_init (hg_intercepts.c:...) -- by 0x........: main (tc20_verifywrap.c:196) -+ by 0x........: main (tc20_verifywrap.c:201) - - (4) no error on next line - (5) no error on next line -@@ -198,11 +198,15 @@ Thread #x unlocked a not-locked lock at 0x........ - at 0x........: pthread_rwlock_unlock_WRK (hg_intercepts.c:...) - by 0x........: pthread_rwlock_unlock (hg_intercepts.c:...) - ... -- by 0x........: main (tc20_verifywrap.c:227) -+ by 0x........: main (tc20_verifywrap.c:232) - Lock at 0x........ was first observed - at 0x........: pthread_rwlock_init_WRK (hg_intercepts.c:...) - by 0x........: pthread_rwlock_init (hg_intercepts.c:...) -- by 0x........: main (tc20_verifywrap.c:196) -+ by 0x........: main (tc20_verifywrap.c:201) -+ -+ -+ -+---------------- pthread_spin_* ---------------- - - - ---------------- sem_* ---------------- -@@ -213,7 +217,7 @@ Thread #x's call to sem_init failed - with error code 22 (EINVAL: Invalid argument) - at 0x........: sem_init_WRK (hg_intercepts.c:...) - by 0x........: sem_init@* (hg_intercepts.c:...) -- by 0x........: main (tc20_verifywrap.c:243) -+ by 0x........: main (tc20_verifywrap.c:267) - - - FIXME: can't figure out how to verify wrap of sem_destroy -@@ -223,7 +227,7 @@ FIXME: can't figure out how to verify wrap of sem_destroy - Thread #x: Bug in libpthread: sem_wait succeeded on semaphore without prior sem_post - at 0x........: sem_wait_WRK (hg_intercepts.c:...) - by 0x........: sem_wait (hg_intercepts.c:...) -- by 0x........: main (tc20_verifywrap.c:257) -+ by 0x........: main (tc20_verifywrap.c:281) - - - FIXME: can't figure out how to verify wrap of sem_post -diff --git a/helgrind/tests/tc20_verifywrap.stderr.exp-solaris b/helgrind/tests/tc20_verifywrap.stderr.exp-solaris -index 921ebf5..072cc18 100644 ---- a/helgrind/tests/tc20_verifywrap.stderr.exp-solaris -+++ b/helgrind/tests/tc20_verifywrap.stderr.exp-solaris -@@ -14,21 +14,21 @@ Thread #x is the program's root thread - Thread #x was created - ... - by 0x........: pthread_create@* (hg_intercepts.c:...) -- by 0x........: main (tc20_verifywrap.c:81) -+ by 0x........: main (tc20_verifywrap.c:86) - - ---------------------------------------------------------------- - - Possible data race during write of size 2 at 0x........ by thread #x - Locks held: none -- at 0x........: main (tc20_verifywrap.c:83) -+ at 0x........: main (tc20_verifywrap.c:88) - - This conflicts with a previous write of size 2 by thread #x - Locks held: none -- at 0x........: racy_child (tc20_verifywrap.c:39) -+ at 0x........: racy_child (tc20_verifywrap.c:44) - by 0x........: mythread_wrapper (hg_intercepts.c:...) - ... - Location 0x........ is 0 bytes inside global var "unprotected" -- declared at tc20_verifywrap.c:32 -+ declared at tc20_verifywrap.c:37 - - ---------------------------------------------------------------- - -@@ -36,7 +36,7 @@ Thread #x's call to pthread_join failed - with error code 45 (EDEADLK: Resource deadlock would occur) - at 0x........: pthread_join_WRK (hg_intercepts.c:...) - by 0x........: pthread_join (hg_intercepts.c:...) -- by 0x........: main (tc20_verifywrap.c:88) -+ by 0x........: main (tc20_verifywrap.c:93) - - - ---------------- pthread_mutex_lock et al ---------------- -@@ -46,14 +46,14 @@ Thread #x's call to pthread_join failed - Thread #x's call to mutex_init failed - with error code 22 (EINVAL: Invalid argument) - at 0x........: pthread_mutex_init (hg_intercepts.c:...) -- by 0x........: main (tc20_verifywrap.c:102) -+ by 0x........: main (tc20_verifywrap.c:107) - - ---------------------------------------------------------------- - - Thread #x: pthread_mutex_destroy of a locked mutex - at 0x........: mutex_destroy_WRK (hg_intercepts.c:...) - by 0x........: pthread_mutex_destroy (hg_intercepts.c:...) -- by 0x........: main (tc20_verifywrap.c:112) -+ by 0x........: main (tc20_verifywrap.c:117) - - ---------------------------------------------------------------- - -@@ -61,7 +61,7 @@ Thread #x's call to pthread_mutex_lock failed - with error code 1 (EPERM: Operation not permitted) - at 0x........: mutex_lock_WRK (hg_intercepts.c:...) - by 0x........: pthread_mutex_lock (hg_intercepts.c:...) -- by 0x........: main (tc20_verifywrap.c:118) -+ by 0x........: main (tc20_verifywrap.c:123) - - ---------------------------------------------------------------- - -@@ -69,7 +69,7 @@ Thread #x's call to pthread_mutex_trylock failed - with error code 1 (EPERM: Operation not permitted) - at 0x........: mutex_trylock_WRK (hg_intercepts.c:...) - by 0x........: pthread_mutex_trylock (hg_intercepts.c:...) -- by 0x........: main (tc20_verifywrap.c:126) -+ by 0x........: main (tc20_verifywrap.c:131) - - ---------------------------------------------------------------- - -@@ -77,14 +77,14 @@ Thread #x's call to pthread_mutex_timedlock failed - with error code 1 (EPERM: Operation not permitted) - at 0x........: mutex_timedlock_WRK (hg_intercepts.c:...) - by 0x........: pthread_mutex_timedlock (hg_intercepts.c:...) -- by 0x........: main (tc20_verifywrap.c:131) -+ by 0x........: main (tc20_verifywrap.c:136) - - ---------------------------------------------------------------- - - Thread #x unlocked an invalid lock at 0x........ - at 0x........: mutex_unlock_WRK (hg_intercepts.c:...) - by 0x........: pthread_mutex_unlock (hg_intercepts.c:...) -- by 0x........: main (tc20_verifywrap.c:135) -+ by 0x........: main (tc20_verifywrap.c:140) - - ---------------------------------------------------------------- - -@@ -92,7 +92,7 @@ Thread #x's call to pthread_mutex_unlock failed - with error code 1 (EPERM: Operation not permitted) - at 0x........: mutex_unlock_WRK (hg_intercepts.c:...) - by 0x........: pthread_mutex_unlock (hg_intercepts.c:...) -- by 0x........: main (tc20_verifywrap.c:135) -+ by 0x........: main (tc20_verifywrap.c:140) - - - ---------------- pthread_cond_wait et al ---------------- -@@ -102,7 +102,7 @@ Thread #x's call to pthread_mutex_unlock failed - Thread #x: pthread_cond_{timed}wait called with un-held mutex - at 0x........: pthread_cond_wait_WRK (hg_intercepts.c:...) - by 0x........: pthread_cond_wait@* (hg_intercepts.c:...) -- by 0x........: main (tc20_verifywrap.c:157) -+ by 0x........: main (tc20_verifywrap.c:162) - - ---------------------------------------------------------------- - -@@ -110,14 +110,14 @@ Thread #x's call to pthread_cond_wait failed - with error code 1 (EPERM: Operation not permitted) - at 0x........: pthread_cond_wait_WRK (hg_intercepts.c:...) - by 0x........: pthread_cond_wait@* (hg_intercepts.c:...) -- by 0x........: main (tc20_verifywrap.c:157) -+ by 0x........: main (tc20_verifywrap.c:162) - - ---------------------------------------------------------------- - - Thread #x: pthread_cond_{signal,broadcast}: dubious: associated lock is not held by any thread - at 0x........: pthread_cond_signal_WRK (hg_intercepts.c:...) - by 0x........: pthread_cond_signal@* (hg_intercepts.c:...) -- by 0x........: main (tc20_verifywrap.c:162) -+ by 0x........: main (tc20_verifywrap.c:167) - - - FIXME: can't figure out how to verify wrap of pthread_cond_signal -@@ -127,7 +127,7 @@ FIXME: can't figure out how to verify wrap of pthread_cond_signal - Thread #x: pthread_cond_{signal,broadcast}: dubious: associated lock is not held by any thread - at 0x........: pthread_cond_broadcast_WRK (hg_intercepts.c:...) - by 0x........: pthread_cond_broadcast@* (hg_intercepts.c:...) -- by 0x........: main (tc20_verifywrap.c:168) -+ by 0x........: main (tc20_verifywrap.c:173) - - - FIXME: can't figure out how to verify wrap of pthread_broadcast_signal -@@ -137,7 +137,7 @@ FIXME: can't figure out how to verify wrap of pthread_broadcast_signal - Thread #x: pthread_cond_{timed}wait called with un-held mutex - at 0x........: pthread_cond_timedwait_WRK (hg_intercepts.c:...) - by 0x........: pthread_cond_timedwait@* (hg_intercepts.c:...) -- by 0x........: main (tc20_verifywrap.c:175) -+ by 0x........: main (tc20_verifywrap.c:180) - - ---------------------------------------------------------------- - -@@ -145,7 +145,7 @@ Thread #x's call to pthread_cond_timedwait failed - with error code 1 (EPERM: Operation not permitted) - at 0x........: pthread_cond_timedwait_WRK (hg_intercepts.c:...) - by 0x........: pthread_cond_timedwait@* (hg_intercepts.c:...) -- by 0x........: main (tc20_verifywrap.c:175) -+ by 0x........: main (tc20_verifywrap.c:180) - - - ---------------- pthread_rwlock_* ---------------- -@@ -156,13 +156,13 @@ Thread #x unlocked a not-locked lock at 0x........ - at 0x........: pthread_rwlock_unlock_WRK (hg_intercepts.c:...) - by 0x........: pthread_rwlock_unlock (hg_intercepts.c:...) - ... -- by 0x........: main (tc20_verifywrap.c:189) -+ by 0x........: main (tc20_verifywrap.c:194) - Lock at 0x........ was first observed - at 0x........: pthread_rwlock_init (hg_intercepts.c:...) - ... -- by 0x........: main (tc20_verifywrap.c:188) -+ by 0x........: main (tc20_verifywrap.c:193) - Location 0x........ is 0 bytes inside rwl.__pthread_rwlock_readers, -- declared at tc20_verifywrap.c:52, in frame #x of thread x -+ declared at tc20_verifywrap.c:57, in frame #x of thread x - - - ---------------------------------------------------------------- -@@ -172,7 +172,7 @@ Thread #x's call to pthread_rwlock_unlock failed - at 0x........: pthread_rwlock_unlock_WRK (hg_intercepts.c:...) - by 0x........: pthread_rwlock_unlock (hg_intercepts.c:...) - ... -- by 0x........: main (tc20_verifywrap.c:189) -+ by 0x........: main (tc20_verifywrap.c:194) - - (1) no error on next line - (2) no error on next line -@@ -183,13 +183,13 @@ Thread #x unlocked a not-locked lock at 0x........ - at 0x........: pthread_rwlock_unlock_WRK (hg_intercepts.c:...) - by 0x........: pthread_rwlock_unlock (hg_intercepts.c:...) - ... -- by 0x........: main (tc20_verifywrap.c:206) -+ by 0x........: main (tc20_verifywrap.c:211) - Lock at 0x........ was first observed - at 0x........: pthread_rwlock_init (hg_intercepts.c:...) - ... -- by 0x........: main (tc20_verifywrap.c:196) -+ by 0x........: main (tc20_verifywrap.c:201) - Location 0x........ is 0 bytes inside rwl2.__pthread_rwlock_readers, -- declared at tc20_verifywrap.c:53, in frame #x of thread x -+ declared at tc20_verifywrap.c:58, in frame #x of thread x - - - ---------------------------------------------------------------- -@@ -199,7 +199,7 @@ Thread #x's call to pthread_rwlock_unlock failed - at 0x........: pthread_rwlock_unlock_WRK (hg_intercepts.c:...) - by 0x........: pthread_rwlock_unlock (hg_intercepts.c:...) - ... -- by 0x........: main (tc20_verifywrap.c:206) -+ by 0x........: main (tc20_verifywrap.c:211) - - (4) no error on next line - (5) no error on next line -@@ -212,13 +212,13 @@ Thread #x unlocked a not-locked lock at 0x........ - at 0x........: pthread_rwlock_unlock_WRK (hg_intercepts.c:...) - by 0x........: pthread_rwlock_unlock (hg_intercepts.c:...) - ... -- by 0x........: main (tc20_verifywrap.c:227) -+ by 0x........: main (tc20_verifywrap.c:232) - Lock at 0x........ was first observed - at 0x........: pthread_rwlock_init (hg_intercepts.c:...) - ... -- by 0x........: main (tc20_verifywrap.c:196) -+ by 0x........: main (tc20_verifywrap.c:201) - Location 0x........ is 0 bytes inside rwl2.__pthread_rwlock_readers, -- declared at tc20_verifywrap.c:53, in frame #x of thread x -+ declared at tc20_verifywrap.c:58, in frame #x of thread x - - - ---------------------------------------------------------------- -@@ -228,7 +228,11 @@ Thread #x's call to pthread_rwlock_unlock failed - at 0x........: pthread_rwlock_unlock_WRK (hg_intercepts.c:...) - by 0x........: pthread_rwlock_unlock (hg_intercepts.c:...) - ... -- by 0x........: main (tc20_verifywrap.c:227) -+ by 0x........: main (tc20_verifywrap.c:232) -+ -+ -+ -+---------------- pthread_spin_* ---------------- - - - ---------------- sem_* ---------------- -@@ -239,7 +243,7 @@ Thread #x's call to sema_init failed - with error code 22 (EINVAL: Invalid argument) - at 0x........: sema_init (hg_intercepts.c:...) - ... -- by 0x........: main (tc20_verifywrap.c:248) -+ by 0x........: main (tc20_verifywrap.c:267) - - - FIXME: can't figure out how to verify wrap of sem_destroy diff --git a/SOURCES/valgrind-3.11.0-rexw-cvtps2pd.patch b/SOURCES/valgrind-3.11.0-rexw-cvtps2pd.patch deleted file mode 100644 index 12cef42..0000000 --- a/SOURCES/valgrind-3.11.0-rexw-cvtps2pd.patch +++ /dev/null @@ -1,76 +0,0 @@ -diff --git a/VEX/priv/guest_amd64_toIR.c b/VEX/priv/guest_amd64_toIR.c -index 98596d2..06552e8 100644 ---- a/VEX/priv/guest_amd64_toIR.c -+++ b/VEX/priv/guest_amd64_toIR.c -@@ -13396,7 +13396,8 @@ Long dis_ESC_0F__SSE2 ( Bool* decode_OK, - case 0x5A: - /* 0F 5A = CVTPS2PD -- convert 2 x F32 in low half mem/xmm to 2 x - F64 in xmm(G). */ -- if (haveNo66noF2noF3(pfx) && sz == 4) { -+ if (haveNo66noF2noF3(pfx) -+ && (sz == 4 || /* ignore redundant REX.W */ sz == 8)) { - delta = dis_CVTPS2PD_128( vbi, pfx, delta, False/*!isAvx*/ ); - goto decode_success; - } -diff --git a/none/tests/amd64/redundantRexW.c b/none/tests/amd64/redundantRexW.c -index e189267..0a50c3b 100644 ---- a/none/tests/amd64/redundantRexW.c -+++ b/none/tests/amd64/redundantRexW.c -@@ -596,6 +596,23 @@ int main ( void ) - after_test( "rex.WB subsd -0x8(%r13),%xmm1", regs, mem ); - } - -+ /* cvtps2pd mem, reg 48 0f 5a 07 rex.W cvtps2pd (%rdi),%xmm0 */ -+ { -+ before_test( regs, mem ); -+ __asm__ __volatile__( -+ "movq %0, %%r14\n" -+ "\tmovq %1, %%r15\n" -+ LOAD_XMMREGS_from_r14 -+ "\tmovq %%r15, %%rdi\n" -+ "\t.byte 0x48,0x0f,0x5a,0x07\n" -+ SAVE_XMMREGS_to_r14 -+ : /*out*/ : /*in*/ "r"(regs), "r"( -0 + (char*)&mem->dqw[2] ) -+ : /*trash*/ "r14","r15","memory", XMMREGS, -+ "rdi" -+ ); -+ after_test( "rex.W cvtps2pd (%rdi),%xmm0", regs, mem ); -+ } -+ - free(regs); - free(mem); - return 0; -diff --git a/none/tests/amd64/redundantRexW.stdout.exp b/none/tests/amd64/redundantRexW.stdout.exp -index dd1697a..94b255a 100644 ---- a/none/tests/amd64/redundantRexW.stdout.exp -+++ b/none/tests/amd64/redundantRexW.stdout.exp -@@ -648,3 +648,29 @@ after "rex.WB subsd -0x8(%r13),%xmm1" (xmms in order [15..0]) { - %xmm15 ................................ - } - -+after "rex.W cvtps2pd (%rdi),%xmm0" (dqws in order [15 .. 0]) { -+ [0] ................................ -+ [1] ................................ -+ [2] ................................ -+ [3] ................................ -+ [4] ................................ -+} -+after "rex.W cvtps2pd (%rdi),%xmm0" (xmms in order [15..0]) { -+ %xmm 0 113a1c7d5554535213bd9cffd4535251 -+ %xmm 1 ................................ -+ %xmm 2 ................................ -+ %xmm 3 ................................ -+ %xmm 4 ................................ -+ %xmm 5 ................................ -+ %xmm 6 ................................ -+ %xmm 7 ................................ -+ %xmm 8 ................................ -+ %xmm 9 ................................ -+ %xmm10 ................................ -+ %xmm11 ................................ -+ %xmm12 ................................ -+ %xmm13 ................................ -+ %xmm14 ................................ -+ %xmm15 ................................ -+} -+ diff --git a/SOURCES/valgrind-3.11.0-rlimit_data.patch b/SOURCES/valgrind-3.11.0-rlimit_data.patch deleted file mode 100644 index 8c1c1fd..0000000 --- a/SOURCES/valgrind-3.11.0-rlimit_data.patch +++ /dev/null @@ -1,116 +0,0 @@ -diff --git a/coregrind/m_libcproc.c b/coregrind/m_libcproc.c -index f314b55..a30f7dc 100644 ---- a/coregrind/m_libcproc.c -+++ b/coregrind/m_libcproc.c -@@ -450,9 +450,6 @@ void VG_(execv) ( const HChar* filename, const HChar** argv ) - HChar** envp; - SysRes res; - -- /* restore the DATA rlimit for the child */ -- VG_(setrlimit)(VKI_RLIMIT_DATA, &VG_(client_rlimit_data)); -- - envp = VG_(env_clone)(VG_(client_envp)); - VG_(env_remove_valgrind_env_stuff)( envp, True /*ro_strings*/, NULL ); - -@@ -511,17 +508,9 @@ Int VG_(spawn) ( const HChar *filename, const HChar **argv ) - # undef COPY_CHAR_TO_ARGENV - # undef COPY_STRING_TOARGENV - -- /* HACK: Temporarily restore the DATA rlimit for spawned child. */ -- VG_(setrlimit)(VKI_RLIMIT_DATA, &VG_(client_rlimit_data)); -- - SysRes res = VG_(do_syscall5)(__NR_spawn, (UWord) filename, (UWord) NULL, 0, - (UWord) argenv, argenv_size); - -- /* Restore DATA rlimit back to its previous value set in m_main.c. */ -- struct vki_rlimit zero = { 0, 0 }; -- zero.rlim_max = VG_(client_rlimit_data).rlim_max; -- VG_(setrlimit)(VKI_RLIMIT_DATA, &zero); -- - VG_(free)(argenv); - for (HChar **p = envp; *p != NULL; p++) { - VG_(free)(*p); -diff --git a/coregrind/m_main.c b/coregrind/m_main.c -index 1821c94..9b659ae 100644 ---- a/coregrind/m_main.c -+++ b/coregrind/m_main.c -@@ -1627,7 +1627,6 @@ Int valgrind_main ( Int argc, HChar **argv, HChar **envp ) - Bool logging_to_fd = False; - const HChar* xml_fname_unexpanded = NULL; - Int loglevel, i; -- struct vki_rlimit zero = { 0, 0 }; - XArray* addr2dihandle = NULL; - - //============================================================ -@@ -1800,13 +1799,15 @@ Int valgrind_main ( Int argc, HChar **argv, HChar **envp ) - VG_(debugLog)(1, "main", "... %s\n", VG_(name_of_launcher)); - - //-------------------------------------------------------------- -- // Get the current process datasize rlimit, and set it to zero. -- // This prevents any internal uses of brk() from having any effect. -- // We remember the old value so we can restore it on exec, so that -- // child processes will have a reasonable brk value. -+ // We used to set the process datasize rlimit to zero to prevent -+ // any internal use of brk() from having any effect. But later -+ // linux kernels redefine RLIMIT_DATA as the size of any data -+ // areas, including some dynamic mmap memory allocations. -+ // See bug #357833 for the commit that went into linux 4.5 -+ // changing the definition of RLIMIT_DATA. So don't mess with -+ // RLIMIT_DATA here now anymore. Just remember it for use in -+ // the syscall wrappers. - VG_(getrlimit)(VKI_RLIMIT_DATA, &VG_(client_rlimit_data)); -- zero.rlim_max = VG_(client_rlimit_data).rlim_max; -- VG_(setrlimit)(VKI_RLIMIT_DATA, &zero); - - // Get the current process stack rlimit. - VG_(getrlimit)(VKI_RLIMIT_STACK, &VG_(client_rlimit_stack)); -diff --git a/coregrind/m_syswrap/syswrap-generic.c b/coregrind/m_syswrap/syswrap-generic.c -index aa60d67..061c1e1 100644 ---- a/coregrind/m_syswrap/syswrap-generic.c -+++ b/coregrind/m_syswrap/syswrap-generic.c -@@ -3014,9 +3014,6 @@ PRE(sys_execve) - vg_assert(j == tot_args+1); - } - -- /* restore the DATA rlimit for the child */ -- VG_(setrlimit)(VKI_RLIMIT_DATA, &VG_(client_rlimit_data)); -- - /* - Set the signal state up for exec. - -diff --git a/coregrind/m_syswrap/syswrap-solaris.c b/coregrind/m_syswrap/syswrap-solaris.c -index 4e2662c..c700b59 100644 ---- a/coregrind/m_syswrap/syswrap-solaris.c -+++ b/coregrind/m_syswrap/syswrap-solaris.c -@@ -1589,21 +1589,12 @@ PRE(sys_spawn) - #undef COPY_CHAR_TO_ARGENV - #undef COPY_STRING_TOARGENV - -- /* HACK: Temporarily restore the DATA rlimit for spawned child. -- This is a terrible hack to provide sensible brk limit for child. */ -- VG_(setrlimit)(VKI_RLIMIT_DATA, &VG_(client_rlimit_data)); -- - /* Actual spawn() syscall. */ - SysRes res = VG_(do_syscall5)(__NR_spawn, (UWord) path, (UWord) attrs, - attrs_size, (UWord) argenv, argenv_size); - SET_STATUS_from_SysRes(res); - VG_(free)(argenv); - -- /* Restore DATA rlimit back to its previous value set in m_main.c. */ -- struct vki_rlimit zero = { 0, 0 }; -- zero.rlim_max = VG_(client_rlimit_data).rlim_max; -- VG_(setrlimit)(VKI_RLIMIT_DATA, &zero); -- - if (SUCCESS) { - PRINT(" spawn: process %d spawned child %ld\n", VG_(getpid)(), RES); - } -@@ -3794,9 +3785,6 @@ PRE(sys_execve) - VG_(sigprocmask)(VKI_SIG_SETMASK, &tst->sig_mask, NULL); - } - -- /* Restore the DATA rlimit for the child. */ -- VG_(setrlimit)(VKI_RLIMIT_DATA, &VG_(client_rlimit_data)); -- - /* Debug-only printing. */ - if (0) { - HChar **cpp; diff --git a/SOURCES/valgrind-3.11.0-s390-hwcap.patch b/SOURCES/valgrind-3.11.0-s390-hwcap.patch deleted file mode 100644 index 4413a8e..0000000 --- a/SOURCES/valgrind-3.11.0-s390-hwcap.patch +++ /dev/null @@ -1,70 +0,0 @@ -On a zEC12 or z13, a glibc with lock elision enabled infers from HWCAP -that the prerequisites for lock elision are met. Then it may use TBEGIN -and other transactional-execution instructions which are not implemented -by Valgrind. Likewise, the upcoming glibc 2.23 will exploit vector -instructions if they are advertised by HWCAP; and those are currently -not implemented by Valgrind either. In general, the increased use of -ifunc may lead to more such cases in the future. - -This patch suppresses the advertising of those hardware features via -HWCAP which are either not known to Valgrind or currently unsupported. - -Patch by Andreas Arnez (arnez@linux.vnet.ibm.com). -Fixes BZ #353680. - -Modified: trunk/README.s390 -============================================================================== ---- trunk/README.s390 (original) -+++ trunk/README.s390 Mon Oct 12 21:35:56 2015 -@@ -22,6 +22,9 @@ - - Some gcc versions use mvc to copy 4/8 byte values. This will affect - certain debug messages. For example, memcheck will complain about - 4 one-byte reads/writes instead of just a single read/write. -+- The transactional-execution facility is not supported; it is masked -+ off from HWCAP. -+- The vector facility is not supported; it is masked off from HWCAP. - - - Hardware facilities - -Modified: trunk/coregrind/m_initimg/initimg-linux.c -============================================================================== ---- trunk/coregrind/m_initimg/initimg-linux.c (original) -+++ trunk/coregrind/m_initimg/initimg-linux.c Mon Oct 12 21:35:56 2015 -@@ -701,6 +701,12 @@ - in syswrap-arm-linux.c rather than to base this on - conditional compilation. */ - } -+# elif defined(VGP_s390x_linux) -+ { -+ /* Advertise hardware features "below" TE only. TE and VXRS -+ (and anything above) are not supported by Valgrind. */ -+ auxv->u.a_val &= VKI_HWCAP_S390_TE - 1; -+ } - # endif - break; - # if defined(VGP_ppc64be_linux) || defined(VGP_ppc64le_linux) - -Modified: trunk/include/vki/vki-s390x-linux.h -============================================================================== ---- trunk/include/vki/vki-s390x-linux.h (original) -+++ trunk/include/vki/vki-s390x-linux.h Mon Oct 12 21:35:56 2015 -@@ -800,12 +800,15 @@ - #define VKI_PTRACE_POKEUSR_AREA 0x5001 - - //---------------------------------------------------------------------- --// From linux-2.6.16.60/include/asm-s390/elf.h -+// From linux-3.18/include/asm-s390/elf.h - //---------------------------------------------------------------------- - - typedef vki_s390_fp_regs vki_elf_fpregset_t; - typedef vki_s390_regs vki_elf_gregset_t; - -+#define VKI_HWCAP_S390_TE 1024 -+#define VKI_HWCAP_S390_VXRS 2048 -+ - - //---------------------------------------------------------------------- - // From linux-2.6.16.60/include/asm-s390/ucontext.h - - diff --git a/SOURCES/valgrind-3.11.0-s390-separate-socketcalls.patch b/SOURCES/valgrind-3.11.0-s390-separate-socketcalls.patch deleted file mode 100644 index 96e0ef6..0000000 --- a/SOURCES/valgrind-3.11.0-s390-separate-socketcalls.patch +++ /dev/null @@ -1,79 +0,0 @@ -commit d9201968186f799b9a2c0793a29029819372a072 -Author: mjw -Date: Tue Feb 23 15:19:49 2016 +0000 - - Bug 359703 s390: wire up separate socketcalls system calls - - The linux 4.3 s390 kernel has separate system calls that were originally - hidden behind the socketcall multiplexer system call. Newer glibc versions - will use these direct system calls instead of socketcall when available. - Causing several regtest failures. - - This fix simply wires up the split out system calls directly to the - existing syswrap handlers for s390. - - git-svn-id: svn://svn.valgrind.org/valgrind/trunk@15802 a5019735-40e9-0310-863c-91ae7b9d1cf9 - -diff --git a/coregrind/m_syswrap/syswrap-s390x-linux.c b/coregrind/m_syswrap/syswrap-s390x-linux.c -index e919b8f..0513789 100644 ---- a/coregrind/m_syswrap/syswrap-s390x-linux.c -+++ b/coregrind/m_syswrap/syswrap-s390x-linux.c -@@ -1051,7 +1051,25 @@ static SyscallTableEntry syscall_table[] = { - // ?????(__NR_seccomp, ), // 348 - LINXY(__NR_getrandom, sys_getrandom), // 349 - -- LINXY(__NR_memfd_create, sys_memfd_create) // 350 -+ LINXY(__NR_memfd_create, sys_memfd_create), // 350 -+ -+ LINXY(__NR_recvmmsg, sys_recvmmsg), // 357 -+ LINXY(__NR_sendmmsg, sys_sendmmsg), // 358 -+ LINXY(__NR_socket, sys_socket), // 359 -+ LINXY(__NR_socketpair, sys_socketpair), // 360 -+ LINX_(__NR_bind, sys_bind), // 361 -+ LINX_(__NR_connect, sys_connect), // 362 -+ LINX_(__NR_listen, sys_listen), // 363 -+ LINXY(__NR_accept4, sys_accept4), // 364 -+ LINXY(__NR_getsockopt, sys_getsockopt), // 365 -+ LINX_(__NR_setsockopt, sys_setsockopt), // 366 -+ LINXY(__NR_getsockname, sys_getsockname), // 367 -+ LINXY(__NR_getpeername, sys_getpeername), // 368 -+ LINX_(__NR_sendto, sys_sendto), // 369 -+ LINX_(__NR_sendmsg, sys_sendmsg), // 270 -+ LINXY(__NR_recvfrom, sys_recvfrom), // 371 -+ LINXY(__NR_recvmsg, sys_recvmsg), // 372 -+ LINX_(__NR_shutdown, sys_shutdown) // 373 - }; - - SyscallTableEntry* ML_(get_linux_syscall_entry) ( UInt sysno ) -diff --git a/include/vki/vki-scnums-s390x-linux.h b/include/vki/vki-scnums-s390x-linux.h -index 2a4a8f1..0187045 100644 ---- a/include/vki/vki-scnums-s390x-linux.h -+++ b/include/vki/vki-scnums-s390x-linux.h -@@ -316,7 +316,26 @@ - #define __NR_seccomp 348 - #define __NR_getrandom 349 - #define __NR_memfd_create 350 --#define NR_syscalls 351 -+ -+#define __NR_recvmmsg 357 -+#define __NR_sendmmsg 358 -+#define __NR_socket 359 -+#define __NR_socketpair 360 -+#define __NR_bind 361 -+#define __NR_connect 362 -+#define __NR_listen 363 -+#define __NR_accept4 364 -+#define __NR_getsockopt 365 -+#define __NR_setsockopt 366 -+#define __NR_getsockname 367 -+#define __NR_getpeername 368 -+#define __NR_sendto 369 -+#define __NR_sendmsg 370 -+#define __NR_recvfrom 371 -+#define __NR_recvmsg 372 -+#define __NR_shutdown 373 -+ -+#define NR_syscalls 374 - - /* - * There are some system calls that are not present on 64 bit, some diff --git a/SOURCES/valgrind-3.11.0-s390x-popcnt.patch b/SOURCES/valgrind-3.11.0-s390x-popcnt.patch deleted file mode 100644 index 935d9fd..0000000 --- a/SOURCES/valgrind-3.11.0-s390x-popcnt.patch +++ /dev/null @@ -1,63 +0,0 @@ -commit 4b825ef5dcf064fd0f05323e7edd538ce02ac146 -Author: florian -Date: Wed Feb 17 19:57:01 2016 +0000 - - s390: Implement popcnt insn. Part of fixing BZ #359289. - Patch by Andreas Arnez (arnez@linux.vnet.ibm.com) - - - git-svn-id: svn://svn.valgrind.org/vex/trunk@3210 8f6e269a-dfd6-0310-a8e1-e2731360e62c - -diff --git a/VEX/priv/guest_s390_toIR.c b/VEX/priv/guest_s390_toIR.c -index 116a606..5e6acd4 100644 ---- a/VEX/priv/guest_s390_toIR.c -+++ b/VEX/priv/guest_s390_toIR.c -@@ -12938,6 +12938,38 @@ s390_irgen_FLOGR(UChar r1, UChar r2) - } - - static const HChar * -+s390_irgen_POPCNT(UChar r1, UChar r2) -+{ -+ Int i; -+ IRTemp val = newTemp(Ity_I64); -+ IRTemp mask[3]; -+ -+ assign(val, get_gpr_dw0(r2)); -+ for (i = 0; i < 3; i++) { -+ mask[i] = newTemp(Ity_I64); -+ } -+ assign(mask[0], mkU64(0x5555555555555555ULL)); -+ assign(mask[1], mkU64(0x3333333333333333ULL)); -+ assign(mask[2], mkU64(0x0F0F0F0F0F0F0F0FULL)); -+ for (i = 0; i < 3; i++) { -+ IRTemp tmp = newTemp(Ity_I64); -+ -+ assign(tmp, -+ binop(Iop_Add64, -+ binop(Iop_And64, -+ mkexpr(val), -+ mkexpr(mask[i])), -+ binop(Iop_And64, -+ binop(Iop_Shr64, mkexpr(val), mkU8(1 << i)), -+ mkexpr(mask[i])))); -+ val = tmp; -+ } -+ s390_cc_thunk_putZ(S390_CC_OP_BITWISE, val); -+ put_gpr_dw0(r1, mkexpr(val)); -+ return "popcnt"; -+} -+ -+static const HChar * - s390_irgen_STCK(IRTemp op2addr) - { - IRDirty *d; -@@ -14999,7 +15031,8 @@ s390_decode_4byte_and_irgen(const UChar *bytes) - ovl.fmt.RRE.r2); goto ok; - case 0xb9df: s390_format_RRE_RR(s390_irgen_CLHLR, ovl.fmt.RRE.r1, - ovl.fmt.RRE.r2); goto ok; -- case 0xb9e1: /* POPCNT */ goto unimplemented; -+ case 0xb9e1: s390_format_RRE_RR(s390_irgen_POPCNT, ovl.fmt.RRE.r1, -+ ovl.fmt.RRE.r2); goto ok; - case 0xb9e2: s390_format_RRF_U0RR(s390_irgen_LOCGR, ovl.fmt.RRF3.r3, - ovl.fmt.RRF3.r1, ovl.fmt.RRF3.r2, - S390_XMNM_LOCGR); goto ok; diff --git a/SOURCES/valgrind-3.11.0-s390x-risbgn.patch b/SOURCES/valgrind-3.11.0-s390x-risbgn.patch deleted file mode 100644 index def0fe2..0000000 --- a/SOURCES/valgrind-3.11.0-s390x-risbgn.patch +++ /dev/null @@ -1,1741 +0,0 @@ -commit 9ee91e10656ec648cdb6922fb5237659d944d6a9 -Author: cborntra -Date: Thu Apr 7 18:54:53 2016 +0000 - - Bug 361226 VEX part: s390x: risbgn (EC59) not implemented - - - git-svn-id: svn://svn.valgrind.org/vex/trunk@3216 8f6e269a-dfd6-0310-a8e1-e2731360e62c - -diff --git a/VEX/priv/guest_s390_toIR.c b/VEX/priv/guest_s390_toIR.c -index 5e6acd4..a587d2e 100644 ---- a/VEX/priv/guest_s390_toIR.c -+++ b/VEX/priv/guest_s390_toIR.c -@@ -7578,7 +7578,8 @@ s390_irgen_ROSBG(UChar r1, UChar r2, UChar i3, UChar i4, UChar i5) - } - - static const HChar * --s390_irgen_RISBG(UChar r1, UChar r2, UChar i3, UChar i4, UChar i5) -+s390_irgen_RISBGx(UChar r1, UChar r2, UChar i3, UChar i4, UChar i5, -+ Bool set_cc) - { - UChar from; - UChar to; -@@ -7612,9 +7613,24 @@ s390_irgen_RISBG(UChar r1, UChar r2, UChar i3, UChar i4, UChar i5) - put_gpr_dw0(r1, binop(Iop_And64, mkexpr(op2), mkU64(mask))); - } - assign(result, get_gpr_dw0(r1)); -- s390_cc_thunk_putS(S390_CC_OP_LOAD_AND_TEST, result); -+ if (set_cc) { -+ s390_cc_thunk_putS(S390_CC_OP_LOAD_AND_TEST, result); -+ return "risbg"; -+ } -+ -+ return "risbgn"; -+} -+ -+static const HChar * -+s390_irgen_RISBG(UChar r1, UChar r2, UChar i3, UChar i4, UChar i5) -+{ -+ return s390_irgen_RISBGx(r1, r2, i3, i4, i5, True); -+} - -- return "risbg"; -+static const HChar * -+s390_irgen_RISBGN(UChar r1, UChar r2, UChar i3, UChar i4, UChar i5) -+{ -+ return s390_irgen_RISBGx(r1, r2, i3, i4, i5, False); - } - - static const HChar * -@@ -16059,7 +16075,13 @@ s390_decode_6byte_and_irgen(const UChar *bytes) - ovl.fmt.RIE_RRUUU.i4, - ovl.fmt.RIE_RRUUU.i5); - goto ok; -- case 0xec0000000059ULL: /* RISBGN */ goto unimplemented; -+ case 0xec0000000059ULL: s390_format_RIE_RRUUU(s390_irgen_RISBGN, -+ ovl.fmt.RIE_RRUUU.r1, -+ ovl.fmt.RIE_RRUUU.r2, -+ ovl.fmt.RIE_RRUUU.i3, -+ ovl.fmt.RIE_RRUUU.i4, -+ ovl.fmt.RIE_RRUUU.i5); -+ goto ok; - case 0xec000000005dULL: /* RISBHG */ goto unimplemented; - case 0xec0000000064ULL: s390_format_RIE_RRPU(s390_irgen_CGRJ, - ovl.fmt.RIE_RRPU.r1, -commit 6a1772b2d1e47f19fb31d28218be8cacb5b72bca -Author: cborntra -Date: Thu Apr 7 18:55:25 2016 +0000 - - Bug 361226 valgrind part: s390x: risbgn (EC59) not implemented - - - git-svn-id: svn://svn.valgrind.org/valgrind/trunk@15852 a5019735-40e9-0310-863c-91ae7b9d1cf9 - -diff --git a/none/tests/s390x/opcodes.h b/none/tests/s390x/opcodes.h -index 0c5b737..e1fb3ef 100644 ---- a/none/tests/s390x/opcodes.h -+++ b/none/tests/s390x/opcodes.h -@@ -329,6 +329,7 @@ - #define RNSBG(r1,r2,i3,i4,i5) RIE_RRUUU(ec,r1,r2,i3,i4,i5,54) - #define ROSBG(r1,r2,i3,i4,i5) RIE_RRUUU(ec,r1,r2,i3,i4,i5,56) - #define RXSBG(r1,r2,i3,i4,i5) RIE_RRUUU(ec,r1,r2,i3,i4,i5,57) -+#define RISBGN(r1,r2,i3,i4,i5) RIE_RRUUU(ec,r1,r2,i3,i4,i5,59) - #define SFPC(r1) RRE_R0(b384,r1) - #define SGRK(r3,r1,r2) RRF_R0RR2(b9e9,r3,0,r1,r2) - #define SHHHR(r3,r1,r2) RRF_R0RR2(b9c9,r3,0,r1,r2) -diff --git a/none/tests/s390x/rxsbg.c b/none/tests/s390x/rxsbg.c -index 6e15325..f6ab4cd 100644 ---- a/none/tests/s390x/rxsbg.c -+++ b/none/tests/s390x/rxsbg.c -@@ -6,11 +6,12 @@ - register unsigned long r1 asm ("1") = _r1; \ - register unsigned long r2 asm ("2") = _r2; \ - int cc; \ -- asm volatile( insn(1,2, i3, i4, i5) \ -+ asm volatile( "clgr 1,2\n" \ -+ insn(1,2, i3, i4, i5) \ - "ipm %1\n" \ - "srl %1,28\n" \ - : "+d" (r1), "=d" (cc) \ -- : "d" (r1), "d" (r2) \ -+ : "d" (r1), "d" (r2) \ - : "cc"); \ - printf(#insn " r1(==%16.16lX),r2(==%16.16lX),0x" #i3 ",0x" #i4 ",0x" #i5 " = %16.16lX (cc=%d)\n", _r1, _r2, r1, cc); \ - }) -@@ -73,6 +74,7 @@ int main() - i5sweep(RNSBG); - i5sweep(ROSBG); - i5sweep(RXSBG); -+ i5sweep(RISBGN); - - return 0; - } -diff --git a/none/tests/s390x/rxsbg.stdout.exp b/none/tests/s390x/rxsbg.stdout.exp -index 9f1d918..4bab353 100644 ---- a/none/tests/s390x/rxsbg.stdout.exp -+++ b/none/tests/s390x/rxsbg.stdout.exp -@@ -6478,3 +6478,1623 @@ RXSBG r1(==FFFFFFFFFFFFFFFF),r2(==5555CCCCFFFF0000),0xbf,0xbf,0x3f = FFFFFFFFFFF - RXSBG r1(==0000000000000000),r2(==FFFFFFFFFFFFFFFF),0xbf,0xbf,0x3f = 0000000000000000 (cc=1) - RXSBG r1(==0000FFFFCCCCAAAA),r2(==FFFFFFFFFFFFFFFF),0xbf,0xbf,0x3f = 0000FFFFCCCCAAAA (cc=1) - RXSBG r1(==FFFFFFFFFFFFFFFF),r2(==FFFFFFFFFFFFFFFF),0xbf,0xbf,0x3f = FFFFFFFFFFFFFFFF (cc=0) -+RISBGN r1(==0000000000000000),r2(==0000000000000000),0x00,0x00,0x00 = 0000000000000000 (cc=0) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==0000000000000000),0x00,0x00,0x00 = 0000FFFFCCCCAAAA (cc=2) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==0000000000000000),0x00,0x00,0x00 = 7FFFFFFFFFFFFFFF (cc=2) -+RISBGN r1(==0000000000000000),r2(==5555CCCCFFFF0000),0x00,0x00,0x00 = 0000000000000000 (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==5555CCCCFFFF0000),0x00,0x00,0x00 = 0000FFFFCCCCAAAA (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==5555CCCCFFFF0000),0x00,0x00,0x00 = 7FFFFFFFFFFFFFFF (cc=2) -+RISBGN r1(==0000000000000000),r2(==FFFFFFFFFFFFFFFF),0x00,0x00,0x00 = 8000000000000000 (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==FFFFFFFFFFFFFFFF),0x00,0x00,0x00 = 8000FFFFCCCCAAAA (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==FFFFFFFFFFFFFFFF),0x00,0x00,0x00 = FFFFFFFFFFFFFFFF (cc=0) -+RISBGN r1(==0000000000000000),r2(==0000000000000000),0x14,0x00,0x00 = 0000000000000000 (cc=0) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==0000000000000000),0x14,0x00,0x00 = 0000F00000000000 (cc=2) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==0000000000000000),0x14,0x00,0x00 = 7FFFF00000000000 (cc=2) -+RISBGN r1(==0000000000000000),r2(==5555CCCCFFFF0000),0x14,0x00,0x00 = 00000CCCFFFF0000 (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==5555CCCCFFFF0000),0x14,0x00,0x00 = 0000FCCCFFFF0000 (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==5555CCCCFFFF0000),0x14,0x00,0x00 = 7FFFFCCCFFFF0000 (cc=2) -+RISBGN r1(==0000000000000000),r2(==FFFFFFFFFFFFFFFF),0x14,0x00,0x00 = 80000FFFFFFFFFFF (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==FFFFFFFFFFFFFFFF),0x14,0x00,0x00 = 8000FFFFFFFFFFFF (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==FFFFFFFFFFFFFFFF),0x14,0x00,0x00 = FFFFFFFFFFFFFFFF (cc=0) -+RISBGN r1(==0000000000000000),r2(==0000000000000000),0x3f,0x00,0x00 = 0000000000000000 (cc=0) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==0000000000000000),0x3f,0x00,0x00 = 0000FFFFCCCCAAAA (cc=2) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==0000000000000000),0x3f,0x00,0x00 = 7FFFFFFFFFFFFFFE (cc=2) -+RISBGN r1(==0000000000000000),r2(==5555CCCCFFFF0000),0x3f,0x00,0x00 = 0000000000000000 (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==5555CCCCFFFF0000),0x3f,0x00,0x00 = 0000FFFFCCCCAAAA (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==5555CCCCFFFF0000),0x3f,0x00,0x00 = 7FFFFFFFFFFFFFFE (cc=2) -+RISBGN r1(==0000000000000000),r2(==FFFFFFFFFFFFFFFF),0x3f,0x00,0x00 = 8000000000000001 (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==FFFFFFFFFFFFFFFF),0x3f,0x00,0x00 = 8000FFFFCCCCAAAB (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==FFFFFFFFFFFFFFFF),0x3f,0x00,0x00 = FFFFFFFFFFFFFFFF (cc=0) -+RISBGN r1(==0000000000000000),r2(==0000000000000000),0x80,0x00,0x00 = 0000000000000000 (cc=0) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==0000000000000000),0x80,0x00,0x00 = 0000FFFFCCCCAAAA (cc=2) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==0000000000000000),0x80,0x00,0x00 = 7FFFFFFFFFFFFFFF (cc=2) -+RISBGN r1(==0000000000000000),r2(==5555CCCCFFFF0000),0x80,0x00,0x00 = 0000000000000000 (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==5555CCCCFFFF0000),0x80,0x00,0x00 = 0000FFFFCCCCAAAA (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==5555CCCCFFFF0000),0x80,0x00,0x00 = 7FFFFFFFFFFFFFFF (cc=2) -+RISBGN r1(==0000000000000000),r2(==FFFFFFFFFFFFFFFF),0x80,0x00,0x00 = 8000000000000000 (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==FFFFFFFFFFFFFFFF),0x80,0x00,0x00 = 8000FFFFCCCCAAAA (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==FFFFFFFFFFFFFFFF),0x80,0x00,0x00 = FFFFFFFFFFFFFFFF (cc=0) -+RISBGN r1(==0000000000000000),r2(==0000000000000000),0xa1,0x00,0x00 = 0000000000000000 (cc=0) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==0000000000000000),0xa1,0x00,0x00 = 0000FFFF80000000 (cc=2) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==0000000000000000),0xa1,0x00,0x00 = 7FFFFFFF80000000 (cc=2) -+RISBGN r1(==0000000000000000),r2(==5555CCCCFFFF0000),0xa1,0x00,0x00 = 000000007FFF0000 (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==5555CCCCFFFF0000),0xa1,0x00,0x00 = 0000FFFFFFFF0000 (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==5555CCCCFFFF0000),0xa1,0x00,0x00 = 7FFFFFFFFFFF0000 (cc=2) -+RISBGN r1(==0000000000000000),r2(==FFFFFFFFFFFFFFFF),0xa1,0x00,0x00 = 800000007FFFFFFF (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==FFFFFFFFFFFFFFFF),0xa1,0x00,0x00 = 8000FFFFFFFFFFFF (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==FFFFFFFFFFFFFFFF),0xa1,0x00,0x00 = FFFFFFFFFFFFFFFF (cc=0) -+RISBGN r1(==0000000000000000),r2(==0000000000000000),0xbf,0x00,0x00 = 0000000000000000 (cc=0) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==0000000000000000),0xbf,0x00,0x00 = 0000FFFFCCCCAAAA (cc=2) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==0000000000000000),0xbf,0x00,0x00 = 7FFFFFFFFFFFFFFE (cc=2) -+RISBGN r1(==0000000000000000),r2(==5555CCCCFFFF0000),0xbf,0x00,0x00 = 0000000000000000 (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==5555CCCCFFFF0000),0xbf,0x00,0x00 = 0000FFFFCCCCAAAA (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==5555CCCCFFFF0000),0xbf,0x00,0x00 = 7FFFFFFFFFFFFFFE (cc=2) -+RISBGN r1(==0000000000000000),r2(==FFFFFFFFFFFFFFFF),0xbf,0x00,0x00 = 8000000000000001 (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==FFFFFFFFFFFFFFFF),0xbf,0x00,0x00 = 8000FFFFCCCCAAAB (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==FFFFFFFFFFFFFFFF),0xbf,0x00,0x00 = FFFFFFFFFFFFFFFF (cc=0) -+RISBGN r1(==0000000000000000),r2(==0000000000000000),0x00,0x2a,0x00 = 0000000000000000 (cc=0) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==0000000000000000),0x00,0x2a,0x00 = 00000000000CAAAA (cc=2) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==0000000000000000),0x00,0x2a,0x00 = 00000000001FFFFF (cc=2) -+RISBGN r1(==0000000000000000),r2(==5555CCCCFFFF0000),0x00,0x2a,0x00 = 5555CCCCFFE00000 (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==5555CCCCFFFF0000),0x00,0x2a,0x00 = 5555CCCCFFECAAAA (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==5555CCCCFFFF0000),0x00,0x2a,0x00 = 5555CCCCFFFFFFFF (cc=2) -+RISBGN r1(==0000000000000000),r2(==FFFFFFFFFFFFFFFF),0x00,0x2a,0x00 = FFFFFFFFFFE00000 (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==FFFFFFFFFFFFFFFF),0x00,0x2a,0x00 = FFFFFFFFFFECAAAA (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==FFFFFFFFFFFFFFFF),0x00,0x2a,0x00 = FFFFFFFFFFFFFFFF (cc=0) -+RISBGN r1(==0000000000000000),r2(==0000000000000000),0x14,0x2a,0x00 = 0000000000000000 (cc=0) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==0000000000000000),0x14,0x2a,0x00 = 0000F000000CAAAA (cc=2) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==0000000000000000),0x14,0x2a,0x00 = FFFFF000001FFFFF (cc=2) -+RISBGN r1(==0000000000000000),r2(==5555CCCCFFFF0000),0x14,0x2a,0x00 = 00000CCCFFE00000 (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==5555CCCCFFFF0000),0x14,0x2a,0x00 = 0000FCCCFFECAAAA (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==5555CCCCFFFF0000),0x14,0x2a,0x00 = FFFFFCCCFFFFFFFF (cc=2) -+RISBGN r1(==0000000000000000),r2(==FFFFFFFFFFFFFFFF),0x14,0x2a,0x00 = 00000FFFFFE00000 (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==FFFFFFFFFFFFFFFF),0x14,0x2a,0x00 = 0000FFFFFFECAAAA (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==FFFFFFFFFFFFFFFF),0x14,0x2a,0x00 = FFFFFFFFFFFFFFFF (cc=0) -+RISBGN r1(==0000000000000000),r2(==0000000000000000),0x3f,0x2a,0x00 = 0000000000000000 (cc=0) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==0000000000000000),0x3f,0x2a,0x00 = 00000000000CAAAA (cc=2) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==0000000000000000),0x3f,0x2a,0x00 = 00000000001FFFFE (cc=2) -+RISBGN r1(==0000000000000000),r2(==5555CCCCFFFF0000),0x3f,0x2a,0x00 = 5555CCCCFFE00000 (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==5555CCCCFFFF0000),0x3f,0x2a,0x00 = 5555CCCCFFECAAAA (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==5555CCCCFFFF0000),0x3f,0x2a,0x00 = 5555CCCCFFFFFFFE (cc=2) -+RISBGN r1(==0000000000000000),r2(==FFFFFFFFFFFFFFFF),0x3f,0x2a,0x00 = FFFFFFFFFFE00001 (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==FFFFFFFFFFFFFFFF),0x3f,0x2a,0x00 = FFFFFFFFFFECAAAB (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==FFFFFFFFFFFFFFFF),0x3f,0x2a,0x00 = FFFFFFFFFFFFFFFF (cc=0) -+RISBGN r1(==0000000000000000),r2(==0000000000000000),0x80,0x2a,0x00 = 0000000000000000 (cc=0) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==0000000000000000),0x80,0x2a,0x00 = 00000000000CAAAA (cc=2) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==0000000000000000),0x80,0x2a,0x00 = 00000000001FFFFF (cc=2) -+RISBGN r1(==0000000000000000),r2(==5555CCCCFFFF0000),0x80,0x2a,0x00 = 5555CCCCFFE00000 (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==5555CCCCFFFF0000),0x80,0x2a,0x00 = 5555CCCCFFECAAAA (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==5555CCCCFFFF0000),0x80,0x2a,0x00 = 5555CCCCFFFFFFFF (cc=2) -+RISBGN r1(==0000000000000000),r2(==FFFFFFFFFFFFFFFF),0x80,0x2a,0x00 = FFFFFFFFFFE00000 (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==FFFFFFFFFFFFFFFF),0x80,0x2a,0x00 = FFFFFFFFFFECAAAA (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==FFFFFFFFFFFFFFFF),0x80,0x2a,0x00 = FFFFFFFFFFFFFFFF (cc=0) -+RISBGN r1(==0000000000000000),r2(==0000000000000000),0xa1,0x2a,0x00 = 0000000000000000 (cc=0) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==0000000000000000),0xa1,0x2a,0x00 = 0000FFFF800CAAAA (cc=2) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==0000000000000000),0xa1,0x2a,0x00 = FFFFFFFF801FFFFF (cc=2) -+RISBGN r1(==0000000000000000),r2(==5555CCCCFFFF0000),0xa1,0x2a,0x00 = 000000007FE00000 (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==5555CCCCFFFF0000),0xa1,0x2a,0x00 = 0000FFFFFFECAAAA (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==5555CCCCFFFF0000),0xa1,0x2a,0x00 = FFFFFFFFFFFFFFFF (cc=2) -+RISBGN r1(==0000000000000000),r2(==FFFFFFFFFFFFFFFF),0xa1,0x2a,0x00 = 000000007FE00000 (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==FFFFFFFFFFFFFFFF),0xa1,0x2a,0x00 = 0000FFFFFFECAAAA (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==FFFFFFFFFFFFFFFF),0xa1,0x2a,0x00 = FFFFFFFFFFFFFFFF (cc=0) -+RISBGN r1(==0000000000000000),r2(==0000000000000000),0xbf,0x2a,0x00 = 0000000000000000 (cc=0) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==0000000000000000),0xbf,0x2a,0x00 = 00000000000CAAAA (cc=2) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==0000000000000000),0xbf,0x2a,0x00 = 00000000001FFFFE (cc=2) -+RISBGN r1(==0000000000000000),r2(==5555CCCCFFFF0000),0xbf,0x2a,0x00 = 5555CCCCFFE00000 (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==5555CCCCFFFF0000),0xbf,0x2a,0x00 = 5555CCCCFFECAAAA (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==5555CCCCFFFF0000),0xbf,0x2a,0x00 = 5555CCCCFFFFFFFE (cc=2) -+RISBGN r1(==0000000000000000),r2(==FFFFFFFFFFFFFFFF),0xbf,0x2a,0x00 = FFFFFFFFFFE00001 (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==FFFFFFFFFFFFFFFF),0xbf,0x2a,0x00 = FFFFFFFFFFECAAAB (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==FFFFFFFFFFFFFFFF),0xbf,0x2a,0x00 = FFFFFFFFFFFFFFFF (cc=0) -+RISBGN r1(==0000000000000000),r2(==0000000000000000),0x00,0x3f,0x00 = 0000000000000000 (cc=0) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==0000000000000000),0x00,0x3f,0x00 = 0000000000000000 (cc=2) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==0000000000000000),0x00,0x3f,0x00 = 0000000000000000 (cc=2) -+RISBGN r1(==0000000000000000),r2(==5555CCCCFFFF0000),0x00,0x3f,0x00 = 5555CCCCFFFF0000 (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==5555CCCCFFFF0000),0x00,0x3f,0x00 = 5555CCCCFFFF0000 (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==5555CCCCFFFF0000),0x00,0x3f,0x00 = 5555CCCCFFFF0000 (cc=2) -+RISBGN r1(==0000000000000000),r2(==FFFFFFFFFFFFFFFF),0x00,0x3f,0x00 = FFFFFFFFFFFFFFFF (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==FFFFFFFFFFFFFFFF),0x00,0x3f,0x00 = FFFFFFFFFFFFFFFF (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==FFFFFFFFFFFFFFFF),0x00,0x3f,0x00 = FFFFFFFFFFFFFFFF (cc=0) -+RISBGN r1(==0000000000000000),r2(==0000000000000000),0x14,0x3f,0x00 = 0000000000000000 (cc=0) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==0000000000000000),0x14,0x3f,0x00 = 0000F00000000000 (cc=2) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==0000000000000000),0x14,0x3f,0x00 = FFFFF00000000000 (cc=2) -+RISBGN r1(==0000000000000000),r2(==5555CCCCFFFF0000),0x14,0x3f,0x00 = 00000CCCFFFF0000 (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==5555CCCCFFFF0000),0x14,0x3f,0x00 = 0000FCCCFFFF0000 (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==5555CCCCFFFF0000),0x14,0x3f,0x00 = FFFFFCCCFFFF0000 (cc=2) -+RISBGN r1(==0000000000000000),r2(==FFFFFFFFFFFFFFFF),0x14,0x3f,0x00 = 00000FFFFFFFFFFF (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==FFFFFFFFFFFFFFFF),0x14,0x3f,0x00 = 0000FFFFFFFFFFFF (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==FFFFFFFFFFFFFFFF),0x14,0x3f,0x00 = FFFFFFFFFFFFFFFF (cc=0) -+RISBGN r1(==0000000000000000),r2(==0000000000000000),0x3f,0x3f,0x00 = 0000000000000000 (cc=0) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==0000000000000000),0x3f,0x3f,0x00 = 0000FFFFCCCCAAAA (cc=2) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==0000000000000000),0x3f,0x3f,0x00 = FFFFFFFFFFFFFFFE (cc=2) -+RISBGN r1(==0000000000000000),r2(==5555CCCCFFFF0000),0x3f,0x3f,0x00 = 0000000000000000 (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==5555CCCCFFFF0000),0x3f,0x3f,0x00 = 0000FFFFCCCCAAAA (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==5555CCCCFFFF0000),0x3f,0x3f,0x00 = FFFFFFFFFFFFFFFE (cc=2) -+RISBGN r1(==0000000000000000),r2(==FFFFFFFFFFFFFFFF),0x3f,0x3f,0x00 = 0000000000000001 (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==FFFFFFFFFFFFFFFF),0x3f,0x3f,0x00 = 0000FFFFCCCCAAAB (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==FFFFFFFFFFFFFFFF),0x3f,0x3f,0x00 = FFFFFFFFFFFFFFFF (cc=0) -+RISBGN r1(==0000000000000000),r2(==0000000000000000),0x80,0x3f,0x00 = 0000000000000000 (cc=0) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==0000000000000000),0x80,0x3f,0x00 = 0000000000000000 (cc=2) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==0000000000000000),0x80,0x3f,0x00 = 0000000000000000 (cc=2) -+RISBGN r1(==0000000000000000),r2(==5555CCCCFFFF0000),0x80,0x3f,0x00 = 5555CCCCFFFF0000 (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==5555CCCCFFFF0000),0x80,0x3f,0x00 = 5555CCCCFFFF0000 (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==5555CCCCFFFF0000),0x80,0x3f,0x00 = 5555CCCCFFFF0000 (cc=2) -+RISBGN r1(==0000000000000000),r2(==FFFFFFFFFFFFFFFF),0x80,0x3f,0x00 = FFFFFFFFFFFFFFFF (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==FFFFFFFFFFFFFFFF),0x80,0x3f,0x00 = FFFFFFFFFFFFFFFF (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==FFFFFFFFFFFFFFFF),0x80,0x3f,0x00 = FFFFFFFFFFFFFFFF (cc=0) -+RISBGN r1(==0000000000000000),r2(==0000000000000000),0xa1,0x3f,0x00 = 0000000000000000 (cc=0) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==0000000000000000),0xa1,0x3f,0x00 = 0000FFFF80000000 (cc=2) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==0000000000000000),0xa1,0x3f,0x00 = FFFFFFFF80000000 (cc=2) -+RISBGN r1(==0000000000000000),r2(==5555CCCCFFFF0000),0xa1,0x3f,0x00 = 000000007FFF0000 (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==5555CCCCFFFF0000),0xa1,0x3f,0x00 = 0000FFFFFFFF0000 (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==5555CCCCFFFF0000),0xa1,0x3f,0x00 = FFFFFFFFFFFF0000 (cc=2) -+RISBGN r1(==0000000000000000),r2(==FFFFFFFFFFFFFFFF),0xa1,0x3f,0x00 = 000000007FFFFFFF (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==FFFFFFFFFFFFFFFF),0xa1,0x3f,0x00 = 0000FFFFFFFFFFFF (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==FFFFFFFFFFFFFFFF),0xa1,0x3f,0x00 = FFFFFFFFFFFFFFFF (cc=0) -+RISBGN r1(==0000000000000000),r2(==0000000000000000),0xbf,0x3f,0x00 = 0000000000000000 (cc=0) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==0000000000000000),0xbf,0x3f,0x00 = 0000FFFFCCCCAAAA (cc=2) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==0000000000000000),0xbf,0x3f,0x00 = FFFFFFFFFFFFFFFE (cc=2) -+RISBGN r1(==0000000000000000),r2(==5555CCCCFFFF0000),0xbf,0x3f,0x00 = 0000000000000000 (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==5555CCCCFFFF0000),0xbf,0x3f,0x00 = 0000FFFFCCCCAAAA (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==5555CCCCFFFF0000),0xbf,0x3f,0x00 = FFFFFFFFFFFFFFFE (cc=2) -+RISBGN r1(==0000000000000000),r2(==FFFFFFFFFFFFFFFF),0xbf,0x3f,0x00 = 0000000000000001 (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==FFFFFFFFFFFFFFFF),0xbf,0x3f,0x00 = 0000FFFFCCCCAAAB (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==FFFFFFFFFFFFFFFF),0xbf,0x3f,0x00 = FFFFFFFFFFFFFFFF (cc=0) -+RISBGN r1(==0000000000000000),r2(==0000000000000000),0x00,0x80,0x00 = 0000000000000000 (cc=0) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==0000000000000000),0x00,0x80,0x00 = 0000000000000000 (cc=2) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==0000000000000000),0x00,0x80,0x00 = 0000000000000000 (cc=2) -+RISBGN r1(==0000000000000000),r2(==5555CCCCFFFF0000),0x00,0x80,0x00 = 0000000000000000 (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==5555CCCCFFFF0000),0x00,0x80,0x00 = 0000000000000000 (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==5555CCCCFFFF0000),0x00,0x80,0x00 = 0000000000000000 (cc=2) -+RISBGN r1(==0000000000000000),r2(==FFFFFFFFFFFFFFFF),0x00,0x80,0x00 = 8000000000000000 (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==FFFFFFFFFFFFFFFF),0x00,0x80,0x00 = 8000000000000000 (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==FFFFFFFFFFFFFFFF),0x00,0x80,0x00 = 8000000000000000 (cc=0) -+RISBGN r1(==0000000000000000),r2(==0000000000000000),0x14,0x80,0x00 = 0000000000000000 (cc=0) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==0000000000000000),0x14,0x80,0x00 = 0000000000000000 (cc=2) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==0000000000000000),0x14,0x80,0x00 = 0000000000000000 (cc=2) -+RISBGN r1(==0000000000000000),r2(==5555CCCCFFFF0000),0x14,0x80,0x00 = 00000CCCFFFF0000 (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==5555CCCCFFFF0000),0x14,0x80,0x00 = 00000CCCFFFF0000 (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==5555CCCCFFFF0000),0x14,0x80,0x00 = 00000CCCFFFF0000 (cc=2) -+RISBGN r1(==0000000000000000),r2(==FFFFFFFFFFFFFFFF),0x14,0x80,0x00 = 80000FFFFFFFFFFF (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==FFFFFFFFFFFFFFFF),0x14,0x80,0x00 = 80000FFFFFFFFFFF (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==FFFFFFFFFFFFFFFF),0x14,0x80,0x00 = 80000FFFFFFFFFFF (cc=0) -+RISBGN r1(==0000000000000000),r2(==0000000000000000),0x3f,0x80,0x00 = 0000000000000000 (cc=0) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==0000000000000000),0x3f,0x80,0x00 = 0000000000000000 (cc=2) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==0000000000000000),0x3f,0x80,0x00 = 0000000000000000 (cc=2) -+RISBGN r1(==0000000000000000),r2(==5555CCCCFFFF0000),0x3f,0x80,0x00 = 0000000000000000 (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==5555CCCCFFFF0000),0x3f,0x80,0x00 = 0000000000000000 (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==5555CCCCFFFF0000),0x3f,0x80,0x00 = 0000000000000000 (cc=2) -+RISBGN r1(==0000000000000000),r2(==FFFFFFFFFFFFFFFF),0x3f,0x80,0x00 = 8000000000000001 (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==FFFFFFFFFFFFFFFF),0x3f,0x80,0x00 = 8000000000000001 (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==FFFFFFFFFFFFFFFF),0x3f,0x80,0x00 = 8000000000000001 (cc=0) -+RISBGN r1(==0000000000000000),r2(==0000000000000000),0x80,0x80,0x00 = 0000000000000000 (cc=0) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==0000000000000000),0x80,0x80,0x00 = 0000000000000000 (cc=2) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==0000000000000000),0x80,0x80,0x00 = 0000000000000000 (cc=2) -+RISBGN r1(==0000000000000000),r2(==5555CCCCFFFF0000),0x80,0x80,0x00 = 0000000000000000 (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==5555CCCCFFFF0000),0x80,0x80,0x00 = 0000000000000000 (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==5555CCCCFFFF0000),0x80,0x80,0x00 = 0000000000000000 (cc=2) -+RISBGN r1(==0000000000000000),r2(==FFFFFFFFFFFFFFFF),0x80,0x80,0x00 = 8000000000000000 (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==FFFFFFFFFFFFFFFF),0x80,0x80,0x00 = 8000000000000000 (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==FFFFFFFFFFFFFFFF),0x80,0x80,0x00 = 8000000000000000 (cc=0) -+RISBGN r1(==0000000000000000),r2(==0000000000000000),0xa1,0x80,0x00 = 0000000000000000 (cc=0) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==0000000000000000),0xa1,0x80,0x00 = 0000000000000000 (cc=2) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==0000000000000000),0xa1,0x80,0x00 = 0000000000000000 (cc=2) -+RISBGN r1(==0000000000000000),r2(==5555CCCCFFFF0000),0xa1,0x80,0x00 = 000000007FFF0000 (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==5555CCCCFFFF0000),0xa1,0x80,0x00 = 000000007FFF0000 (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==5555CCCCFFFF0000),0xa1,0x80,0x00 = 000000007FFF0000 (cc=2) -+RISBGN r1(==0000000000000000),r2(==FFFFFFFFFFFFFFFF),0xa1,0x80,0x00 = 800000007FFFFFFF (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==FFFFFFFFFFFFFFFF),0xa1,0x80,0x00 = 800000007FFFFFFF (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==FFFFFFFFFFFFFFFF),0xa1,0x80,0x00 = 800000007FFFFFFF (cc=0) -+RISBGN r1(==0000000000000000),r2(==0000000000000000),0xbf,0x80,0x00 = 0000000000000000 (cc=0) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==0000000000000000),0xbf,0x80,0x00 = 0000000000000000 (cc=2) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==0000000000000000),0xbf,0x80,0x00 = 0000000000000000 (cc=2) -+RISBGN r1(==0000000000000000),r2(==5555CCCCFFFF0000),0xbf,0x80,0x00 = 0000000000000000 (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==5555CCCCFFFF0000),0xbf,0x80,0x00 = 0000000000000000 (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==5555CCCCFFFF0000),0xbf,0x80,0x00 = 0000000000000000 (cc=2) -+RISBGN r1(==0000000000000000),r2(==FFFFFFFFFFFFFFFF),0xbf,0x80,0x00 = 8000000000000001 (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==FFFFFFFFFFFFFFFF),0xbf,0x80,0x00 = 8000000000000001 (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==FFFFFFFFFFFFFFFF),0xbf,0x80,0x00 = 8000000000000001 (cc=0) -+RISBGN r1(==0000000000000000),r2(==0000000000000000),0x00,0x9e,0x00 = 0000000000000000 (cc=0) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==0000000000000000),0x00,0x9e,0x00 = 0000000000000000 (cc=2) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==0000000000000000),0x00,0x9e,0x00 = 0000000000000000 (cc=2) -+RISBGN r1(==0000000000000000),r2(==5555CCCCFFFF0000),0x00,0x9e,0x00 = 5555CCCC00000000 (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==5555CCCCFFFF0000),0x00,0x9e,0x00 = 5555CCCC00000000 (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==5555CCCCFFFF0000),0x00,0x9e,0x00 = 5555CCCC00000000 (cc=2) -+RISBGN r1(==0000000000000000),r2(==FFFFFFFFFFFFFFFF),0x00,0x9e,0x00 = FFFFFFFE00000000 (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==FFFFFFFFFFFFFFFF),0x00,0x9e,0x00 = FFFFFFFE00000000 (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==FFFFFFFFFFFFFFFF),0x00,0x9e,0x00 = FFFFFFFE00000000 (cc=0) -+RISBGN r1(==0000000000000000),r2(==0000000000000000),0x14,0x9e,0x00 = 0000000000000000 (cc=0) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==0000000000000000),0x14,0x9e,0x00 = 0000000000000000 (cc=2) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==0000000000000000),0x14,0x9e,0x00 = 0000000000000000 (cc=2) -+RISBGN r1(==0000000000000000),r2(==5555CCCCFFFF0000),0x14,0x9e,0x00 = 00000CCC00000000 (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==5555CCCCFFFF0000),0x14,0x9e,0x00 = 00000CCC00000000 (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==5555CCCCFFFF0000),0x14,0x9e,0x00 = 00000CCC00000000 (cc=2) -+RISBGN r1(==0000000000000000),r2(==FFFFFFFFFFFFFFFF),0x14,0x9e,0x00 = 00000FFE00000000 (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==FFFFFFFFFFFFFFFF),0x14,0x9e,0x00 = 00000FFE00000000 (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==FFFFFFFFFFFFFFFF),0x14,0x9e,0x00 = 00000FFE00000000 (cc=0) -+RISBGN r1(==0000000000000000),r2(==0000000000000000),0x3f,0x9e,0x00 = 0000000000000000 (cc=0) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==0000000000000000),0x3f,0x9e,0x00 = 0000000000000000 (cc=2) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==0000000000000000),0x3f,0x9e,0x00 = 0000000000000000 (cc=2) -+RISBGN r1(==0000000000000000),r2(==5555CCCCFFFF0000),0x3f,0x9e,0x00 = 5555CCCC00000000 (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==5555CCCCFFFF0000),0x3f,0x9e,0x00 = 5555CCCC00000000 (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==5555CCCCFFFF0000),0x3f,0x9e,0x00 = 5555CCCC00000000 (cc=2) -+RISBGN r1(==0000000000000000),r2(==FFFFFFFFFFFFFFFF),0x3f,0x9e,0x00 = FFFFFFFE00000001 (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==FFFFFFFFFFFFFFFF),0x3f,0x9e,0x00 = FFFFFFFE00000001 (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==FFFFFFFFFFFFFFFF),0x3f,0x9e,0x00 = FFFFFFFE00000001 (cc=0) -+RISBGN r1(==0000000000000000),r2(==0000000000000000),0x80,0x9e,0x00 = 0000000000000000 (cc=0) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==0000000000000000),0x80,0x9e,0x00 = 0000000000000000 (cc=2) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==0000000000000000),0x80,0x9e,0x00 = 0000000000000000 (cc=2) -+RISBGN r1(==0000000000000000),r2(==5555CCCCFFFF0000),0x80,0x9e,0x00 = 5555CCCC00000000 (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==5555CCCCFFFF0000),0x80,0x9e,0x00 = 5555CCCC00000000 (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==5555CCCCFFFF0000),0x80,0x9e,0x00 = 5555CCCC00000000 (cc=2) -+RISBGN r1(==0000000000000000),r2(==FFFFFFFFFFFFFFFF),0x80,0x9e,0x00 = FFFFFFFE00000000 (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==FFFFFFFFFFFFFFFF),0x80,0x9e,0x00 = FFFFFFFE00000000 (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==FFFFFFFFFFFFFFFF),0x80,0x9e,0x00 = FFFFFFFE00000000 (cc=0) -+RISBGN r1(==0000000000000000),r2(==0000000000000000),0xa1,0x9e,0x00 = 0000000000000000 (cc=0) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==0000000000000000),0xa1,0x9e,0x00 = 0000000000000000 (cc=2) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==0000000000000000),0xa1,0x9e,0x00 = 0000000000000000 (cc=2) -+RISBGN r1(==0000000000000000),r2(==5555CCCCFFFF0000),0xa1,0x9e,0x00 = 5555CCCC7FFF0000 (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==5555CCCCFFFF0000),0xa1,0x9e,0x00 = 5555CCCC7FFF0000 (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==5555CCCCFFFF0000),0xa1,0x9e,0x00 = 5555CCCC7FFF0000 (cc=2) -+RISBGN r1(==0000000000000000),r2(==FFFFFFFFFFFFFFFF),0xa1,0x9e,0x00 = FFFFFFFE7FFFFFFF (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==FFFFFFFFFFFFFFFF),0xa1,0x9e,0x00 = FFFFFFFE7FFFFFFF (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==FFFFFFFFFFFFFFFF),0xa1,0x9e,0x00 = FFFFFFFE7FFFFFFF (cc=0) -+RISBGN r1(==0000000000000000),r2(==0000000000000000),0xbf,0x9e,0x00 = 0000000000000000 (cc=0) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==0000000000000000),0xbf,0x9e,0x00 = 0000000000000000 (cc=2) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==0000000000000000),0xbf,0x9e,0x00 = 0000000000000000 (cc=2) -+RISBGN r1(==0000000000000000),r2(==5555CCCCFFFF0000),0xbf,0x9e,0x00 = 5555CCCC00000000 (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==5555CCCCFFFF0000),0xbf,0x9e,0x00 = 5555CCCC00000000 (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==5555CCCCFFFF0000),0xbf,0x9e,0x00 = 5555CCCC00000000 (cc=2) -+RISBGN r1(==0000000000000000),r2(==FFFFFFFFFFFFFFFF),0xbf,0x9e,0x00 = FFFFFFFE00000001 (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==FFFFFFFFFFFFFFFF),0xbf,0x9e,0x00 = FFFFFFFE00000001 (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==FFFFFFFFFFFFFFFF),0xbf,0x9e,0x00 = FFFFFFFE00000001 (cc=0) -+RISBGN r1(==0000000000000000),r2(==0000000000000000),0x00,0xbf,0x00 = 0000000000000000 (cc=0) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==0000000000000000),0x00,0xbf,0x00 = 0000000000000000 (cc=2) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==0000000000000000),0x00,0xbf,0x00 = 0000000000000000 (cc=2) -+RISBGN r1(==0000000000000000),r2(==5555CCCCFFFF0000),0x00,0xbf,0x00 = 5555CCCCFFFF0000 (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==5555CCCCFFFF0000),0x00,0xbf,0x00 = 5555CCCCFFFF0000 (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==5555CCCCFFFF0000),0x00,0xbf,0x00 = 5555CCCCFFFF0000 (cc=2) -+RISBGN r1(==0000000000000000),r2(==FFFFFFFFFFFFFFFF),0x00,0xbf,0x00 = FFFFFFFFFFFFFFFF (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==FFFFFFFFFFFFFFFF),0x00,0xbf,0x00 = FFFFFFFFFFFFFFFF (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==FFFFFFFFFFFFFFFF),0x00,0xbf,0x00 = FFFFFFFFFFFFFFFF (cc=0) -+RISBGN r1(==0000000000000000),r2(==0000000000000000),0x14,0xbf,0x00 = 0000000000000000 (cc=0) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==0000000000000000),0x14,0xbf,0x00 = 0000000000000000 (cc=2) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==0000000000000000),0x14,0xbf,0x00 = 0000000000000000 (cc=2) -+RISBGN r1(==0000000000000000),r2(==5555CCCCFFFF0000),0x14,0xbf,0x00 = 00000CCCFFFF0000 (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==5555CCCCFFFF0000),0x14,0xbf,0x00 = 00000CCCFFFF0000 (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==5555CCCCFFFF0000),0x14,0xbf,0x00 = 00000CCCFFFF0000 (cc=2) -+RISBGN r1(==0000000000000000),r2(==FFFFFFFFFFFFFFFF),0x14,0xbf,0x00 = 00000FFFFFFFFFFF (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==FFFFFFFFFFFFFFFF),0x14,0xbf,0x00 = 00000FFFFFFFFFFF (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==FFFFFFFFFFFFFFFF),0x14,0xbf,0x00 = 00000FFFFFFFFFFF (cc=0) -+RISBGN r1(==0000000000000000),r2(==0000000000000000),0x3f,0xbf,0x00 = 0000000000000000 (cc=0) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==0000000000000000),0x3f,0xbf,0x00 = 0000000000000000 (cc=2) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==0000000000000000),0x3f,0xbf,0x00 = 0000000000000000 (cc=2) -+RISBGN r1(==0000000000000000),r2(==5555CCCCFFFF0000),0x3f,0xbf,0x00 = 0000000000000000 (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==5555CCCCFFFF0000),0x3f,0xbf,0x00 = 0000000000000000 (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==5555CCCCFFFF0000),0x3f,0xbf,0x00 = 0000000000000000 (cc=2) -+RISBGN r1(==0000000000000000),r2(==FFFFFFFFFFFFFFFF),0x3f,0xbf,0x00 = 0000000000000001 (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==FFFFFFFFFFFFFFFF),0x3f,0xbf,0x00 = 0000000000000001 (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==FFFFFFFFFFFFFFFF),0x3f,0xbf,0x00 = 0000000000000001 (cc=0) -+RISBGN r1(==0000000000000000),r2(==0000000000000000),0x80,0xbf,0x00 = 0000000000000000 (cc=0) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==0000000000000000),0x80,0xbf,0x00 = 0000000000000000 (cc=2) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==0000000000000000),0x80,0xbf,0x00 = 0000000000000000 (cc=2) -+RISBGN r1(==0000000000000000),r2(==5555CCCCFFFF0000),0x80,0xbf,0x00 = 5555CCCCFFFF0000 (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==5555CCCCFFFF0000),0x80,0xbf,0x00 = 5555CCCCFFFF0000 (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==5555CCCCFFFF0000),0x80,0xbf,0x00 = 5555CCCCFFFF0000 (cc=2) -+RISBGN r1(==0000000000000000),r2(==FFFFFFFFFFFFFFFF),0x80,0xbf,0x00 = FFFFFFFFFFFFFFFF (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==FFFFFFFFFFFFFFFF),0x80,0xbf,0x00 = FFFFFFFFFFFFFFFF (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==FFFFFFFFFFFFFFFF),0x80,0xbf,0x00 = FFFFFFFFFFFFFFFF (cc=0) -+RISBGN r1(==0000000000000000),r2(==0000000000000000),0xa1,0xbf,0x00 = 0000000000000000 (cc=0) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==0000000000000000),0xa1,0xbf,0x00 = 0000000000000000 (cc=2) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==0000000000000000),0xa1,0xbf,0x00 = 0000000000000000 (cc=2) -+RISBGN r1(==0000000000000000),r2(==5555CCCCFFFF0000),0xa1,0xbf,0x00 = 000000007FFF0000 (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==5555CCCCFFFF0000),0xa1,0xbf,0x00 = 000000007FFF0000 (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==5555CCCCFFFF0000),0xa1,0xbf,0x00 = 000000007FFF0000 (cc=2) -+RISBGN r1(==0000000000000000),r2(==FFFFFFFFFFFFFFFF),0xa1,0xbf,0x00 = 000000007FFFFFFF (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==FFFFFFFFFFFFFFFF),0xa1,0xbf,0x00 = 000000007FFFFFFF (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==FFFFFFFFFFFFFFFF),0xa1,0xbf,0x00 = 000000007FFFFFFF (cc=0) -+RISBGN r1(==0000000000000000),r2(==0000000000000000),0xbf,0xbf,0x00 = 0000000000000000 (cc=0) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==0000000000000000),0xbf,0xbf,0x00 = 0000000000000000 (cc=2) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==0000000000000000),0xbf,0xbf,0x00 = 0000000000000000 (cc=2) -+RISBGN r1(==0000000000000000),r2(==5555CCCCFFFF0000),0xbf,0xbf,0x00 = 0000000000000000 (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==5555CCCCFFFF0000),0xbf,0xbf,0x00 = 0000000000000000 (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==5555CCCCFFFF0000),0xbf,0xbf,0x00 = 0000000000000000 (cc=2) -+RISBGN r1(==0000000000000000),r2(==FFFFFFFFFFFFFFFF),0xbf,0xbf,0x00 = 0000000000000001 (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==FFFFFFFFFFFFFFFF),0xbf,0xbf,0x00 = 0000000000000001 (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==FFFFFFFFFFFFFFFF),0xbf,0xbf,0x00 = 0000000000000001 (cc=0) -+RISBGN r1(==0000000000000000),r2(==0000000000000000),0x00,0x00,0x01 = 0000000000000000 (cc=0) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==0000000000000000),0x00,0x00,0x01 = 0000FFFFCCCCAAAA (cc=2) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==0000000000000000),0x00,0x00,0x01 = 7FFFFFFFFFFFFFFF (cc=2) -+RISBGN r1(==0000000000000000),r2(==5555CCCCFFFF0000),0x00,0x00,0x01 = 8000000000000000 (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==5555CCCCFFFF0000),0x00,0x00,0x01 = 8000FFFFCCCCAAAA (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==5555CCCCFFFF0000),0x00,0x00,0x01 = FFFFFFFFFFFFFFFF (cc=2) -+RISBGN r1(==0000000000000000),r2(==FFFFFFFFFFFFFFFF),0x00,0x00,0x01 = 8000000000000000 (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==FFFFFFFFFFFFFFFF),0x00,0x00,0x01 = 8000FFFFCCCCAAAA (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==FFFFFFFFFFFFFFFF),0x00,0x00,0x01 = FFFFFFFFFFFFFFFF (cc=0) -+RISBGN r1(==0000000000000000),r2(==0000000000000000),0x14,0x00,0x01 = 0000000000000000 (cc=0) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==0000000000000000),0x14,0x00,0x01 = 0000F00000000000 (cc=2) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==0000000000000000),0x14,0x00,0x01 = 7FFFF00000000000 (cc=2) -+RISBGN r1(==0000000000000000),r2(==5555CCCCFFFF0000),0x14,0x00,0x01 = 80000999FFFE0000 (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==5555CCCCFFFF0000),0x14,0x00,0x01 = 8000F999FFFE0000 (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==5555CCCCFFFF0000),0x14,0x00,0x01 = FFFFF999FFFE0000 (cc=2) -+RISBGN r1(==0000000000000000),r2(==FFFFFFFFFFFFFFFF),0x14,0x00,0x01 = 80000FFFFFFFFFFF (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==FFFFFFFFFFFFFFFF),0x14,0x00,0x01 = 8000FFFFFFFFFFFF (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==FFFFFFFFFFFFFFFF),0x14,0x00,0x01 = FFFFFFFFFFFFFFFF (cc=0) -+RISBGN r1(==0000000000000000),r2(==0000000000000000),0x3f,0x00,0x01 = 0000000000000000 (cc=0) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==0000000000000000),0x3f,0x00,0x01 = 0000FFFFCCCCAAAA (cc=2) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==0000000000000000),0x3f,0x00,0x01 = 7FFFFFFFFFFFFFFE (cc=2) -+RISBGN r1(==0000000000000000),r2(==5555CCCCFFFF0000),0x3f,0x00,0x01 = 8000000000000000 (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==5555CCCCFFFF0000),0x3f,0x00,0x01 = 8000FFFFCCCCAAAA (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==5555CCCCFFFF0000),0x3f,0x00,0x01 = FFFFFFFFFFFFFFFE (cc=2) -+RISBGN r1(==0000000000000000),r2(==FFFFFFFFFFFFFFFF),0x3f,0x00,0x01 = 8000000000000001 (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==FFFFFFFFFFFFFFFF),0x3f,0x00,0x01 = 8000FFFFCCCCAAAB (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==FFFFFFFFFFFFFFFF),0x3f,0x00,0x01 = FFFFFFFFFFFFFFFF (cc=0) -+RISBGN r1(==0000000000000000),r2(==0000000000000000),0x80,0x00,0x01 = 0000000000000000 (cc=0) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==0000000000000000),0x80,0x00,0x01 = 0000FFFFCCCCAAAA (cc=2) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==0000000000000000),0x80,0x00,0x01 = 7FFFFFFFFFFFFFFF (cc=2) -+RISBGN r1(==0000000000000000),r2(==5555CCCCFFFF0000),0x80,0x00,0x01 = 8000000000000000 (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==5555CCCCFFFF0000),0x80,0x00,0x01 = 8000FFFFCCCCAAAA (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==5555CCCCFFFF0000),0x80,0x00,0x01 = FFFFFFFFFFFFFFFF (cc=2) -+RISBGN r1(==0000000000000000),r2(==FFFFFFFFFFFFFFFF),0x80,0x00,0x01 = 8000000000000000 (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==FFFFFFFFFFFFFFFF),0x80,0x00,0x01 = 8000FFFFCCCCAAAA (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==FFFFFFFFFFFFFFFF),0x80,0x00,0x01 = FFFFFFFFFFFFFFFF (cc=0) -+RISBGN r1(==0000000000000000),r2(==0000000000000000),0xa1,0x00,0x01 = 0000000000000000 (cc=0) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==0000000000000000),0xa1,0x00,0x01 = 0000FFFF80000000 (cc=2) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==0000000000000000),0xa1,0x00,0x01 = 7FFFFFFF80000000 (cc=2) -+RISBGN r1(==0000000000000000),r2(==5555CCCCFFFF0000),0xa1,0x00,0x01 = 800000007FFE0000 (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==5555CCCCFFFF0000),0xa1,0x00,0x01 = 8000FFFFFFFE0000 (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==5555CCCCFFFF0000),0xa1,0x00,0x01 = FFFFFFFFFFFE0000 (cc=2) -+RISBGN r1(==0000000000000000),r2(==FFFFFFFFFFFFFFFF),0xa1,0x00,0x01 = 800000007FFFFFFF (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==FFFFFFFFFFFFFFFF),0xa1,0x00,0x01 = 8000FFFFFFFFFFFF (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==FFFFFFFFFFFFFFFF),0xa1,0x00,0x01 = FFFFFFFFFFFFFFFF (cc=0) -+RISBGN r1(==0000000000000000),r2(==0000000000000000),0xbf,0x00,0x01 = 0000000000000000 (cc=0) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==0000000000000000),0xbf,0x00,0x01 = 0000FFFFCCCCAAAA (cc=2) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==0000000000000000),0xbf,0x00,0x01 = 7FFFFFFFFFFFFFFE (cc=2) -+RISBGN r1(==0000000000000000),r2(==5555CCCCFFFF0000),0xbf,0x00,0x01 = 8000000000000000 (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==5555CCCCFFFF0000),0xbf,0x00,0x01 = 8000FFFFCCCCAAAA (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==5555CCCCFFFF0000),0xbf,0x00,0x01 = FFFFFFFFFFFFFFFE (cc=2) -+RISBGN r1(==0000000000000000),r2(==FFFFFFFFFFFFFFFF),0xbf,0x00,0x01 = 8000000000000001 (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==FFFFFFFFFFFFFFFF),0xbf,0x00,0x01 = 8000FFFFCCCCAAAB (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==FFFFFFFFFFFFFFFF),0xbf,0x00,0x01 = FFFFFFFFFFFFFFFF (cc=0) -+RISBGN r1(==0000000000000000),r2(==0000000000000000),0x00,0x2a,0x01 = 0000000000000000 (cc=0) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==0000000000000000),0x00,0x2a,0x01 = 00000000000CAAAA (cc=2) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==0000000000000000),0x00,0x2a,0x01 = 00000000001FFFFF (cc=2) -+RISBGN r1(==0000000000000000),r2(==5555CCCCFFFF0000),0x00,0x2a,0x01 = AAAB9999FFE00000 (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==5555CCCCFFFF0000),0x00,0x2a,0x01 = AAAB9999FFECAAAA (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==5555CCCCFFFF0000),0x00,0x2a,0x01 = AAAB9999FFFFFFFF (cc=2) -+RISBGN r1(==0000000000000000),r2(==FFFFFFFFFFFFFFFF),0x00,0x2a,0x01 = FFFFFFFFFFE00000 (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==FFFFFFFFFFFFFFFF),0x00,0x2a,0x01 = FFFFFFFFFFECAAAA (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==FFFFFFFFFFFFFFFF),0x00,0x2a,0x01 = FFFFFFFFFFFFFFFF (cc=0) -+RISBGN r1(==0000000000000000),r2(==0000000000000000),0x14,0x2a,0x01 = 0000000000000000 (cc=0) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==0000000000000000),0x14,0x2a,0x01 = 0000F000000CAAAA (cc=2) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==0000000000000000),0x14,0x2a,0x01 = FFFFF000001FFFFF (cc=2) -+RISBGN r1(==0000000000000000),r2(==5555CCCCFFFF0000),0x14,0x2a,0x01 = 00000999FFE00000 (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==5555CCCCFFFF0000),0x14,0x2a,0x01 = 0000F999FFECAAAA (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==5555CCCCFFFF0000),0x14,0x2a,0x01 = FFFFF999FFFFFFFF (cc=2) -+RISBGN r1(==0000000000000000),r2(==FFFFFFFFFFFFFFFF),0x14,0x2a,0x01 = 00000FFFFFE00000 (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==FFFFFFFFFFFFFFFF),0x14,0x2a,0x01 = 0000FFFFFFECAAAA (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==FFFFFFFFFFFFFFFF),0x14,0x2a,0x01 = FFFFFFFFFFFFFFFF (cc=0) -+RISBGN r1(==0000000000000000),r2(==0000000000000000),0x3f,0x2a,0x01 = 0000000000000000 (cc=0) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==0000000000000000),0x3f,0x2a,0x01 = 00000000000CAAAA (cc=2) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==0000000000000000),0x3f,0x2a,0x01 = 00000000001FFFFE (cc=2) -+RISBGN r1(==0000000000000000),r2(==5555CCCCFFFF0000),0x3f,0x2a,0x01 = AAAB9999FFE00000 (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==5555CCCCFFFF0000),0x3f,0x2a,0x01 = AAAB9999FFECAAAA (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==5555CCCCFFFF0000),0x3f,0x2a,0x01 = AAAB9999FFFFFFFE (cc=2) -+RISBGN r1(==0000000000000000),r2(==FFFFFFFFFFFFFFFF),0x3f,0x2a,0x01 = FFFFFFFFFFE00001 (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==FFFFFFFFFFFFFFFF),0x3f,0x2a,0x01 = FFFFFFFFFFECAAAB (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==FFFFFFFFFFFFFFFF),0x3f,0x2a,0x01 = FFFFFFFFFFFFFFFF (cc=0) -+RISBGN r1(==0000000000000000),r2(==0000000000000000),0x80,0x2a,0x01 = 0000000000000000 (cc=0) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==0000000000000000),0x80,0x2a,0x01 = 00000000000CAAAA (cc=2) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==0000000000000000),0x80,0x2a,0x01 = 00000000001FFFFF (cc=2) -+RISBGN r1(==0000000000000000),r2(==5555CCCCFFFF0000),0x80,0x2a,0x01 = AAAB9999FFE00000 (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==5555CCCCFFFF0000),0x80,0x2a,0x01 = AAAB9999FFECAAAA (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==5555CCCCFFFF0000),0x80,0x2a,0x01 = AAAB9999FFFFFFFF (cc=2) -+RISBGN r1(==0000000000000000),r2(==FFFFFFFFFFFFFFFF),0x80,0x2a,0x01 = FFFFFFFFFFE00000 (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==FFFFFFFFFFFFFFFF),0x80,0x2a,0x01 = FFFFFFFFFFECAAAA (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==FFFFFFFFFFFFFFFF),0x80,0x2a,0x01 = FFFFFFFFFFFFFFFF (cc=0) -+RISBGN r1(==0000000000000000),r2(==0000000000000000),0xa1,0x2a,0x01 = 0000000000000000 (cc=0) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==0000000000000000),0xa1,0x2a,0x01 = 0000FFFF800CAAAA (cc=2) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==0000000000000000),0xa1,0x2a,0x01 = FFFFFFFF801FFFFF (cc=2) -+RISBGN r1(==0000000000000000),r2(==5555CCCCFFFF0000),0xa1,0x2a,0x01 = 000000007FE00000 (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==5555CCCCFFFF0000),0xa1,0x2a,0x01 = 0000FFFFFFECAAAA (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==5555CCCCFFFF0000),0xa1,0x2a,0x01 = FFFFFFFFFFFFFFFF (cc=2) -+RISBGN r1(==0000000000000000),r2(==FFFFFFFFFFFFFFFF),0xa1,0x2a,0x01 = 000000007FE00000 (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==FFFFFFFFFFFFFFFF),0xa1,0x2a,0x01 = 0000FFFFFFECAAAA (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==FFFFFFFFFFFFFFFF),0xa1,0x2a,0x01 = FFFFFFFFFFFFFFFF (cc=0) -+RISBGN r1(==0000000000000000),r2(==0000000000000000),0xbf,0x2a,0x01 = 0000000000000000 (cc=0) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==0000000000000000),0xbf,0x2a,0x01 = 00000000000CAAAA (cc=2) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==0000000000000000),0xbf,0x2a,0x01 = 00000000001FFFFE (cc=2) -+RISBGN r1(==0000000000000000),r2(==5555CCCCFFFF0000),0xbf,0x2a,0x01 = AAAB9999FFE00000 (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==5555CCCCFFFF0000),0xbf,0x2a,0x01 = AAAB9999FFECAAAA (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==5555CCCCFFFF0000),0xbf,0x2a,0x01 = AAAB9999FFFFFFFE (cc=2) -+RISBGN r1(==0000000000000000),r2(==FFFFFFFFFFFFFFFF),0xbf,0x2a,0x01 = FFFFFFFFFFE00001 (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==FFFFFFFFFFFFFFFF),0xbf,0x2a,0x01 = FFFFFFFFFFECAAAB (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==FFFFFFFFFFFFFFFF),0xbf,0x2a,0x01 = FFFFFFFFFFFFFFFF (cc=0) -+RISBGN r1(==0000000000000000),r2(==0000000000000000),0x00,0x3f,0x01 = 0000000000000000 (cc=0) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==0000000000000000),0x00,0x3f,0x01 = 0000000000000000 (cc=2) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==0000000000000000),0x00,0x3f,0x01 = 0000000000000000 (cc=2) -+RISBGN r1(==0000000000000000),r2(==5555CCCCFFFF0000),0x00,0x3f,0x01 = AAAB9999FFFE0000 (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==5555CCCCFFFF0000),0x00,0x3f,0x01 = AAAB9999FFFE0000 (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==5555CCCCFFFF0000),0x00,0x3f,0x01 = AAAB9999FFFE0000 (cc=2) -+RISBGN r1(==0000000000000000),r2(==FFFFFFFFFFFFFFFF),0x00,0x3f,0x01 = FFFFFFFFFFFFFFFF (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==FFFFFFFFFFFFFFFF),0x00,0x3f,0x01 = FFFFFFFFFFFFFFFF (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==FFFFFFFFFFFFFFFF),0x00,0x3f,0x01 = FFFFFFFFFFFFFFFF (cc=0) -+RISBGN r1(==0000000000000000),r2(==0000000000000000),0x14,0x3f,0x01 = 0000000000000000 (cc=0) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==0000000000000000),0x14,0x3f,0x01 = 0000F00000000000 (cc=2) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==0000000000000000),0x14,0x3f,0x01 = FFFFF00000000000 (cc=2) -+RISBGN r1(==0000000000000000),r2(==5555CCCCFFFF0000),0x14,0x3f,0x01 = 00000999FFFE0000 (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==5555CCCCFFFF0000),0x14,0x3f,0x01 = 0000F999FFFE0000 (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==5555CCCCFFFF0000),0x14,0x3f,0x01 = FFFFF999FFFE0000 (cc=2) -+RISBGN r1(==0000000000000000),r2(==FFFFFFFFFFFFFFFF),0x14,0x3f,0x01 = 00000FFFFFFFFFFF (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==FFFFFFFFFFFFFFFF),0x14,0x3f,0x01 = 0000FFFFFFFFFFFF (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==FFFFFFFFFFFFFFFF),0x14,0x3f,0x01 = FFFFFFFFFFFFFFFF (cc=0) -+RISBGN r1(==0000000000000000),r2(==0000000000000000),0x3f,0x3f,0x01 = 0000000000000000 (cc=0) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==0000000000000000),0x3f,0x3f,0x01 = 0000FFFFCCCCAAAA (cc=2) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==0000000000000000),0x3f,0x3f,0x01 = FFFFFFFFFFFFFFFE (cc=2) -+RISBGN r1(==0000000000000000),r2(==5555CCCCFFFF0000),0x3f,0x3f,0x01 = 0000000000000000 (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==5555CCCCFFFF0000),0x3f,0x3f,0x01 = 0000FFFFCCCCAAAA (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==5555CCCCFFFF0000),0x3f,0x3f,0x01 = FFFFFFFFFFFFFFFE (cc=2) -+RISBGN r1(==0000000000000000),r2(==FFFFFFFFFFFFFFFF),0x3f,0x3f,0x01 = 0000000000000001 (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==FFFFFFFFFFFFFFFF),0x3f,0x3f,0x01 = 0000FFFFCCCCAAAB (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==FFFFFFFFFFFFFFFF),0x3f,0x3f,0x01 = FFFFFFFFFFFFFFFF (cc=0) -+RISBGN r1(==0000000000000000),r2(==0000000000000000),0x80,0x3f,0x01 = 0000000000000000 (cc=0) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==0000000000000000),0x80,0x3f,0x01 = 0000000000000000 (cc=2) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==0000000000000000),0x80,0x3f,0x01 = 0000000000000000 (cc=2) -+RISBGN r1(==0000000000000000),r2(==5555CCCCFFFF0000),0x80,0x3f,0x01 = AAAB9999FFFE0000 (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==5555CCCCFFFF0000),0x80,0x3f,0x01 = AAAB9999FFFE0000 (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==5555CCCCFFFF0000),0x80,0x3f,0x01 = AAAB9999FFFE0000 (cc=2) -+RISBGN r1(==0000000000000000),r2(==FFFFFFFFFFFFFFFF),0x80,0x3f,0x01 = FFFFFFFFFFFFFFFF (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==FFFFFFFFFFFFFFFF),0x80,0x3f,0x01 = FFFFFFFFFFFFFFFF (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==FFFFFFFFFFFFFFFF),0x80,0x3f,0x01 = FFFFFFFFFFFFFFFF (cc=0) -+RISBGN r1(==0000000000000000),r2(==0000000000000000),0xa1,0x3f,0x01 = 0000000000000000 (cc=0) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==0000000000000000),0xa1,0x3f,0x01 = 0000FFFF80000000 (cc=2) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==0000000000000000),0xa1,0x3f,0x01 = FFFFFFFF80000000 (cc=2) -+RISBGN r1(==0000000000000000),r2(==5555CCCCFFFF0000),0xa1,0x3f,0x01 = 000000007FFE0000 (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==5555CCCCFFFF0000),0xa1,0x3f,0x01 = 0000FFFFFFFE0000 (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==5555CCCCFFFF0000),0xa1,0x3f,0x01 = FFFFFFFFFFFE0000 (cc=2) -+RISBGN r1(==0000000000000000),r2(==FFFFFFFFFFFFFFFF),0xa1,0x3f,0x01 = 000000007FFFFFFF (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==FFFFFFFFFFFFFFFF),0xa1,0x3f,0x01 = 0000FFFFFFFFFFFF (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==FFFFFFFFFFFFFFFF),0xa1,0x3f,0x01 = FFFFFFFFFFFFFFFF (cc=0) -+RISBGN r1(==0000000000000000),r2(==0000000000000000),0xbf,0x3f,0x01 = 0000000000000000 (cc=0) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==0000000000000000),0xbf,0x3f,0x01 = 0000FFFFCCCCAAAA (cc=2) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==0000000000000000),0xbf,0x3f,0x01 = FFFFFFFFFFFFFFFE (cc=2) -+RISBGN r1(==0000000000000000),r2(==5555CCCCFFFF0000),0xbf,0x3f,0x01 = 0000000000000000 (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==5555CCCCFFFF0000),0xbf,0x3f,0x01 = 0000FFFFCCCCAAAA (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==5555CCCCFFFF0000),0xbf,0x3f,0x01 = FFFFFFFFFFFFFFFE (cc=2) -+RISBGN r1(==0000000000000000),r2(==FFFFFFFFFFFFFFFF),0xbf,0x3f,0x01 = 0000000000000001 (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==FFFFFFFFFFFFFFFF),0xbf,0x3f,0x01 = 0000FFFFCCCCAAAB (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==FFFFFFFFFFFFFFFF),0xbf,0x3f,0x01 = FFFFFFFFFFFFFFFF (cc=0) -+RISBGN r1(==0000000000000000),r2(==0000000000000000),0x00,0x80,0x01 = 0000000000000000 (cc=0) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==0000000000000000),0x00,0x80,0x01 = 0000000000000000 (cc=2) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==0000000000000000),0x00,0x80,0x01 = 0000000000000000 (cc=2) -+RISBGN r1(==0000000000000000),r2(==5555CCCCFFFF0000),0x00,0x80,0x01 = 8000000000000000 (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==5555CCCCFFFF0000),0x00,0x80,0x01 = 8000000000000000 (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==5555CCCCFFFF0000),0x00,0x80,0x01 = 8000000000000000 (cc=2) -+RISBGN r1(==0000000000000000),r2(==FFFFFFFFFFFFFFFF),0x00,0x80,0x01 = 8000000000000000 (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==FFFFFFFFFFFFFFFF),0x00,0x80,0x01 = 8000000000000000 (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==FFFFFFFFFFFFFFFF),0x00,0x80,0x01 = 8000000000000000 (cc=0) -+RISBGN r1(==0000000000000000),r2(==0000000000000000),0x14,0x80,0x01 = 0000000000000000 (cc=0) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==0000000000000000),0x14,0x80,0x01 = 0000000000000000 (cc=2) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==0000000000000000),0x14,0x80,0x01 = 0000000000000000 (cc=2) -+RISBGN r1(==0000000000000000),r2(==5555CCCCFFFF0000),0x14,0x80,0x01 = 80000999FFFE0000 (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==5555CCCCFFFF0000),0x14,0x80,0x01 = 80000999FFFE0000 (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==5555CCCCFFFF0000),0x14,0x80,0x01 = 80000999FFFE0000 (cc=2) -+RISBGN r1(==0000000000000000),r2(==FFFFFFFFFFFFFFFF),0x14,0x80,0x01 = 80000FFFFFFFFFFF (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==FFFFFFFFFFFFFFFF),0x14,0x80,0x01 = 80000FFFFFFFFFFF (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==FFFFFFFFFFFFFFFF),0x14,0x80,0x01 = 80000FFFFFFFFFFF (cc=0) -+RISBGN r1(==0000000000000000),r2(==0000000000000000),0x3f,0x80,0x01 = 0000000000000000 (cc=0) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==0000000000000000),0x3f,0x80,0x01 = 0000000000000000 (cc=2) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==0000000000000000),0x3f,0x80,0x01 = 0000000000000000 (cc=2) -+RISBGN r1(==0000000000000000),r2(==5555CCCCFFFF0000),0x3f,0x80,0x01 = 8000000000000000 (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==5555CCCCFFFF0000),0x3f,0x80,0x01 = 8000000000000000 (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==5555CCCCFFFF0000),0x3f,0x80,0x01 = 8000000000000000 (cc=2) -+RISBGN r1(==0000000000000000),r2(==FFFFFFFFFFFFFFFF),0x3f,0x80,0x01 = 8000000000000001 (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==FFFFFFFFFFFFFFFF),0x3f,0x80,0x01 = 8000000000000001 (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==FFFFFFFFFFFFFFFF),0x3f,0x80,0x01 = 8000000000000001 (cc=0) -+RISBGN r1(==0000000000000000),r2(==0000000000000000),0x80,0x80,0x01 = 0000000000000000 (cc=0) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==0000000000000000),0x80,0x80,0x01 = 0000000000000000 (cc=2) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==0000000000000000),0x80,0x80,0x01 = 0000000000000000 (cc=2) -+RISBGN r1(==0000000000000000),r2(==5555CCCCFFFF0000),0x80,0x80,0x01 = 8000000000000000 (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==5555CCCCFFFF0000),0x80,0x80,0x01 = 8000000000000000 (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==5555CCCCFFFF0000),0x80,0x80,0x01 = 8000000000000000 (cc=2) -+RISBGN r1(==0000000000000000),r2(==FFFFFFFFFFFFFFFF),0x80,0x80,0x01 = 8000000000000000 (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==FFFFFFFFFFFFFFFF),0x80,0x80,0x01 = 8000000000000000 (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==FFFFFFFFFFFFFFFF),0x80,0x80,0x01 = 8000000000000000 (cc=0) -+RISBGN r1(==0000000000000000),r2(==0000000000000000),0xa1,0x80,0x01 = 0000000000000000 (cc=0) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==0000000000000000),0xa1,0x80,0x01 = 0000000000000000 (cc=2) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==0000000000000000),0xa1,0x80,0x01 = 0000000000000000 (cc=2) -+RISBGN r1(==0000000000000000),r2(==5555CCCCFFFF0000),0xa1,0x80,0x01 = 800000007FFE0000 (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==5555CCCCFFFF0000),0xa1,0x80,0x01 = 800000007FFE0000 (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==5555CCCCFFFF0000),0xa1,0x80,0x01 = 800000007FFE0000 (cc=2) -+RISBGN r1(==0000000000000000),r2(==FFFFFFFFFFFFFFFF),0xa1,0x80,0x01 = 800000007FFFFFFF (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==FFFFFFFFFFFFFFFF),0xa1,0x80,0x01 = 800000007FFFFFFF (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==FFFFFFFFFFFFFFFF),0xa1,0x80,0x01 = 800000007FFFFFFF (cc=0) -+RISBGN r1(==0000000000000000),r2(==0000000000000000),0xbf,0x80,0x01 = 0000000000000000 (cc=0) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==0000000000000000),0xbf,0x80,0x01 = 0000000000000000 (cc=2) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==0000000000000000),0xbf,0x80,0x01 = 0000000000000000 (cc=2) -+RISBGN r1(==0000000000000000),r2(==5555CCCCFFFF0000),0xbf,0x80,0x01 = 8000000000000000 (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==5555CCCCFFFF0000),0xbf,0x80,0x01 = 8000000000000000 (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==5555CCCCFFFF0000),0xbf,0x80,0x01 = 8000000000000000 (cc=2) -+RISBGN r1(==0000000000000000),r2(==FFFFFFFFFFFFFFFF),0xbf,0x80,0x01 = 8000000000000001 (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==FFFFFFFFFFFFFFFF),0xbf,0x80,0x01 = 8000000000000001 (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==FFFFFFFFFFFFFFFF),0xbf,0x80,0x01 = 8000000000000001 (cc=0) -+RISBGN r1(==0000000000000000),r2(==0000000000000000),0x00,0x9e,0x01 = 0000000000000000 (cc=0) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==0000000000000000),0x00,0x9e,0x01 = 0000000000000000 (cc=2) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==0000000000000000),0x00,0x9e,0x01 = 0000000000000000 (cc=2) -+RISBGN r1(==0000000000000000),r2(==5555CCCCFFFF0000),0x00,0x9e,0x01 = AAAB999800000000 (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==5555CCCCFFFF0000),0x00,0x9e,0x01 = AAAB999800000000 (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==5555CCCCFFFF0000),0x00,0x9e,0x01 = AAAB999800000000 (cc=2) -+RISBGN r1(==0000000000000000),r2(==FFFFFFFFFFFFFFFF),0x00,0x9e,0x01 = FFFFFFFE00000000 (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==FFFFFFFFFFFFFFFF),0x00,0x9e,0x01 = FFFFFFFE00000000 (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==FFFFFFFFFFFFFFFF),0x00,0x9e,0x01 = FFFFFFFE00000000 (cc=0) -+RISBGN r1(==0000000000000000),r2(==0000000000000000),0x14,0x9e,0x01 = 0000000000000000 (cc=0) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==0000000000000000),0x14,0x9e,0x01 = 0000000000000000 (cc=2) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==0000000000000000),0x14,0x9e,0x01 = 0000000000000000 (cc=2) -+RISBGN r1(==0000000000000000),r2(==5555CCCCFFFF0000),0x14,0x9e,0x01 = 0000099800000000 (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==5555CCCCFFFF0000),0x14,0x9e,0x01 = 0000099800000000 (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==5555CCCCFFFF0000),0x14,0x9e,0x01 = 0000099800000000 (cc=2) -+RISBGN r1(==0000000000000000),r2(==FFFFFFFFFFFFFFFF),0x14,0x9e,0x01 = 00000FFE00000000 (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==FFFFFFFFFFFFFFFF),0x14,0x9e,0x01 = 00000FFE00000000 (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==FFFFFFFFFFFFFFFF),0x14,0x9e,0x01 = 00000FFE00000000 (cc=0) -+RISBGN r1(==0000000000000000),r2(==0000000000000000),0x3f,0x9e,0x01 = 0000000000000000 (cc=0) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==0000000000000000),0x3f,0x9e,0x01 = 0000000000000000 (cc=2) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==0000000000000000),0x3f,0x9e,0x01 = 0000000000000000 (cc=2) -+RISBGN r1(==0000000000000000),r2(==5555CCCCFFFF0000),0x3f,0x9e,0x01 = AAAB999800000000 (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==5555CCCCFFFF0000),0x3f,0x9e,0x01 = AAAB999800000000 (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==5555CCCCFFFF0000),0x3f,0x9e,0x01 = AAAB999800000000 (cc=2) -+RISBGN r1(==0000000000000000),r2(==FFFFFFFFFFFFFFFF),0x3f,0x9e,0x01 = FFFFFFFE00000001 (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==FFFFFFFFFFFFFFFF),0x3f,0x9e,0x01 = FFFFFFFE00000001 (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==FFFFFFFFFFFFFFFF),0x3f,0x9e,0x01 = FFFFFFFE00000001 (cc=0) -+RISBGN r1(==0000000000000000),r2(==0000000000000000),0x80,0x9e,0x01 = 0000000000000000 (cc=0) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==0000000000000000),0x80,0x9e,0x01 = 0000000000000000 (cc=2) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==0000000000000000),0x80,0x9e,0x01 = 0000000000000000 (cc=2) -+RISBGN r1(==0000000000000000),r2(==5555CCCCFFFF0000),0x80,0x9e,0x01 = AAAB999800000000 (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==5555CCCCFFFF0000),0x80,0x9e,0x01 = AAAB999800000000 (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==5555CCCCFFFF0000),0x80,0x9e,0x01 = AAAB999800000000 (cc=2) -+RISBGN r1(==0000000000000000),r2(==FFFFFFFFFFFFFFFF),0x80,0x9e,0x01 = FFFFFFFE00000000 (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==FFFFFFFFFFFFFFFF),0x80,0x9e,0x01 = FFFFFFFE00000000 (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==FFFFFFFFFFFFFFFF),0x80,0x9e,0x01 = FFFFFFFE00000000 (cc=0) -+RISBGN r1(==0000000000000000),r2(==0000000000000000),0xa1,0x9e,0x01 = 0000000000000000 (cc=0) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==0000000000000000),0xa1,0x9e,0x01 = 0000000000000000 (cc=2) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==0000000000000000),0xa1,0x9e,0x01 = 0000000000000000 (cc=2) -+RISBGN r1(==0000000000000000),r2(==5555CCCCFFFF0000),0xa1,0x9e,0x01 = AAAB99987FFE0000 (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==5555CCCCFFFF0000),0xa1,0x9e,0x01 = AAAB99987FFE0000 (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==5555CCCCFFFF0000),0xa1,0x9e,0x01 = AAAB99987FFE0000 (cc=2) -+RISBGN r1(==0000000000000000),r2(==FFFFFFFFFFFFFFFF),0xa1,0x9e,0x01 = FFFFFFFE7FFFFFFF (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==FFFFFFFFFFFFFFFF),0xa1,0x9e,0x01 = FFFFFFFE7FFFFFFF (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==FFFFFFFFFFFFFFFF),0xa1,0x9e,0x01 = FFFFFFFE7FFFFFFF (cc=0) -+RISBGN r1(==0000000000000000),r2(==0000000000000000),0xbf,0x9e,0x01 = 0000000000000000 (cc=0) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==0000000000000000),0xbf,0x9e,0x01 = 0000000000000000 (cc=2) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==0000000000000000),0xbf,0x9e,0x01 = 0000000000000000 (cc=2) -+RISBGN r1(==0000000000000000),r2(==5555CCCCFFFF0000),0xbf,0x9e,0x01 = AAAB999800000000 (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==5555CCCCFFFF0000),0xbf,0x9e,0x01 = AAAB999800000000 (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==5555CCCCFFFF0000),0xbf,0x9e,0x01 = AAAB999800000000 (cc=2) -+RISBGN r1(==0000000000000000),r2(==FFFFFFFFFFFFFFFF),0xbf,0x9e,0x01 = FFFFFFFE00000001 (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==FFFFFFFFFFFFFFFF),0xbf,0x9e,0x01 = FFFFFFFE00000001 (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==FFFFFFFFFFFFFFFF),0xbf,0x9e,0x01 = FFFFFFFE00000001 (cc=0) -+RISBGN r1(==0000000000000000),r2(==0000000000000000),0x00,0xbf,0x01 = 0000000000000000 (cc=0) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==0000000000000000),0x00,0xbf,0x01 = 0000000000000000 (cc=2) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==0000000000000000),0x00,0xbf,0x01 = 0000000000000000 (cc=2) -+RISBGN r1(==0000000000000000),r2(==5555CCCCFFFF0000),0x00,0xbf,0x01 = AAAB9999FFFE0000 (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==5555CCCCFFFF0000),0x00,0xbf,0x01 = AAAB9999FFFE0000 (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==5555CCCCFFFF0000),0x00,0xbf,0x01 = AAAB9999FFFE0000 (cc=2) -+RISBGN r1(==0000000000000000),r2(==FFFFFFFFFFFFFFFF),0x00,0xbf,0x01 = FFFFFFFFFFFFFFFF (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==FFFFFFFFFFFFFFFF),0x00,0xbf,0x01 = FFFFFFFFFFFFFFFF (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==FFFFFFFFFFFFFFFF),0x00,0xbf,0x01 = FFFFFFFFFFFFFFFF (cc=0) -+RISBGN r1(==0000000000000000),r2(==0000000000000000),0x14,0xbf,0x01 = 0000000000000000 (cc=0) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==0000000000000000),0x14,0xbf,0x01 = 0000000000000000 (cc=2) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==0000000000000000),0x14,0xbf,0x01 = 0000000000000000 (cc=2) -+RISBGN r1(==0000000000000000),r2(==5555CCCCFFFF0000),0x14,0xbf,0x01 = 00000999FFFE0000 (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==5555CCCCFFFF0000),0x14,0xbf,0x01 = 00000999FFFE0000 (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==5555CCCCFFFF0000),0x14,0xbf,0x01 = 00000999FFFE0000 (cc=2) -+RISBGN r1(==0000000000000000),r2(==FFFFFFFFFFFFFFFF),0x14,0xbf,0x01 = 00000FFFFFFFFFFF (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==FFFFFFFFFFFFFFFF),0x14,0xbf,0x01 = 00000FFFFFFFFFFF (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==FFFFFFFFFFFFFFFF),0x14,0xbf,0x01 = 00000FFFFFFFFFFF (cc=0) -+RISBGN r1(==0000000000000000),r2(==0000000000000000),0x3f,0xbf,0x01 = 0000000000000000 (cc=0) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==0000000000000000),0x3f,0xbf,0x01 = 0000000000000000 (cc=2) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==0000000000000000),0x3f,0xbf,0x01 = 0000000000000000 (cc=2) -+RISBGN r1(==0000000000000000),r2(==5555CCCCFFFF0000),0x3f,0xbf,0x01 = 0000000000000000 (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==5555CCCCFFFF0000),0x3f,0xbf,0x01 = 0000000000000000 (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==5555CCCCFFFF0000),0x3f,0xbf,0x01 = 0000000000000000 (cc=2) -+RISBGN r1(==0000000000000000),r2(==FFFFFFFFFFFFFFFF),0x3f,0xbf,0x01 = 0000000000000001 (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==FFFFFFFFFFFFFFFF),0x3f,0xbf,0x01 = 0000000000000001 (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==FFFFFFFFFFFFFFFF),0x3f,0xbf,0x01 = 0000000000000001 (cc=0) -+RISBGN r1(==0000000000000000),r2(==0000000000000000),0x80,0xbf,0x01 = 0000000000000000 (cc=0) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==0000000000000000),0x80,0xbf,0x01 = 0000000000000000 (cc=2) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==0000000000000000),0x80,0xbf,0x01 = 0000000000000000 (cc=2) -+RISBGN r1(==0000000000000000),r2(==5555CCCCFFFF0000),0x80,0xbf,0x01 = AAAB9999FFFE0000 (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==5555CCCCFFFF0000),0x80,0xbf,0x01 = AAAB9999FFFE0000 (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==5555CCCCFFFF0000),0x80,0xbf,0x01 = AAAB9999FFFE0000 (cc=2) -+RISBGN r1(==0000000000000000),r2(==FFFFFFFFFFFFFFFF),0x80,0xbf,0x01 = FFFFFFFFFFFFFFFF (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==FFFFFFFFFFFFFFFF),0x80,0xbf,0x01 = FFFFFFFFFFFFFFFF (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==FFFFFFFFFFFFFFFF),0x80,0xbf,0x01 = FFFFFFFFFFFFFFFF (cc=0) -+RISBGN r1(==0000000000000000),r2(==0000000000000000),0xa1,0xbf,0x01 = 0000000000000000 (cc=0) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==0000000000000000),0xa1,0xbf,0x01 = 0000000000000000 (cc=2) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==0000000000000000),0xa1,0xbf,0x01 = 0000000000000000 (cc=2) -+RISBGN r1(==0000000000000000),r2(==5555CCCCFFFF0000),0xa1,0xbf,0x01 = 000000007FFE0000 (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==5555CCCCFFFF0000),0xa1,0xbf,0x01 = 000000007FFE0000 (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==5555CCCCFFFF0000),0xa1,0xbf,0x01 = 000000007FFE0000 (cc=2) -+RISBGN r1(==0000000000000000),r2(==FFFFFFFFFFFFFFFF),0xa1,0xbf,0x01 = 000000007FFFFFFF (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==FFFFFFFFFFFFFFFF),0xa1,0xbf,0x01 = 000000007FFFFFFF (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==FFFFFFFFFFFFFFFF),0xa1,0xbf,0x01 = 000000007FFFFFFF (cc=0) -+RISBGN r1(==0000000000000000),r2(==0000000000000000),0xbf,0xbf,0x01 = 0000000000000000 (cc=0) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==0000000000000000),0xbf,0xbf,0x01 = 0000000000000000 (cc=2) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==0000000000000000),0xbf,0xbf,0x01 = 0000000000000000 (cc=2) -+RISBGN r1(==0000000000000000),r2(==5555CCCCFFFF0000),0xbf,0xbf,0x01 = 0000000000000000 (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==5555CCCCFFFF0000),0xbf,0xbf,0x01 = 0000000000000000 (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==5555CCCCFFFF0000),0xbf,0xbf,0x01 = 0000000000000000 (cc=2) -+RISBGN r1(==0000000000000000),r2(==FFFFFFFFFFFFFFFF),0xbf,0xbf,0x01 = 0000000000000001 (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==FFFFFFFFFFFFFFFF),0xbf,0xbf,0x01 = 0000000000000001 (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==FFFFFFFFFFFFFFFF),0xbf,0xbf,0x01 = 0000000000000001 (cc=0) -+RISBGN r1(==0000000000000000),r2(==0000000000000000),0x00,0x00,0x13 = 0000000000000000 (cc=0) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==0000000000000000),0x00,0x00,0x13 = 0000FFFFCCCCAAAA (cc=2) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==0000000000000000),0x00,0x00,0x13 = 7FFFFFFFFFFFFFFF (cc=2) -+RISBGN r1(==0000000000000000),r2(==5555CCCCFFFF0000),0x00,0x00,0x13 = 0000000000000000 (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==5555CCCCFFFF0000),0x00,0x00,0x13 = 0000FFFFCCCCAAAA (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==5555CCCCFFFF0000),0x00,0x00,0x13 = 7FFFFFFFFFFFFFFF (cc=2) -+RISBGN r1(==0000000000000000),r2(==FFFFFFFFFFFFFFFF),0x00,0x00,0x13 = 8000000000000000 (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==FFFFFFFFFFFFFFFF),0x00,0x00,0x13 = 8000FFFFCCCCAAAA (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==FFFFFFFFFFFFFFFF),0x00,0x00,0x13 = FFFFFFFFFFFFFFFF (cc=0) -+RISBGN r1(==0000000000000000),r2(==0000000000000000),0x14,0x00,0x13 = 0000000000000000 (cc=0) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==0000000000000000),0x14,0x00,0x13 = 0000F00000000000 (cc=2) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==0000000000000000),0x14,0x00,0x13 = 7FFFF00000000000 (cc=2) -+RISBGN r1(==0000000000000000),r2(==5555CCCCFFFF0000),0x14,0x00,0x13 = 00000FF80002AAAE (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==5555CCCCFFFF0000),0x14,0x00,0x13 = 0000FFF80002AAAE (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==5555CCCCFFFF0000),0x14,0x00,0x13 = 7FFFFFF80002AAAE (cc=2) -+RISBGN r1(==0000000000000000),r2(==FFFFFFFFFFFFFFFF),0x14,0x00,0x13 = 80000FFFFFFFFFFF (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==FFFFFFFFFFFFFFFF),0x14,0x00,0x13 = 8000FFFFFFFFFFFF (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==FFFFFFFFFFFFFFFF),0x14,0x00,0x13 = FFFFFFFFFFFFFFFF (cc=0) -+RISBGN r1(==0000000000000000),r2(==0000000000000000),0x3f,0x00,0x13 = 0000000000000000 (cc=0) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==0000000000000000),0x3f,0x00,0x13 = 0000FFFFCCCCAAAA (cc=2) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==0000000000000000),0x3f,0x00,0x13 = 7FFFFFFFFFFFFFFE (cc=2) -+RISBGN r1(==0000000000000000),r2(==5555CCCCFFFF0000),0x3f,0x00,0x13 = 0000000000000000 (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==5555CCCCFFFF0000),0x3f,0x00,0x13 = 0000FFFFCCCCAAAA (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==5555CCCCFFFF0000),0x3f,0x00,0x13 = 7FFFFFFFFFFFFFFE (cc=2) -+RISBGN r1(==0000000000000000),r2(==FFFFFFFFFFFFFFFF),0x3f,0x00,0x13 = 8000000000000001 (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==FFFFFFFFFFFFFFFF),0x3f,0x00,0x13 = 8000FFFFCCCCAAAB (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==FFFFFFFFFFFFFFFF),0x3f,0x00,0x13 = FFFFFFFFFFFFFFFF (cc=0) -+RISBGN r1(==0000000000000000),r2(==0000000000000000),0x80,0x00,0x13 = 0000000000000000 (cc=0) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==0000000000000000),0x80,0x00,0x13 = 0000FFFFCCCCAAAA (cc=2) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==0000000000000000),0x80,0x00,0x13 = 7FFFFFFFFFFFFFFF (cc=2) -+RISBGN r1(==0000000000000000),r2(==5555CCCCFFFF0000),0x80,0x00,0x13 = 0000000000000000 (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==5555CCCCFFFF0000),0x80,0x00,0x13 = 0000FFFFCCCCAAAA (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==5555CCCCFFFF0000),0x80,0x00,0x13 = 7FFFFFFFFFFFFFFF (cc=2) -+RISBGN r1(==0000000000000000),r2(==FFFFFFFFFFFFFFFF),0x80,0x00,0x13 = 8000000000000000 (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==FFFFFFFFFFFFFFFF),0x80,0x00,0x13 = 8000FFFFCCCCAAAA (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==FFFFFFFFFFFFFFFF),0x80,0x00,0x13 = FFFFFFFFFFFFFFFF (cc=0) -+RISBGN r1(==0000000000000000),r2(==0000000000000000),0xa1,0x00,0x13 = 0000000000000000 (cc=0) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==0000000000000000),0xa1,0x00,0x13 = 0000FFFF80000000 (cc=2) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==0000000000000000),0xa1,0x00,0x13 = 7FFFFFFF80000000 (cc=2) -+RISBGN r1(==0000000000000000),r2(==5555CCCCFFFF0000),0xa1,0x00,0x13 = 000000000002AAAE (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==5555CCCCFFFF0000),0xa1,0x00,0x13 = 0000FFFF8002AAAE (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==5555CCCCFFFF0000),0xa1,0x00,0x13 = 7FFFFFFF8002AAAE (cc=2) -+RISBGN r1(==0000000000000000),r2(==FFFFFFFFFFFFFFFF),0xa1,0x00,0x13 = 800000007FFFFFFF (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==FFFFFFFFFFFFFFFF),0xa1,0x00,0x13 = 8000FFFFFFFFFFFF (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==FFFFFFFFFFFFFFFF),0xa1,0x00,0x13 = FFFFFFFFFFFFFFFF (cc=0) -+RISBGN r1(==0000000000000000),r2(==0000000000000000),0xbf,0x00,0x13 = 0000000000000000 (cc=0) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==0000000000000000),0xbf,0x00,0x13 = 0000FFFFCCCCAAAA (cc=2) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==0000000000000000),0xbf,0x00,0x13 = 7FFFFFFFFFFFFFFE (cc=2) -+RISBGN r1(==0000000000000000),r2(==5555CCCCFFFF0000),0xbf,0x00,0x13 = 0000000000000000 (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==5555CCCCFFFF0000),0xbf,0x00,0x13 = 0000FFFFCCCCAAAA (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==5555CCCCFFFF0000),0xbf,0x00,0x13 = 7FFFFFFFFFFFFFFE (cc=2) -+RISBGN r1(==0000000000000000),r2(==FFFFFFFFFFFFFFFF),0xbf,0x00,0x13 = 8000000000000001 (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==FFFFFFFFFFFFFFFF),0xbf,0x00,0x13 = 8000FFFFCCCCAAAB (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==FFFFFFFFFFFFFFFF),0xbf,0x00,0x13 = FFFFFFFFFFFFFFFF (cc=0) -+RISBGN r1(==0000000000000000),r2(==0000000000000000),0x00,0x2a,0x13 = 0000000000000000 (cc=0) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==0000000000000000),0x00,0x2a,0x13 = 00000000000CAAAA (cc=2) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==0000000000000000),0x00,0x2a,0x13 = 00000000001FFFFF (cc=2) -+RISBGN r1(==0000000000000000),r2(==5555CCCCFFFF0000),0x00,0x2a,0x13 = 6667FFF800000000 (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==5555CCCCFFFF0000),0x00,0x2a,0x13 = 6667FFF8000CAAAA (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==5555CCCCFFFF0000),0x00,0x2a,0x13 = 6667FFF8001FFFFF (cc=2) -+RISBGN r1(==0000000000000000),r2(==FFFFFFFFFFFFFFFF),0x00,0x2a,0x13 = FFFFFFFFFFE00000 (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==FFFFFFFFFFFFFFFF),0x00,0x2a,0x13 = FFFFFFFFFFECAAAA (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==FFFFFFFFFFFFFFFF),0x00,0x2a,0x13 = FFFFFFFFFFFFFFFF (cc=0) -+RISBGN r1(==0000000000000000),r2(==0000000000000000),0x14,0x2a,0x13 = 0000000000000000 (cc=0) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==0000000000000000),0x14,0x2a,0x13 = 0000F000000CAAAA (cc=2) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==0000000000000000),0x14,0x2a,0x13 = FFFFF000001FFFFF (cc=2) -+RISBGN r1(==0000000000000000),r2(==5555CCCCFFFF0000),0x14,0x2a,0x13 = 00000FF800000000 (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==5555CCCCFFFF0000),0x14,0x2a,0x13 = 0000FFF8000CAAAA (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==5555CCCCFFFF0000),0x14,0x2a,0x13 = FFFFFFF8001FFFFF (cc=2) -+RISBGN r1(==0000000000000000),r2(==FFFFFFFFFFFFFFFF),0x14,0x2a,0x13 = 00000FFFFFE00000 (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==FFFFFFFFFFFFFFFF),0x14,0x2a,0x13 = 0000FFFFFFECAAAA (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==FFFFFFFFFFFFFFFF),0x14,0x2a,0x13 = FFFFFFFFFFFFFFFF (cc=0) -+RISBGN r1(==0000000000000000),r2(==0000000000000000),0x3f,0x2a,0x13 = 0000000000000000 (cc=0) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==0000000000000000),0x3f,0x2a,0x13 = 00000000000CAAAA (cc=2) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==0000000000000000),0x3f,0x2a,0x13 = 00000000001FFFFE (cc=2) -+RISBGN r1(==0000000000000000),r2(==5555CCCCFFFF0000),0x3f,0x2a,0x13 = 6667FFF800000000 (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==5555CCCCFFFF0000),0x3f,0x2a,0x13 = 6667FFF8000CAAAA (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==5555CCCCFFFF0000),0x3f,0x2a,0x13 = 6667FFF8001FFFFE (cc=2) -+RISBGN r1(==0000000000000000),r2(==FFFFFFFFFFFFFFFF),0x3f,0x2a,0x13 = FFFFFFFFFFE00001 (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==FFFFFFFFFFFFFFFF),0x3f,0x2a,0x13 = FFFFFFFFFFECAAAB (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==FFFFFFFFFFFFFFFF),0x3f,0x2a,0x13 = FFFFFFFFFFFFFFFF (cc=0) -+RISBGN r1(==0000000000000000),r2(==0000000000000000),0x80,0x2a,0x13 = 0000000000000000 (cc=0) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==0000000000000000),0x80,0x2a,0x13 = 00000000000CAAAA (cc=2) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==0000000000000000),0x80,0x2a,0x13 = 00000000001FFFFF (cc=2) -+RISBGN r1(==0000000000000000),r2(==5555CCCCFFFF0000),0x80,0x2a,0x13 = 6667FFF800000000 (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==5555CCCCFFFF0000),0x80,0x2a,0x13 = 6667FFF8000CAAAA (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==5555CCCCFFFF0000),0x80,0x2a,0x13 = 6667FFF8001FFFFF (cc=2) -+RISBGN r1(==0000000000000000),r2(==FFFFFFFFFFFFFFFF),0x80,0x2a,0x13 = FFFFFFFFFFE00000 (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==FFFFFFFFFFFFFFFF),0x80,0x2a,0x13 = FFFFFFFFFFECAAAA (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==FFFFFFFFFFFFFFFF),0x80,0x2a,0x13 = FFFFFFFFFFFFFFFF (cc=0) -+RISBGN r1(==0000000000000000),r2(==0000000000000000),0xa1,0x2a,0x13 = 0000000000000000 (cc=0) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==0000000000000000),0xa1,0x2a,0x13 = 0000FFFF800CAAAA (cc=2) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==0000000000000000),0xa1,0x2a,0x13 = FFFFFFFF801FFFFF (cc=2) -+RISBGN r1(==0000000000000000),r2(==5555CCCCFFFF0000),0xa1,0x2a,0x13 = 0000000000000000 (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==5555CCCCFFFF0000),0xa1,0x2a,0x13 = 0000FFFF800CAAAA (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==5555CCCCFFFF0000),0xa1,0x2a,0x13 = FFFFFFFF801FFFFF (cc=2) -+RISBGN r1(==0000000000000000),r2(==FFFFFFFFFFFFFFFF),0xa1,0x2a,0x13 = 000000007FE00000 (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==FFFFFFFFFFFFFFFF),0xa1,0x2a,0x13 = 0000FFFFFFECAAAA (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==FFFFFFFFFFFFFFFF),0xa1,0x2a,0x13 = FFFFFFFFFFFFFFFF (cc=0) -+RISBGN r1(==0000000000000000),r2(==0000000000000000),0xbf,0x2a,0x13 = 0000000000000000 (cc=0) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==0000000000000000),0xbf,0x2a,0x13 = 00000000000CAAAA (cc=2) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==0000000000000000),0xbf,0x2a,0x13 = 00000000001FFFFE (cc=2) -+RISBGN r1(==0000000000000000),r2(==5555CCCCFFFF0000),0xbf,0x2a,0x13 = 6667FFF800000000 (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==5555CCCCFFFF0000),0xbf,0x2a,0x13 = 6667FFF8000CAAAA (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==5555CCCCFFFF0000),0xbf,0x2a,0x13 = 6667FFF8001FFFFE (cc=2) -+RISBGN r1(==0000000000000000),r2(==FFFFFFFFFFFFFFFF),0xbf,0x2a,0x13 = FFFFFFFFFFE00001 (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==FFFFFFFFFFFFFFFF),0xbf,0x2a,0x13 = FFFFFFFFFFECAAAB (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==FFFFFFFFFFFFFFFF),0xbf,0x2a,0x13 = FFFFFFFFFFFFFFFF (cc=0) -+RISBGN r1(==0000000000000000),r2(==0000000000000000),0x00,0x3f,0x13 = 0000000000000000 (cc=0) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==0000000000000000),0x00,0x3f,0x13 = 0000000000000000 (cc=2) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==0000000000000000),0x00,0x3f,0x13 = 0000000000000000 (cc=2) -+RISBGN r1(==0000000000000000),r2(==5555CCCCFFFF0000),0x00,0x3f,0x13 = 6667FFF80002AAAE (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==5555CCCCFFFF0000),0x00,0x3f,0x13 = 6667FFF80002AAAE (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==5555CCCCFFFF0000),0x00,0x3f,0x13 = 6667FFF80002AAAE (cc=2) -+RISBGN r1(==0000000000000000),r2(==FFFFFFFFFFFFFFFF),0x00,0x3f,0x13 = FFFFFFFFFFFFFFFF (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==FFFFFFFFFFFFFFFF),0x00,0x3f,0x13 = FFFFFFFFFFFFFFFF (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==FFFFFFFFFFFFFFFF),0x00,0x3f,0x13 = FFFFFFFFFFFFFFFF (cc=0) -+RISBGN r1(==0000000000000000),r2(==0000000000000000),0x14,0x3f,0x13 = 0000000000000000 (cc=0) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==0000000000000000),0x14,0x3f,0x13 = 0000F00000000000 (cc=2) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==0000000000000000),0x14,0x3f,0x13 = FFFFF00000000000 (cc=2) -+RISBGN r1(==0000000000000000),r2(==5555CCCCFFFF0000),0x14,0x3f,0x13 = 00000FF80002AAAE (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==5555CCCCFFFF0000),0x14,0x3f,0x13 = 0000FFF80002AAAE (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==5555CCCCFFFF0000),0x14,0x3f,0x13 = FFFFFFF80002AAAE (cc=2) -+RISBGN r1(==0000000000000000),r2(==FFFFFFFFFFFFFFFF),0x14,0x3f,0x13 = 00000FFFFFFFFFFF (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==FFFFFFFFFFFFFFFF),0x14,0x3f,0x13 = 0000FFFFFFFFFFFF (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==FFFFFFFFFFFFFFFF),0x14,0x3f,0x13 = FFFFFFFFFFFFFFFF (cc=0) -+RISBGN r1(==0000000000000000),r2(==0000000000000000),0x3f,0x3f,0x13 = 0000000000000000 (cc=0) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==0000000000000000),0x3f,0x3f,0x13 = 0000FFFFCCCCAAAA (cc=2) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==0000000000000000),0x3f,0x3f,0x13 = FFFFFFFFFFFFFFFE (cc=2) -+RISBGN r1(==0000000000000000),r2(==5555CCCCFFFF0000),0x3f,0x3f,0x13 = 0000000000000000 (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==5555CCCCFFFF0000),0x3f,0x3f,0x13 = 0000FFFFCCCCAAAA (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==5555CCCCFFFF0000),0x3f,0x3f,0x13 = FFFFFFFFFFFFFFFE (cc=2) -+RISBGN r1(==0000000000000000),r2(==FFFFFFFFFFFFFFFF),0x3f,0x3f,0x13 = 0000000000000001 (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==FFFFFFFFFFFFFFFF),0x3f,0x3f,0x13 = 0000FFFFCCCCAAAB (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==FFFFFFFFFFFFFFFF),0x3f,0x3f,0x13 = FFFFFFFFFFFFFFFF (cc=0) -+RISBGN r1(==0000000000000000),r2(==0000000000000000),0x80,0x3f,0x13 = 0000000000000000 (cc=0) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==0000000000000000),0x80,0x3f,0x13 = 0000000000000000 (cc=2) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==0000000000000000),0x80,0x3f,0x13 = 0000000000000000 (cc=2) -+RISBGN r1(==0000000000000000),r2(==5555CCCCFFFF0000),0x80,0x3f,0x13 = 6667FFF80002AAAE (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==5555CCCCFFFF0000),0x80,0x3f,0x13 = 6667FFF80002AAAE (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==5555CCCCFFFF0000),0x80,0x3f,0x13 = 6667FFF80002AAAE (cc=2) -+RISBGN r1(==0000000000000000),r2(==FFFFFFFFFFFFFFFF),0x80,0x3f,0x13 = FFFFFFFFFFFFFFFF (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==FFFFFFFFFFFFFFFF),0x80,0x3f,0x13 = FFFFFFFFFFFFFFFF (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==FFFFFFFFFFFFFFFF),0x80,0x3f,0x13 = FFFFFFFFFFFFFFFF (cc=0) -+RISBGN r1(==0000000000000000),r2(==0000000000000000),0xa1,0x3f,0x13 = 0000000000000000 (cc=0) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==0000000000000000),0xa1,0x3f,0x13 = 0000FFFF80000000 (cc=2) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==0000000000000000),0xa1,0x3f,0x13 = FFFFFFFF80000000 (cc=2) -+RISBGN r1(==0000000000000000),r2(==5555CCCCFFFF0000),0xa1,0x3f,0x13 = 000000000002AAAE (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==5555CCCCFFFF0000),0xa1,0x3f,0x13 = 0000FFFF8002AAAE (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==5555CCCCFFFF0000),0xa1,0x3f,0x13 = FFFFFFFF8002AAAE (cc=2) -+RISBGN r1(==0000000000000000),r2(==FFFFFFFFFFFFFFFF),0xa1,0x3f,0x13 = 000000007FFFFFFF (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==FFFFFFFFFFFFFFFF),0xa1,0x3f,0x13 = 0000FFFFFFFFFFFF (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==FFFFFFFFFFFFFFFF),0xa1,0x3f,0x13 = FFFFFFFFFFFFFFFF (cc=0) -+RISBGN r1(==0000000000000000),r2(==0000000000000000),0xbf,0x3f,0x13 = 0000000000000000 (cc=0) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==0000000000000000),0xbf,0x3f,0x13 = 0000FFFFCCCCAAAA (cc=2) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==0000000000000000),0xbf,0x3f,0x13 = FFFFFFFFFFFFFFFE (cc=2) -+RISBGN r1(==0000000000000000),r2(==5555CCCCFFFF0000),0xbf,0x3f,0x13 = 0000000000000000 (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==5555CCCCFFFF0000),0xbf,0x3f,0x13 = 0000FFFFCCCCAAAA (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==5555CCCCFFFF0000),0xbf,0x3f,0x13 = FFFFFFFFFFFFFFFE (cc=2) -+RISBGN r1(==0000000000000000),r2(==FFFFFFFFFFFFFFFF),0xbf,0x3f,0x13 = 0000000000000001 (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==FFFFFFFFFFFFFFFF),0xbf,0x3f,0x13 = 0000FFFFCCCCAAAB (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==FFFFFFFFFFFFFFFF),0xbf,0x3f,0x13 = FFFFFFFFFFFFFFFF (cc=0) -+RISBGN r1(==0000000000000000),r2(==0000000000000000),0x00,0x80,0x13 = 0000000000000000 (cc=0) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==0000000000000000),0x00,0x80,0x13 = 0000000000000000 (cc=2) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==0000000000000000),0x00,0x80,0x13 = 0000000000000000 (cc=2) -+RISBGN r1(==0000000000000000),r2(==5555CCCCFFFF0000),0x00,0x80,0x13 = 0000000000000000 (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==5555CCCCFFFF0000),0x00,0x80,0x13 = 0000000000000000 (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==5555CCCCFFFF0000),0x00,0x80,0x13 = 0000000000000000 (cc=2) -+RISBGN r1(==0000000000000000),r2(==FFFFFFFFFFFFFFFF),0x00,0x80,0x13 = 8000000000000000 (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==FFFFFFFFFFFFFFFF),0x00,0x80,0x13 = 8000000000000000 (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==FFFFFFFFFFFFFFFF),0x00,0x80,0x13 = 8000000000000000 (cc=0) -+RISBGN r1(==0000000000000000),r2(==0000000000000000),0x14,0x80,0x13 = 0000000000000000 (cc=0) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==0000000000000000),0x14,0x80,0x13 = 0000000000000000 (cc=2) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==0000000000000000),0x14,0x80,0x13 = 0000000000000000 (cc=2) -+RISBGN r1(==0000000000000000),r2(==5555CCCCFFFF0000),0x14,0x80,0x13 = 00000FF80002AAAE (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==5555CCCCFFFF0000),0x14,0x80,0x13 = 00000FF80002AAAE (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==5555CCCCFFFF0000),0x14,0x80,0x13 = 00000FF80002AAAE (cc=2) -+RISBGN r1(==0000000000000000),r2(==FFFFFFFFFFFFFFFF),0x14,0x80,0x13 = 80000FFFFFFFFFFF (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==FFFFFFFFFFFFFFFF),0x14,0x80,0x13 = 80000FFFFFFFFFFF (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==FFFFFFFFFFFFFFFF),0x14,0x80,0x13 = 80000FFFFFFFFFFF (cc=0) -+RISBGN r1(==0000000000000000),r2(==0000000000000000),0x3f,0x80,0x13 = 0000000000000000 (cc=0) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==0000000000000000),0x3f,0x80,0x13 = 0000000000000000 (cc=2) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==0000000000000000),0x3f,0x80,0x13 = 0000000000000000 (cc=2) -+RISBGN r1(==0000000000000000),r2(==5555CCCCFFFF0000),0x3f,0x80,0x13 = 0000000000000000 (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==5555CCCCFFFF0000),0x3f,0x80,0x13 = 0000000000000000 (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==5555CCCCFFFF0000),0x3f,0x80,0x13 = 0000000000000000 (cc=2) -+RISBGN r1(==0000000000000000),r2(==FFFFFFFFFFFFFFFF),0x3f,0x80,0x13 = 8000000000000001 (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==FFFFFFFFFFFFFFFF),0x3f,0x80,0x13 = 8000000000000001 (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==FFFFFFFFFFFFFFFF),0x3f,0x80,0x13 = 8000000000000001 (cc=0) -+RISBGN r1(==0000000000000000),r2(==0000000000000000),0x80,0x80,0x13 = 0000000000000000 (cc=0) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==0000000000000000),0x80,0x80,0x13 = 0000000000000000 (cc=2) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==0000000000000000),0x80,0x80,0x13 = 0000000000000000 (cc=2) -+RISBGN r1(==0000000000000000),r2(==5555CCCCFFFF0000),0x80,0x80,0x13 = 0000000000000000 (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==5555CCCCFFFF0000),0x80,0x80,0x13 = 0000000000000000 (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==5555CCCCFFFF0000),0x80,0x80,0x13 = 0000000000000000 (cc=2) -+RISBGN r1(==0000000000000000),r2(==FFFFFFFFFFFFFFFF),0x80,0x80,0x13 = 8000000000000000 (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==FFFFFFFFFFFFFFFF),0x80,0x80,0x13 = 8000000000000000 (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==FFFFFFFFFFFFFFFF),0x80,0x80,0x13 = 8000000000000000 (cc=0) -+RISBGN r1(==0000000000000000),r2(==0000000000000000),0xa1,0x80,0x13 = 0000000000000000 (cc=0) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==0000000000000000),0xa1,0x80,0x13 = 0000000000000000 (cc=2) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==0000000000000000),0xa1,0x80,0x13 = 0000000000000000 (cc=2) -+RISBGN r1(==0000000000000000),r2(==5555CCCCFFFF0000),0xa1,0x80,0x13 = 000000000002AAAE (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==5555CCCCFFFF0000),0xa1,0x80,0x13 = 000000000002AAAE (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==5555CCCCFFFF0000),0xa1,0x80,0x13 = 000000000002AAAE (cc=2) -+RISBGN r1(==0000000000000000),r2(==FFFFFFFFFFFFFFFF),0xa1,0x80,0x13 = 800000007FFFFFFF (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==FFFFFFFFFFFFFFFF),0xa1,0x80,0x13 = 800000007FFFFFFF (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==FFFFFFFFFFFFFFFF),0xa1,0x80,0x13 = 800000007FFFFFFF (cc=0) -+RISBGN r1(==0000000000000000),r2(==0000000000000000),0xbf,0x80,0x13 = 0000000000000000 (cc=0) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==0000000000000000),0xbf,0x80,0x13 = 0000000000000000 (cc=2) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==0000000000000000),0xbf,0x80,0x13 = 0000000000000000 (cc=2) -+RISBGN r1(==0000000000000000),r2(==5555CCCCFFFF0000),0xbf,0x80,0x13 = 0000000000000000 (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==5555CCCCFFFF0000),0xbf,0x80,0x13 = 0000000000000000 (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==5555CCCCFFFF0000),0xbf,0x80,0x13 = 0000000000000000 (cc=2) -+RISBGN r1(==0000000000000000),r2(==FFFFFFFFFFFFFFFF),0xbf,0x80,0x13 = 8000000000000001 (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==FFFFFFFFFFFFFFFF),0xbf,0x80,0x13 = 8000000000000001 (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==FFFFFFFFFFFFFFFF),0xbf,0x80,0x13 = 8000000000000001 (cc=0) -+RISBGN r1(==0000000000000000),r2(==0000000000000000),0x00,0x9e,0x13 = 0000000000000000 (cc=0) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==0000000000000000),0x00,0x9e,0x13 = 0000000000000000 (cc=2) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==0000000000000000),0x00,0x9e,0x13 = 0000000000000000 (cc=2) -+RISBGN r1(==0000000000000000),r2(==5555CCCCFFFF0000),0x00,0x9e,0x13 = 6667FFF800000000 (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==5555CCCCFFFF0000),0x00,0x9e,0x13 = 6667FFF800000000 (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==5555CCCCFFFF0000),0x00,0x9e,0x13 = 6667FFF800000000 (cc=2) -+RISBGN r1(==0000000000000000),r2(==FFFFFFFFFFFFFFFF),0x00,0x9e,0x13 = FFFFFFFE00000000 (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==FFFFFFFFFFFFFFFF),0x00,0x9e,0x13 = FFFFFFFE00000000 (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==FFFFFFFFFFFFFFFF),0x00,0x9e,0x13 = FFFFFFFE00000000 (cc=0) -+RISBGN r1(==0000000000000000),r2(==0000000000000000),0x14,0x9e,0x13 = 0000000000000000 (cc=0) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==0000000000000000),0x14,0x9e,0x13 = 0000000000000000 (cc=2) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==0000000000000000),0x14,0x9e,0x13 = 0000000000000000 (cc=2) -+RISBGN r1(==0000000000000000),r2(==5555CCCCFFFF0000),0x14,0x9e,0x13 = 00000FF800000000 (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==5555CCCCFFFF0000),0x14,0x9e,0x13 = 00000FF800000000 (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==5555CCCCFFFF0000),0x14,0x9e,0x13 = 00000FF800000000 (cc=2) -+RISBGN r1(==0000000000000000),r2(==FFFFFFFFFFFFFFFF),0x14,0x9e,0x13 = 00000FFE00000000 (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==FFFFFFFFFFFFFFFF),0x14,0x9e,0x13 = 00000FFE00000000 (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==FFFFFFFFFFFFFFFF),0x14,0x9e,0x13 = 00000FFE00000000 (cc=0) -+RISBGN r1(==0000000000000000),r2(==0000000000000000),0x3f,0x9e,0x13 = 0000000000000000 (cc=0) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==0000000000000000),0x3f,0x9e,0x13 = 0000000000000000 (cc=2) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==0000000000000000),0x3f,0x9e,0x13 = 0000000000000000 (cc=2) -+RISBGN r1(==0000000000000000),r2(==5555CCCCFFFF0000),0x3f,0x9e,0x13 = 6667FFF800000000 (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==5555CCCCFFFF0000),0x3f,0x9e,0x13 = 6667FFF800000000 (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==5555CCCCFFFF0000),0x3f,0x9e,0x13 = 6667FFF800000000 (cc=2) -+RISBGN r1(==0000000000000000),r2(==FFFFFFFFFFFFFFFF),0x3f,0x9e,0x13 = FFFFFFFE00000001 (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==FFFFFFFFFFFFFFFF),0x3f,0x9e,0x13 = FFFFFFFE00000001 (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==FFFFFFFFFFFFFFFF),0x3f,0x9e,0x13 = FFFFFFFE00000001 (cc=0) -+RISBGN r1(==0000000000000000),r2(==0000000000000000),0x80,0x9e,0x13 = 0000000000000000 (cc=0) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==0000000000000000),0x80,0x9e,0x13 = 0000000000000000 (cc=2) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==0000000000000000),0x80,0x9e,0x13 = 0000000000000000 (cc=2) -+RISBGN r1(==0000000000000000),r2(==5555CCCCFFFF0000),0x80,0x9e,0x13 = 6667FFF800000000 (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==5555CCCCFFFF0000),0x80,0x9e,0x13 = 6667FFF800000000 (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==5555CCCCFFFF0000),0x80,0x9e,0x13 = 6667FFF800000000 (cc=2) -+RISBGN r1(==0000000000000000),r2(==FFFFFFFFFFFFFFFF),0x80,0x9e,0x13 = FFFFFFFE00000000 (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==FFFFFFFFFFFFFFFF),0x80,0x9e,0x13 = FFFFFFFE00000000 (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==FFFFFFFFFFFFFFFF),0x80,0x9e,0x13 = FFFFFFFE00000000 (cc=0) -+RISBGN r1(==0000000000000000),r2(==0000000000000000),0xa1,0x9e,0x13 = 0000000000000000 (cc=0) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==0000000000000000),0xa1,0x9e,0x13 = 0000000000000000 (cc=2) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==0000000000000000),0xa1,0x9e,0x13 = 0000000000000000 (cc=2) -+RISBGN r1(==0000000000000000),r2(==5555CCCCFFFF0000),0xa1,0x9e,0x13 = 6667FFF80002AAAE (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==5555CCCCFFFF0000),0xa1,0x9e,0x13 = 6667FFF80002AAAE (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==5555CCCCFFFF0000),0xa1,0x9e,0x13 = 6667FFF80002AAAE (cc=2) -+RISBGN r1(==0000000000000000),r2(==FFFFFFFFFFFFFFFF),0xa1,0x9e,0x13 = FFFFFFFE7FFFFFFF (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==FFFFFFFFFFFFFFFF),0xa1,0x9e,0x13 = FFFFFFFE7FFFFFFF (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==FFFFFFFFFFFFFFFF),0xa1,0x9e,0x13 = FFFFFFFE7FFFFFFF (cc=0) -+RISBGN r1(==0000000000000000),r2(==0000000000000000),0xbf,0x9e,0x13 = 0000000000000000 (cc=0) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==0000000000000000),0xbf,0x9e,0x13 = 0000000000000000 (cc=2) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==0000000000000000),0xbf,0x9e,0x13 = 0000000000000000 (cc=2) -+RISBGN r1(==0000000000000000),r2(==5555CCCCFFFF0000),0xbf,0x9e,0x13 = 6667FFF800000000 (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==5555CCCCFFFF0000),0xbf,0x9e,0x13 = 6667FFF800000000 (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==5555CCCCFFFF0000),0xbf,0x9e,0x13 = 6667FFF800000000 (cc=2) -+RISBGN r1(==0000000000000000),r2(==FFFFFFFFFFFFFFFF),0xbf,0x9e,0x13 = FFFFFFFE00000001 (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==FFFFFFFFFFFFFFFF),0xbf,0x9e,0x13 = FFFFFFFE00000001 (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==FFFFFFFFFFFFFFFF),0xbf,0x9e,0x13 = FFFFFFFE00000001 (cc=0) -+RISBGN r1(==0000000000000000),r2(==0000000000000000),0x00,0xbf,0x13 = 0000000000000000 (cc=0) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==0000000000000000),0x00,0xbf,0x13 = 0000000000000000 (cc=2) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==0000000000000000),0x00,0xbf,0x13 = 0000000000000000 (cc=2) -+RISBGN r1(==0000000000000000),r2(==5555CCCCFFFF0000),0x00,0xbf,0x13 = 6667FFF80002AAAE (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==5555CCCCFFFF0000),0x00,0xbf,0x13 = 6667FFF80002AAAE (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==5555CCCCFFFF0000),0x00,0xbf,0x13 = 6667FFF80002AAAE (cc=2) -+RISBGN r1(==0000000000000000),r2(==FFFFFFFFFFFFFFFF),0x00,0xbf,0x13 = FFFFFFFFFFFFFFFF (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==FFFFFFFFFFFFFFFF),0x00,0xbf,0x13 = FFFFFFFFFFFFFFFF (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==FFFFFFFFFFFFFFFF),0x00,0xbf,0x13 = FFFFFFFFFFFFFFFF (cc=0) -+RISBGN r1(==0000000000000000),r2(==0000000000000000),0x14,0xbf,0x13 = 0000000000000000 (cc=0) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==0000000000000000),0x14,0xbf,0x13 = 0000000000000000 (cc=2) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==0000000000000000),0x14,0xbf,0x13 = 0000000000000000 (cc=2) -+RISBGN r1(==0000000000000000),r2(==5555CCCCFFFF0000),0x14,0xbf,0x13 = 00000FF80002AAAE (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==5555CCCCFFFF0000),0x14,0xbf,0x13 = 00000FF80002AAAE (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==5555CCCCFFFF0000),0x14,0xbf,0x13 = 00000FF80002AAAE (cc=2) -+RISBGN r1(==0000000000000000),r2(==FFFFFFFFFFFFFFFF),0x14,0xbf,0x13 = 00000FFFFFFFFFFF (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==FFFFFFFFFFFFFFFF),0x14,0xbf,0x13 = 00000FFFFFFFFFFF (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==FFFFFFFFFFFFFFFF),0x14,0xbf,0x13 = 00000FFFFFFFFFFF (cc=0) -+RISBGN r1(==0000000000000000),r2(==0000000000000000),0x3f,0xbf,0x13 = 0000000000000000 (cc=0) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==0000000000000000),0x3f,0xbf,0x13 = 0000000000000000 (cc=2) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==0000000000000000),0x3f,0xbf,0x13 = 0000000000000000 (cc=2) -+RISBGN r1(==0000000000000000),r2(==5555CCCCFFFF0000),0x3f,0xbf,0x13 = 0000000000000000 (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==5555CCCCFFFF0000),0x3f,0xbf,0x13 = 0000000000000000 (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==5555CCCCFFFF0000),0x3f,0xbf,0x13 = 0000000000000000 (cc=2) -+RISBGN r1(==0000000000000000),r2(==FFFFFFFFFFFFFFFF),0x3f,0xbf,0x13 = 0000000000000001 (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==FFFFFFFFFFFFFFFF),0x3f,0xbf,0x13 = 0000000000000001 (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==FFFFFFFFFFFFFFFF),0x3f,0xbf,0x13 = 0000000000000001 (cc=0) -+RISBGN r1(==0000000000000000),r2(==0000000000000000),0x80,0xbf,0x13 = 0000000000000000 (cc=0) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==0000000000000000),0x80,0xbf,0x13 = 0000000000000000 (cc=2) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==0000000000000000),0x80,0xbf,0x13 = 0000000000000000 (cc=2) -+RISBGN r1(==0000000000000000),r2(==5555CCCCFFFF0000),0x80,0xbf,0x13 = 6667FFF80002AAAE (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==5555CCCCFFFF0000),0x80,0xbf,0x13 = 6667FFF80002AAAE (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==5555CCCCFFFF0000),0x80,0xbf,0x13 = 6667FFF80002AAAE (cc=2) -+RISBGN r1(==0000000000000000),r2(==FFFFFFFFFFFFFFFF),0x80,0xbf,0x13 = FFFFFFFFFFFFFFFF (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==FFFFFFFFFFFFFFFF),0x80,0xbf,0x13 = FFFFFFFFFFFFFFFF (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==FFFFFFFFFFFFFFFF),0x80,0xbf,0x13 = FFFFFFFFFFFFFFFF (cc=0) -+RISBGN r1(==0000000000000000),r2(==0000000000000000),0xa1,0xbf,0x13 = 0000000000000000 (cc=0) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==0000000000000000),0xa1,0xbf,0x13 = 0000000000000000 (cc=2) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==0000000000000000),0xa1,0xbf,0x13 = 0000000000000000 (cc=2) -+RISBGN r1(==0000000000000000),r2(==5555CCCCFFFF0000),0xa1,0xbf,0x13 = 000000000002AAAE (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==5555CCCCFFFF0000),0xa1,0xbf,0x13 = 000000000002AAAE (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==5555CCCCFFFF0000),0xa1,0xbf,0x13 = 000000000002AAAE (cc=2) -+RISBGN r1(==0000000000000000),r2(==FFFFFFFFFFFFFFFF),0xa1,0xbf,0x13 = 000000007FFFFFFF (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==FFFFFFFFFFFFFFFF),0xa1,0xbf,0x13 = 000000007FFFFFFF (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==FFFFFFFFFFFFFFFF),0xa1,0xbf,0x13 = 000000007FFFFFFF (cc=0) -+RISBGN r1(==0000000000000000),r2(==0000000000000000),0xbf,0xbf,0x13 = 0000000000000000 (cc=0) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==0000000000000000),0xbf,0xbf,0x13 = 0000000000000000 (cc=2) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==0000000000000000),0xbf,0xbf,0x13 = 0000000000000000 (cc=2) -+RISBGN r1(==0000000000000000),r2(==5555CCCCFFFF0000),0xbf,0xbf,0x13 = 0000000000000000 (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==5555CCCCFFFF0000),0xbf,0xbf,0x13 = 0000000000000000 (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==5555CCCCFFFF0000),0xbf,0xbf,0x13 = 0000000000000000 (cc=2) -+RISBGN r1(==0000000000000000),r2(==FFFFFFFFFFFFFFFF),0xbf,0xbf,0x13 = 0000000000000001 (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==FFFFFFFFFFFFFFFF),0xbf,0xbf,0x13 = 0000000000000001 (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==FFFFFFFFFFFFFFFF),0xbf,0xbf,0x13 = 0000000000000001 (cc=0) -+RISBGN r1(==0000000000000000),r2(==0000000000000000),0x00,0x00,0x3e = 0000000000000000 (cc=0) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==0000000000000000),0x00,0x00,0x3e = 0000FFFFCCCCAAAA (cc=2) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==0000000000000000),0x00,0x00,0x3e = 7FFFFFFFFFFFFFFF (cc=2) -+RISBGN r1(==0000000000000000),r2(==5555CCCCFFFF0000),0x00,0x00,0x3e = 0000000000000000 (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==5555CCCCFFFF0000),0x00,0x00,0x3e = 0000FFFFCCCCAAAA (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==5555CCCCFFFF0000),0x00,0x00,0x3e = 7FFFFFFFFFFFFFFF (cc=2) -+RISBGN r1(==0000000000000000),r2(==FFFFFFFFFFFFFFFF),0x00,0x00,0x3e = 8000000000000000 (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==FFFFFFFFFFFFFFFF),0x00,0x00,0x3e = 8000FFFFCCCCAAAA (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==FFFFFFFFFFFFFFFF),0x00,0x00,0x3e = FFFFFFFFFFFFFFFF (cc=0) -+RISBGN r1(==0000000000000000),r2(==0000000000000000),0x14,0x00,0x3e = 0000000000000000 (cc=0) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==0000000000000000),0x14,0x00,0x3e = 0000F00000000000 (cc=2) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==0000000000000000),0x14,0x00,0x3e = 7FFFF00000000000 (cc=2) -+RISBGN r1(==0000000000000000),r2(==5555CCCCFFFF0000),0x14,0x00,0x3e = 000003333FFFC000 (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==5555CCCCFFFF0000),0x14,0x00,0x3e = 0000F3333FFFC000 (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==5555CCCCFFFF0000),0x14,0x00,0x3e = 7FFFF3333FFFC000 (cc=2) -+RISBGN r1(==0000000000000000),r2(==FFFFFFFFFFFFFFFF),0x14,0x00,0x3e = 80000FFFFFFFFFFF (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==FFFFFFFFFFFFFFFF),0x14,0x00,0x3e = 8000FFFFFFFFFFFF (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==FFFFFFFFFFFFFFFF),0x14,0x00,0x3e = FFFFFFFFFFFFFFFF (cc=0) -+RISBGN r1(==0000000000000000),r2(==0000000000000000),0x3f,0x00,0x3e = 0000000000000000 (cc=0) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==0000000000000000),0x3f,0x00,0x3e = 0000FFFFCCCCAAAA (cc=2) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==0000000000000000),0x3f,0x00,0x3e = 7FFFFFFFFFFFFFFE (cc=2) -+RISBGN r1(==0000000000000000),r2(==5555CCCCFFFF0000),0x3f,0x00,0x3e = 0000000000000000 (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==5555CCCCFFFF0000),0x3f,0x00,0x3e = 0000FFFFCCCCAAAA (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==5555CCCCFFFF0000),0x3f,0x00,0x3e = 7FFFFFFFFFFFFFFE (cc=2) -+RISBGN r1(==0000000000000000),r2(==FFFFFFFFFFFFFFFF),0x3f,0x00,0x3e = 8000000000000001 (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==FFFFFFFFFFFFFFFF),0x3f,0x00,0x3e = 8000FFFFCCCCAAAB (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==FFFFFFFFFFFFFFFF),0x3f,0x00,0x3e = FFFFFFFFFFFFFFFF (cc=0) -+RISBGN r1(==0000000000000000),r2(==0000000000000000),0x80,0x00,0x3e = 0000000000000000 (cc=0) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==0000000000000000),0x80,0x00,0x3e = 0000FFFFCCCCAAAA (cc=2) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==0000000000000000),0x80,0x00,0x3e = 7FFFFFFFFFFFFFFF (cc=2) -+RISBGN r1(==0000000000000000),r2(==5555CCCCFFFF0000),0x80,0x00,0x3e = 0000000000000000 (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==5555CCCCFFFF0000),0x80,0x00,0x3e = 0000FFFFCCCCAAAA (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==5555CCCCFFFF0000),0x80,0x00,0x3e = 7FFFFFFFFFFFFFFF (cc=2) -+RISBGN r1(==0000000000000000),r2(==FFFFFFFFFFFFFFFF),0x80,0x00,0x3e = 8000000000000000 (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==FFFFFFFFFFFFFFFF),0x80,0x00,0x3e = 8000FFFFCCCCAAAA (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==FFFFFFFFFFFFFFFF),0x80,0x00,0x3e = FFFFFFFFFFFFFFFF (cc=0) -+RISBGN r1(==0000000000000000),r2(==0000000000000000),0xa1,0x00,0x3e = 0000000000000000 (cc=0) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==0000000000000000),0xa1,0x00,0x3e = 0000FFFF80000000 (cc=2) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==0000000000000000),0xa1,0x00,0x3e = 7FFFFFFF80000000 (cc=2) -+RISBGN r1(==0000000000000000),r2(==5555CCCCFFFF0000),0xa1,0x00,0x3e = 000000003FFFC000 (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==5555CCCCFFFF0000),0xa1,0x00,0x3e = 0000FFFFBFFFC000 (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==5555CCCCFFFF0000),0xa1,0x00,0x3e = 7FFFFFFFBFFFC000 (cc=2) -+RISBGN r1(==0000000000000000),r2(==FFFFFFFFFFFFFFFF),0xa1,0x00,0x3e = 800000007FFFFFFF (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==FFFFFFFFFFFFFFFF),0xa1,0x00,0x3e = 8000FFFFFFFFFFFF (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==FFFFFFFFFFFFFFFF),0xa1,0x00,0x3e = FFFFFFFFFFFFFFFF (cc=0) -+RISBGN r1(==0000000000000000),r2(==0000000000000000),0xbf,0x00,0x3e = 0000000000000000 (cc=0) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==0000000000000000),0xbf,0x00,0x3e = 0000FFFFCCCCAAAA (cc=2) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==0000000000000000),0xbf,0x00,0x3e = 7FFFFFFFFFFFFFFE (cc=2) -+RISBGN r1(==0000000000000000),r2(==5555CCCCFFFF0000),0xbf,0x00,0x3e = 0000000000000000 (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==5555CCCCFFFF0000),0xbf,0x00,0x3e = 0000FFFFCCCCAAAA (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==5555CCCCFFFF0000),0xbf,0x00,0x3e = 7FFFFFFFFFFFFFFE (cc=2) -+RISBGN r1(==0000000000000000),r2(==FFFFFFFFFFFFFFFF),0xbf,0x00,0x3e = 8000000000000001 (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==FFFFFFFFFFFFFFFF),0xbf,0x00,0x3e = 8000FFFFCCCCAAAB (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==FFFFFFFFFFFFFFFF),0xbf,0x00,0x3e = FFFFFFFFFFFFFFFF (cc=0) -+RISBGN r1(==0000000000000000),r2(==0000000000000000),0x00,0x2a,0x3e = 0000000000000000 (cc=0) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==0000000000000000),0x00,0x2a,0x3e = 00000000000CAAAA (cc=2) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==0000000000000000),0x00,0x2a,0x3e = 00000000001FFFFF (cc=2) -+RISBGN r1(==0000000000000000),r2(==5555CCCCFFFF0000),0x00,0x2a,0x3e = 155573333FE00000 (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==5555CCCCFFFF0000),0x00,0x2a,0x3e = 155573333FECAAAA (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==5555CCCCFFFF0000),0x00,0x2a,0x3e = 155573333FFFFFFF (cc=2) -+RISBGN r1(==0000000000000000),r2(==FFFFFFFFFFFFFFFF),0x00,0x2a,0x3e = FFFFFFFFFFE00000 (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==FFFFFFFFFFFFFFFF),0x00,0x2a,0x3e = FFFFFFFFFFECAAAA (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==FFFFFFFFFFFFFFFF),0x00,0x2a,0x3e = FFFFFFFFFFFFFFFF (cc=0) -+RISBGN r1(==0000000000000000),r2(==0000000000000000),0x14,0x2a,0x3e = 0000000000000000 (cc=0) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==0000000000000000),0x14,0x2a,0x3e = 0000F000000CAAAA (cc=2) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==0000000000000000),0x14,0x2a,0x3e = FFFFF000001FFFFF (cc=2) -+RISBGN r1(==0000000000000000),r2(==5555CCCCFFFF0000),0x14,0x2a,0x3e = 000003333FE00000 (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==5555CCCCFFFF0000),0x14,0x2a,0x3e = 0000F3333FECAAAA (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==5555CCCCFFFF0000),0x14,0x2a,0x3e = FFFFF3333FFFFFFF (cc=2) -+RISBGN r1(==0000000000000000),r2(==FFFFFFFFFFFFFFFF),0x14,0x2a,0x3e = 00000FFFFFE00000 (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==FFFFFFFFFFFFFFFF),0x14,0x2a,0x3e = 0000FFFFFFECAAAA (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==FFFFFFFFFFFFFFFF),0x14,0x2a,0x3e = FFFFFFFFFFFFFFFF (cc=0) -+RISBGN r1(==0000000000000000),r2(==0000000000000000),0x3f,0x2a,0x3e = 0000000000000000 (cc=0) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==0000000000000000),0x3f,0x2a,0x3e = 00000000000CAAAA (cc=2) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==0000000000000000),0x3f,0x2a,0x3e = 00000000001FFFFE (cc=2) -+RISBGN r1(==0000000000000000),r2(==5555CCCCFFFF0000),0x3f,0x2a,0x3e = 155573333FE00000 (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==5555CCCCFFFF0000),0x3f,0x2a,0x3e = 155573333FECAAAA (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==5555CCCCFFFF0000),0x3f,0x2a,0x3e = 155573333FFFFFFE (cc=2) -+RISBGN r1(==0000000000000000),r2(==FFFFFFFFFFFFFFFF),0x3f,0x2a,0x3e = FFFFFFFFFFE00001 (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==FFFFFFFFFFFFFFFF),0x3f,0x2a,0x3e = FFFFFFFFFFECAAAB (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==FFFFFFFFFFFFFFFF),0x3f,0x2a,0x3e = FFFFFFFFFFFFFFFF (cc=0) -+RISBGN r1(==0000000000000000),r2(==0000000000000000),0x80,0x2a,0x3e = 0000000000000000 (cc=0) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==0000000000000000),0x80,0x2a,0x3e = 00000000000CAAAA (cc=2) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==0000000000000000),0x80,0x2a,0x3e = 00000000001FFFFF (cc=2) -+RISBGN r1(==0000000000000000),r2(==5555CCCCFFFF0000),0x80,0x2a,0x3e = 155573333FE00000 (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==5555CCCCFFFF0000),0x80,0x2a,0x3e = 155573333FECAAAA (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==5555CCCCFFFF0000),0x80,0x2a,0x3e = 155573333FFFFFFF (cc=2) -+RISBGN r1(==0000000000000000),r2(==FFFFFFFFFFFFFFFF),0x80,0x2a,0x3e = FFFFFFFFFFE00000 (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==FFFFFFFFFFFFFFFF),0x80,0x2a,0x3e = FFFFFFFFFFECAAAA (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==FFFFFFFFFFFFFFFF),0x80,0x2a,0x3e = FFFFFFFFFFFFFFFF (cc=0) -+RISBGN r1(==0000000000000000),r2(==0000000000000000),0xa1,0x2a,0x3e = 0000000000000000 (cc=0) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==0000000000000000),0xa1,0x2a,0x3e = 0000FFFF800CAAAA (cc=2) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==0000000000000000),0xa1,0x2a,0x3e = FFFFFFFF801FFFFF (cc=2) -+RISBGN r1(==0000000000000000),r2(==5555CCCCFFFF0000),0xa1,0x2a,0x3e = 000000003FE00000 (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==5555CCCCFFFF0000),0xa1,0x2a,0x3e = 0000FFFFBFECAAAA (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==5555CCCCFFFF0000),0xa1,0x2a,0x3e = FFFFFFFFBFFFFFFF (cc=2) -+RISBGN r1(==0000000000000000),r2(==FFFFFFFFFFFFFFFF),0xa1,0x2a,0x3e = 000000007FE00000 (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==FFFFFFFFFFFFFFFF),0xa1,0x2a,0x3e = 0000FFFFFFECAAAA (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==FFFFFFFFFFFFFFFF),0xa1,0x2a,0x3e = FFFFFFFFFFFFFFFF (cc=0) -+RISBGN r1(==0000000000000000),r2(==0000000000000000),0xbf,0x2a,0x3e = 0000000000000000 (cc=0) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==0000000000000000),0xbf,0x2a,0x3e = 00000000000CAAAA (cc=2) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==0000000000000000),0xbf,0x2a,0x3e = 00000000001FFFFE (cc=2) -+RISBGN r1(==0000000000000000),r2(==5555CCCCFFFF0000),0xbf,0x2a,0x3e = 155573333FE00000 (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==5555CCCCFFFF0000),0xbf,0x2a,0x3e = 155573333FECAAAA (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==5555CCCCFFFF0000),0xbf,0x2a,0x3e = 155573333FFFFFFE (cc=2) -+RISBGN r1(==0000000000000000),r2(==FFFFFFFFFFFFFFFF),0xbf,0x2a,0x3e = FFFFFFFFFFE00001 (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==FFFFFFFFFFFFFFFF),0xbf,0x2a,0x3e = FFFFFFFFFFECAAAB (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==FFFFFFFFFFFFFFFF),0xbf,0x2a,0x3e = FFFFFFFFFFFFFFFF (cc=0) -+RISBGN r1(==0000000000000000),r2(==0000000000000000),0x00,0x3f,0x3e = 0000000000000000 (cc=0) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==0000000000000000),0x00,0x3f,0x3e = 0000000000000000 (cc=2) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==0000000000000000),0x00,0x3f,0x3e = 0000000000000000 (cc=2) -+RISBGN r1(==0000000000000000),r2(==5555CCCCFFFF0000),0x00,0x3f,0x3e = 155573333FFFC000 (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==5555CCCCFFFF0000),0x00,0x3f,0x3e = 155573333FFFC000 (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==5555CCCCFFFF0000),0x00,0x3f,0x3e = 155573333FFFC000 (cc=2) -+RISBGN r1(==0000000000000000),r2(==FFFFFFFFFFFFFFFF),0x00,0x3f,0x3e = FFFFFFFFFFFFFFFF (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==FFFFFFFFFFFFFFFF),0x00,0x3f,0x3e = FFFFFFFFFFFFFFFF (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==FFFFFFFFFFFFFFFF),0x00,0x3f,0x3e = FFFFFFFFFFFFFFFF (cc=0) -+RISBGN r1(==0000000000000000),r2(==0000000000000000),0x14,0x3f,0x3e = 0000000000000000 (cc=0) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==0000000000000000),0x14,0x3f,0x3e = 0000F00000000000 (cc=2) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==0000000000000000),0x14,0x3f,0x3e = FFFFF00000000000 (cc=2) -+RISBGN r1(==0000000000000000),r2(==5555CCCCFFFF0000),0x14,0x3f,0x3e = 000003333FFFC000 (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==5555CCCCFFFF0000),0x14,0x3f,0x3e = 0000F3333FFFC000 (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==5555CCCCFFFF0000),0x14,0x3f,0x3e = FFFFF3333FFFC000 (cc=2) -+RISBGN r1(==0000000000000000),r2(==FFFFFFFFFFFFFFFF),0x14,0x3f,0x3e = 00000FFFFFFFFFFF (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==FFFFFFFFFFFFFFFF),0x14,0x3f,0x3e = 0000FFFFFFFFFFFF (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==FFFFFFFFFFFFFFFF),0x14,0x3f,0x3e = FFFFFFFFFFFFFFFF (cc=0) -+RISBGN r1(==0000000000000000),r2(==0000000000000000),0x3f,0x3f,0x3e = 0000000000000000 (cc=0) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==0000000000000000),0x3f,0x3f,0x3e = 0000FFFFCCCCAAAA (cc=2) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==0000000000000000),0x3f,0x3f,0x3e = FFFFFFFFFFFFFFFE (cc=2) -+RISBGN r1(==0000000000000000),r2(==5555CCCCFFFF0000),0x3f,0x3f,0x3e = 0000000000000000 (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==5555CCCCFFFF0000),0x3f,0x3f,0x3e = 0000FFFFCCCCAAAA (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==5555CCCCFFFF0000),0x3f,0x3f,0x3e = FFFFFFFFFFFFFFFE (cc=2) -+RISBGN r1(==0000000000000000),r2(==FFFFFFFFFFFFFFFF),0x3f,0x3f,0x3e = 0000000000000001 (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==FFFFFFFFFFFFFFFF),0x3f,0x3f,0x3e = 0000FFFFCCCCAAAB (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==FFFFFFFFFFFFFFFF),0x3f,0x3f,0x3e = FFFFFFFFFFFFFFFF (cc=0) -+RISBGN r1(==0000000000000000),r2(==0000000000000000),0x80,0x3f,0x3e = 0000000000000000 (cc=0) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==0000000000000000),0x80,0x3f,0x3e = 0000000000000000 (cc=2) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==0000000000000000),0x80,0x3f,0x3e = 0000000000000000 (cc=2) -+RISBGN r1(==0000000000000000),r2(==5555CCCCFFFF0000),0x80,0x3f,0x3e = 155573333FFFC000 (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==5555CCCCFFFF0000),0x80,0x3f,0x3e = 155573333FFFC000 (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==5555CCCCFFFF0000),0x80,0x3f,0x3e = 155573333FFFC000 (cc=2) -+RISBGN r1(==0000000000000000),r2(==FFFFFFFFFFFFFFFF),0x80,0x3f,0x3e = FFFFFFFFFFFFFFFF (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==FFFFFFFFFFFFFFFF),0x80,0x3f,0x3e = FFFFFFFFFFFFFFFF (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==FFFFFFFFFFFFFFFF),0x80,0x3f,0x3e = FFFFFFFFFFFFFFFF (cc=0) -+RISBGN r1(==0000000000000000),r2(==0000000000000000),0xa1,0x3f,0x3e = 0000000000000000 (cc=0) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==0000000000000000),0xa1,0x3f,0x3e = 0000FFFF80000000 (cc=2) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==0000000000000000),0xa1,0x3f,0x3e = FFFFFFFF80000000 (cc=2) -+RISBGN r1(==0000000000000000),r2(==5555CCCCFFFF0000),0xa1,0x3f,0x3e = 000000003FFFC000 (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==5555CCCCFFFF0000),0xa1,0x3f,0x3e = 0000FFFFBFFFC000 (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==5555CCCCFFFF0000),0xa1,0x3f,0x3e = FFFFFFFFBFFFC000 (cc=2) -+RISBGN r1(==0000000000000000),r2(==FFFFFFFFFFFFFFFF),0xa1,0x3f,0x3e = 000000007FFFFFFF (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==FFFFFFFFFFFFFFFF),0xa1,0x3f,0x3e = 0000FFFFFFFFFFFF (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==FFFFFFFFFFFFFFFF),0xa1,0x3f,0x3e = FFFFFFFFFFFFFFFF (cc=0) -+RISBGN r1(==0000000000000000),r2(==0000000000000000),0xbf,0x3f,0x3e = 0000000000000000 (cc=0) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==0000000000000000),0xbf,0x3f,0x3e = 0000FFFFCCCCAAAA (cc=2) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==0000000000000000),0xbf,0x3f,0x3e = FFFFFFFFFFFFFFFE (cc=2) -+RISBGN r1(==0000000000000000),r2(==5555CCCCFFFF0000),0xbf,0x3f,0x3e = 0000000000000000 (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==5555CCCCFFFF0000),0xbf,0x3f,0x3e = 0000FFFFCCCCAAAA (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==5555CCCCFFFF0000),0xbf,0x3f,0x3e = FFFFFFFFFFFFFFFE (cc=2) -+RISBGN r1(==0000000000000000),r2(==FFFFFFFFFFFFFFFF),0xbf,0x3f,0x3e = 0000000000000001 (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==FFFFFFFFFFFFFFFF),0xbf,0x3f,0x3e = 0000FFFFCCCCAAAB (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==FFFFFFFFFFFFFFFF),0xbf,0x3f,0x3e = FFFFFFFFFFFFFFFF (cc=0) -+RISBGN r1(==0000000000000000),r2(==0000000000000000),0x00,0x80,0x3e = 0000000000000000 (cc=0) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==0000000000000000),0x00,0x80,0x3e = 0000000000000000 (cc=2) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==0000000000000000),0x00,0x80,0x3e = 0000000000000000 (cc=2) -+RISBGN r1(==0000000000000000),r2(==5555CCCCFFFF0000),0x00,0x80,0x3e = 0000000000000000 (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==5555CCCCFFFF0000),0x00,0x80,0x3e = 0000000000000000 (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==5555CCCCFFFF0000),0x00,0x80,0x3e = 0000000000000000 (cc=2) -+RISBGN r1(==0000000000000000),r2(==FFFFFFFFFFFFFFFF),0x00,0x80,0x3e = 8000000000000000 (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==FFFFFFFFFFFFFFFF),0x00,0x80,0x3e = 8000000000000000 (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==FFFFFFFFFFFFFFFF),0x00,0x80,0x3e = 8000000000000000 (cc=0) -+RISBGN r1(==0000000000000000),r2(==0000000000000000),0x14,0x80,0x3e = 0000000000000000 (cc=0) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==0000000000000000),0x14,0x80,0x3e = 0000000000000000 (cc=2) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==0000000000000000),0x14,0x80,0x3e = 0000000000000000 (cc=2) -+RISBGN r1(==0000000000000000),r2(==5555CCCCFFFF0000),0x14,0x80,0x3e = 000003333FFFC000 (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==5555CCCCFFFF0000),0x14,0x80,0x3e = 000003333FFFC000 (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==5555CCCCFFFF0000),0x14,0x80,0x3e = 000003333FFFC000 (cc=2) -+RISBGN r1(==0000000000000000),r2(==FFFFFFFFFFFFFFFF),0x14,0x80,0x3e = 80000FFFFFFFFFFF (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==FFFFFFFFFFFFFFFF),0x14,0x80,0x3e = 80000FFFFFFFFFFF (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==FFFFFFFFFFFFFFFF),0x14,0x80,0x3e = 80000FFFFFFFFFFF (cc=0) -+RISBGN r1(==0000000000000000),r2(==0000000000000000),0x3f,0x80,0x3e = 0000000000000000 (cc=0) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==0000000000000000),0x3f,0x80,0x3e = 0000000000000000 (cc=2) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==0000000000000000),0x3f,0x80,0x3e = 0000000000000000 (cc=2) -+RISBGN r1(==0000000000000000),r2(==5555CCCCFFFF0000),0x3f,0x80,0x3e = 0000000000000000 (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==5555CCCCFFFF0000),0x3f,0x80,0x3e = 0000000000000000 (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==5555CCCCFFFF0000),0x3f,0x80,0x3e = 0000000000000000 (cc=2) -+RISBGN r1(==0000000000000000),r2(==FFFFFFFFFFFFFFFF),0x3f,0x80,0x3e = 8000000000000001 (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==FFFFFFFFFFFFFFFF),0x3f,0x80,0x3e = 8000000000000001 (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==FFFFFFFFFFFFFFFF),0x3f,0x80,0x3e = 8000000000000001 (cc=0) -+RISBGN r1(==0000000000000000),r2(==0000000000000000),0x80,0x80,0x3e = 0000000000000000 (cc=0) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==0000000000000000),0x80,0x80,0x3e = 0000000000000000 (cc=2) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==0000000000000000),0x80,0x80,0x3e = 0000000000000000 (cc=2) -+RISBGN r1(==0000000000000000),r2(==5555CCCCFFFF0000),0x80,0x80,0x3e = 0000000000000000 (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==5555CCCCFFFF0000),0x80,0x80,0x3e = 0000000000000000 (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==5555CCCCFFFF0000),0x80,0x80,0x3e = 0000000000000000 (cc=2) -+RISBGN r1(==0000000000000000),r2(==FFFFFFFFFFFFFFFF),0x80,0x80,0x3e = 8000000000000000 (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==FFFFFFFFFFFFFFFF),0x80,0x80,0x3e = 8000000000000000 (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==FFFFFFFFFFFFFFFF),0x80,0x80,0x3e = 8000000000000000 (cc=0) -+RISBGN r1(==0000000000000000),r2(==0000000000000000),0xa1,0x80,0x3e = 0000000000000000 (cc=0) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==0000000000000000),0xa1,0x80,0x3e = 0000000000000000 (cc=2) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==0000000000000000),0xa1,0x80,0x3e = 0000000000000000 (cc=2) -+RISBGN r1(==0000000000000000),r2(==5555CCCCFFFF0000),0xa1,0x80,0x3e = 000000003FFFC000 (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==5555CCCCFFFF0000),0xa1,0x80,0x3e = 000000003FFFC000 (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==5555CCCCFFFF0000),0xa1,0x80,0x3e = 000000003FFFC000 (cc=2) -+RISBGN r1(==0000000000000000),r2(==FFFFFFFFFFFFFFFF),0xa1,0x80,0x3e = 800000007FFFFFFF (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==FFFFFFFFFFFFFFFF),0xa1,0x80,0x3e = 800000007FFFFFFF (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==FFFFFFFFFFFFFFFF),0xa1,0x80,0x3e = 800000007FFFFFFF (cc=0) -+RISBGN r1(==0000000000000000),r2(==0000000000000000),0xbf,0x80,0x3e = 0000000000000000 (cc=0) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==0000000000000000),0xbf,0x80,0x3e = 0000000000000000 (cc=2) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==0000000000000000),0xbf,0x80,0x3e = 0000000000000000 (cc=2) -+RISBGN r1(==0000000000000000),r2(==5555CCCCFFFF0000),0xbf,0x80,0x3e = 0000000000000000 (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==5555CCCCFFFF0000),0xbf,0x80,0x3e = 0000000000000000 (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==5555CCCCFFFF0000),0xbf,0x80,0x3e = 0000000000000000 (cc=2) -+RISBGN r1(==0000000000000000),r2(==FFFFFFFFFFFFFFFF),0xbf,0x80,0x3e = 8000000000000001 (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==FFFFFFFFFFFFFFFF),0xbf,0x80,0x3e = 8000000000000001 (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==FFFFFFFFFFFFFFFF),0xbf,0x80,0x3e = 8000000000000001 (cc=0) -+RISBGN r1(==0000000000000000),r2(==0000000000000000),0x00,0x9e,0x3e = 0000000000000000 (cc=0) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==0000000000000000),0x00,0x9e,0x3e = 0000000000000000 (cc=2) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==0000000000000000),0x00,0x9e,0x3e = 0000000000000000 (cc=2) -+RISBGN r1(==0000000000000000),r2(==5555CCCCFFFF0000),0x00,0x9e,0x3e = 1555733200000000 (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==5555CCCCFFFF0000),0x00,0x9e,0x3e = 1555733200000000 (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==5555CCCCFFFF0000),0x00,0x9e,0x3e = 1555733200000000 (cc=2) -+RISBGN r1(==0000000000000000),r2(==FFFFFFFFFFFFFFFF),0x00,0x9e,0x3e = FFFFFFFE00000000 (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==FFFFFFFFFFFFFFFF),0x00,0x9e,0x3e = FFFFFFFE00000000 (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==FFFFFFFFFFFFFFFF),0x00,0x9e,0x3e = FFFFFFFE00000000 (cc=0) -+RISBGN r1(==0000000000000000),r2(==0000000000000000),0x14,0x9e,0x3e = 0000000000000000 (cc=0) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==0000000000000000),0x14,0x9e,0x3e = 0000000000000000 (cc=2) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==0000000000000000),0x14,0x9e,0x3e = 0000000000000000 (cc=2) -+RISBGN r1(==0000000000000000),r2(==5555CCCCFFFF0000),0x14,0x9e,0x3e = 0000033200000000 (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==5555CCCCFFFF0000),0x14,0x9e,0x3e = 0000033200000000 (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==5555CCCCFFFF0000),0x14,0x9e,0x3e = 0000033200000000 (cc=2) -+RISBGN r1(==0000000000000000),r2(==FFFFFFFFFFFFFFFF),0x14,0x9e,0x3e = 00000FFE00000000 (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==FFFFFFFFFFFFFFFF),0x14,0x9e,0x3e = 00000FFE00000000 (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==FFFFFFFFFFFFFFFF),0x14,0x9e,0x3e = 00000FFE00000000 (cc=0) -+RISBGN r1(==0000000000000000),r2(==0000000000000000),0x3f,0x9e,0x3e = 0000000000000000 (cc=0) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==0000000000000000),0x3f,0x9e,0x3e = 0000000000000000 (cc=2) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==0000000000000000),0x3f,0x9e,0x3e = 0000000000000000 (cc=2) -+RISBGN r1(==0000000000000000),r2(==5555CCCCFFFF0000),0x3f,0x9e,0x3e = 1555733200000000 (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==5555CCCCFFFF0000),0x3f,0x9e,0x3e = 1555733200000000 (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==5555CCCCFFFF0000),0x3f,0x9e,0x3e = 1555733200000000 (cc=2) -+RISBGN r1(==0000000000000000),r2(==FFFFFFFFFFFFFFFF),0x3f,0x9e,0x3e = FFFFFFFE00000001 (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==FFFFFFFFFFFFFFFF),0x3f,0x9e,0x3e = FFFFFFFE00000001 (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==FFFFFFFFFFFFFFFF),0x3f,0x9e,0x3e = FFFFFFFE00000001 (cc=0) -+RISBGN r1(==0000000000000000),r2(==0000000000000000),0x80,0x9e,0x3e = 0000000000000000 (cc=0) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==0000000000000000),0x80,0x9e,0x3e = 0000000000000000 (cc=2) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==0000000000000000),0x80,0x9e,0x3e = 0000000000000000 (cc=2) -+RISBGN r1(==0000000000000000),r2(==5555CCCCFFFF0000),0x80,0x9e,0x3e = 1555733200000000 (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==5555CCCCFFFF0000),0x80,0x9e,0x3e = 1555733200000000 (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==5555CCCCFFFF0000),0x80,0x9e,0x3e = 1555733200000000 (cc=2) -+RISBGN r1(==0000000000000000),r2(==FFFFFFFFFFFFFFFF),0x80,0x9e,0x3e = FFFFFFFE00000000 (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==FFFFFFFFFFFFFFFF),0x80,0x9e,0x3e = FFFFFFFE00000000 (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==FFFFFFFFFFFFFFFF),0x80,0x9e,0x3e = FFFFFFFE00000000 (cc=0) -+RISBGN r1(==0000000000000000),r2(==0000000000000000),0xa1,0x9e,0x3e = 0000000000000000 (cc=0) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==0000000000000000),0xa1,0x9e,0x3e = 0000000000000000 (cc=2) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==0000000000000000),0xa1,0x9e,0x3e = 0000000000000000 (cc=2) -+RISBGN r1(==0000000000000000),r2(==5555CCCCFFFF0000),0xa1,0x9e,0x3e = 155573323FFFC000 (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==5555CCCCFFFF0000),0xa1,0x9e,0x3e = 155573323FFFC000 (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==5555CCCCFFFF0000),0xa1,0x9e,0x3e = 155573323FFFC000 (cc=2) -+RISBGN r1(==0000000000000000),r2(==FFFFFFFFFFFFFFFF),0xa1,0x9e,0x3e = FFFFFFFE7FFFFFFF (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==FFFFFFFFFFFFFFFF),0xa1,0x9e,0x3e = FFFFFFFE7FFFFFFF (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==FFFFFFFFFFFFFFFF),0xa1,0x9e,0x3e = FFFFFFFE7FFFFFFF (cc=0) -+RISBGN r1(==0000000000000000),r2(==0000000000000000),0xbf,0x9e,0x3e = 0000000000000000 (cc=0) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==0000000000000000),0xbf,0x9e,0x3e = 0000000000000000 (cc=2) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==0000000000000000),0xbf,0x9e,0x3e = 0000000000000000 (cc=2) -+RISBGN r1(==0000000000000000),r2(==5555CCCCFFFF0000),0xbf,0x9e,0x3e = 1555733200000000 (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==5555CCCCFFFF0000),0xbf,0x9e,0x3e = 1555733200000000 (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==5555CCCCFFFF0000),0xbf,0x9e,0x3e = 1555733200000000 (cc=2) -+RISBGN r1(==0000000000000000),r2(==FFFFFFFFFFFFFFFF),0xbf,0x9e,0x3e = FFFFFFFE00000001 (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==FFFFFFFFFFFFFFFF),0xbf,0x9e,0x3e = FFFFFFFE00000001 (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==FFFFFFFFFFFFFFFF),0xbf,0x9e,0x3e = FFFFFFFE00000001 (cc=0) -+RISBGN r1(==0000000000000000),r2(==0000000000000000),0x00,0xbf,0x3e = 0000000000000000 (cc=0) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==0000000000000000),0x00,0xbf,0x3e = 0000000000000000 (cc=2) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==0000000000000000),0x00,0xbf,0x3e = 0000000000000000 (cc=2) -+RISBGN r1(==0000000000000000),r2(==5555CCCCFFFF0000),0x00,0xbf,0x3e = 155573333FFFC000 (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==5555CCCCFFFF0000),0x00,0xbf,0x3e = 155573333FFFC000 (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==5555CCCCFFFF0000),0x00,0xbf,0x3e = 155573333FFFC000 (cc=2) -+RISBGN r1(==0000000000000000),r2(==FFFFFFFFFFFFFFFF),0x00,0xbf,0x3e = FFFFFFFFFFFFFFFF (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==FFFFFFFFFFFFFFFF),0x00,0xbf,0x3e = FFFFFFFFFFFFFFFF (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==FFFFFFFFFFFFFFFF),0x00,0xbf,0x3e = FFFFFFFFFFFFFFFF (cc=0) -+RISBGN r1(==0000000000000000),r2(==0000000000000000),0x14,0xbf,0x3e = 0000000000000000 (cc=0) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==0000000000000000),0x14,0xbf,0x3e = 0000000000000000 (cc=2) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==0000000000000000),0x14,0xbf,0x3e = 0000000000000000 (cc=2) -+RISBGN r1(==0000000000000000),r2(==5555CCCCFFFF0000),0x14,0xbf,0x3e = 000003333FFFC000 (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==5555CCCCFFFF0000),0x14,0xbf,0x3e = 000003333FFFC000 (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==5555CCCCFFFF0000),0x14,0xbf,0x3e = 000003333FFFC000 (cc=2) -+RISBGN r1(==0000000000000000),r2(==FFFFFFFFFFFFFFFF),0x14,0xbf,0x3e = 00000FFFFFFFFFFF (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==FFFFFFFFFFFFFFFF),0x14,0xbf,0x3e = 00000FFFFFFFFFFF (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==FFFFFFFFFFFFFFFF),0x14,0xbf,0x3e = 00000FFFFFFFFFFF (cc=0) -+RISBGN r1(==0000000000000000),r2(==0000000000000000),0x3f,0xbf,0x3e = 0000000000000000 (cc=0) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==0000000000000000),0x3f,0xbf,0x3e = 0000000000000000 (cc=2) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==0000000000000000),0x3f,0xbf,0x3e = 0000000000000000 (cc=2) -+RISBGN r1(==0000000000000000),r2(==5555CCCCFFFF0000),0x3f,0xbf,0x3e = 0000000000000000 (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==5555CCCCFFFF0000),0x3f,0xbf,0x3e = 0000000000000000 (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==5555CCCCFFFF0000),0x3f,0xbf,0x3e = 0000000000000000 (cc=2) -+RISBGN r1(==0000000000000000),r2(==FFFFFFFFFFFFFFFF),0x3f,0xbf,0x3e = 0000000000000001 (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==FFFFFFFFFFFFFFFF),0x3f,0xbf,0x3e = 0000000000000001 (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==FFFFFFFFFFFFFFFF),0x3f,0xbf,0x3e = 0000000000000001 (cc=0) -+RISBGN r1(==0000000000000000),r2(==0000000000000000),0x80,0xbf,0x3e = 0000000000000000 (cc=0) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==0000000000000000),0x80,0xbf,0x3e = 0000000000000000 (cc=2) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==0000000000000000),0x80,0xbf,0x3e = 0000000000000000 (cc=2) -+RISBGN r1(==0000000000000000),r2(==5555CCCCFFFF0000),0x80,0xbf,0x3e = 155573333FFFC000 (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==5555CCCCFFFF0000),0x80,0xbf,0x3e = 155573333FFFC000 (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==5555CCCCFFFF0000),0x80,0xbf,0x3e = 155573333FFFC000 (cc=2) -+RISBGN r1(==0000000000000000),r2(==FFFFFFFFFFFFFFFF),0x80,0xbf,0x3e = FFFFFFFFFFFFFFFF (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==FFFFFFFFFFFFFFFF),0x80,0xbf,0x3e = FFFFFFFFFFFFFFFF (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==FFFFFFFFFFFFFFFF),0x80,0xbf,0x3e = FFFFFFFFFFFFFFFF (cc=0) -+RISBGN r1(==0000000000000000),r2(==0000000000000000),0xa1,0xbf,0x3e = 0000000000000000 (cc=0) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==0000000000000000),0xa1,0xbf,0x3e = 0000000000000000 (cc=2) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==0000000000000000),0xa1,0xbf,0x3e = 0000000000000000 (cc=2) -+RISBGN r1(==0000000000000000),r2(==5555CCCCFFFF0000),0xa1,0xbf,0x3e = 000000003FFFC000 (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==5555CCCCFFFF0000),0xa1,0xbf,0x3e = 000000003FFFC000 (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==5555CCCCFFFF0000),0xa1,0xbf,0x3e = 000000003FFFC000 (cc=2) -+RISBGN r1(==0000000000000000),r2(==FFFFFFFFFFFFFFFF),0xa1,0xbf,0x3e = 000000007FFFFFFF (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==FFFFFFFFFFFFFFFF),0xa1,0xbf,0x3e = 000000007FFFFFFF (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==FFFFFFFFFFFFFFFF),0xa1,0xbf,0x3e = 000000007FFFFFFF (cc=0) -+RISBGN r1(==0000000000000000),r2(==0000000000000000),0xbf,0xbf,0x3e = 0000000000000000 (cc=0) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==0000000000000000),0xbf,0xbf,0x3e = 0000000000000000 (cc=2) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==0000000000000000),0xbf,0xbf,0x3e = 0000000000000000 (cc=2) -+RISBGN r1(==0000000000000000),r2(==5555CCCCFFFF0000),0xbf,0xbf,0x3e = 0000000000000000 (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==5555CCCCFFFF0000),0xbf,0xbf,0x3e = 0000000000000000 (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==5555CCCCFFFF0000),0xbf,0xbf,0x3e = 0000000000000000 (cc=2) -+RISBGN r1(==0000000000000000),r2(==FFFFFFFFFFFFFFFF),0xbf,0xbf,0x3e = 0000000000000001 (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==FFFFFFFFFFFFFFFF),0xbf,0xbf,0x3e = 0000000000000001 (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==FFFFFFFFFFFFFFFF),0xbf,0xbf,0x3e = 0000000000000001 (cc=0) -+RISBGN r1(==0000000000000000),r2(==0000000000000000),0x00,0x00,0x3f = 0000000000000000 (cc=0) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==0000000000000000),0x00,0x00,0x3f = 0000FFFFCCCCAAAA (cc=2) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==0000000000000000),0x00,0x00,0x3f = 7FFFFFFFFFFFFFFF (cc=2) -+RISBGN r1(==0000000000000000),r2(==5555CCCCFFFF0000),0x00,0x00,0x3f = 0000000000000000 (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==5555CCCCFFFF0000),0x00,0x00,0x3f = 0000FFFFCCCCAAAA (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==5555CCCCFFFF0000),0x00,0x00,0x3f = 7FFFFFFFFFFFFFFF (cc=2) -+RISBGN r1(==0000000000000000),r2(==FFFFFFFFFFFFFFFF),0x00,0x00,0x3f = 8000000000000000 (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==FFFFFFFFFFFFFFFF),0x00,0x00,0x3f = 8000FFFFCCCCAAAA (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==FFFFFFFFFFFFFFFF),0x00,0x00,0x3f = FFFFFFFFFFFFFFFF (cc=0) -+RISBGN r1(==0000000000000000),r2(==0000000000000000),0x14,0x00,0x3f = 0000000000000000 (cc=0) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==0000000000000000),0x14,0x00,0x3f = 0000F00000000000 (cc=2) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==0000000000000000),0x14,0x00,0x3f = 7FFFF00000000000 (cc=2) -+RISBGN r1(==0000000000000000),r2(==5555CCCCFFFF0000),0x14,0x00,0x3f = 000006667FFF8000 (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==5555CCCCFFFF0000),0x14,0x00,0x3f = 0000F6667FFF8000 (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==5555CCCCFFFF0000),0x14,0x00,0x3f = 7FFFF6667FFF8000 (cc=2) -+RISBGN r1(==0000000000000000),r2(==FFFFFFFFFFFFFFFF),0x14,0x00,0x3f = 80000FFFFFFFFFFF (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==FFFFFFFFFFFFFFFF),0x14,0x00,0x3f = 8000FFFFFFFFFFFF (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==FFFFFFFFFFFFFFFF),0x14,0x00,0x3f = FFFFFFFFFFFFFFFF (cc=0) -+RISBGN r1(==0000000000000000),r2(==0000000000000000),0x3f,0x00,0x3f = 0000000000000000 (cc=0) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==0000000000000000),0x3f,0x00,0x3f = 0000FFFFCCCCAAAA (cc=2) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==0000000000000000),0x3f,0x00,0x3f = 7FFFFFFFFFFFFFFE (cc=2) -+RISBGN r1(==0000000000000000),r2(==5555CCCCFFFF0000),0x3f,0x00,0x3f = 0000000000000000 (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==5555CCCCFFFF0000),0x3f,0x00,0x3f = 0000FFFFCCCCAAAA (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==5555CCCCFFFF0000),0x3f,0x00,0x3f = 7FFFFFFFFFFFFFFE (cc=2) -+RISBGN r1(==0000000000000000),r2(==FFFFFFFFFFFFFFFF),0x3f,0x00,0x3f = 8000000000000001 (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==FFFFFFFFFFFFFFFF),0x3f,0x00,0x3f = 8000FFFFCCCCAAAB (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==FFFFFFFFFFFFFFFF),0x3f,0x00,0x3f = FFFFFFFFFFFFFFFF (cc=0) -+RISBGN r1(==0000000000000000),r2(==0000000000000000),0x80,0x00,0x3f = 0000000000000000 (cc=0) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==0000000000000000),0x80,0x00,0x3f = 0000FFFFCCCCAAAA (cc=2) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==0000000000000000),0x80,0x00,0x3f = 7FFFFFFFFFFFFFFF (cc=2) -+RISBGN r1(==0000000000000000),r2(==5555CCCCFFFF0000),0x80,0x00,0x3f = 0000000000000000 (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==5555CCCCFFFF0000),0x80,0x00,0x3f = 0000FFFFCCCCAAAA (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==5555CCCCFFFF0000),0x80,0x00,0x3f = 7FFFFFFFFFFFFFFF (cc=2) -+RISBGN r1(==0000000000000000),r2(==FFFFFFFFFFFFFFFF),0x80,0x00,0x3f = 8000000000000000 (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==FFFFFFFFFFFFFFFF),0x80,0x00,0x3f = 8000FFFFCCCCAAAA (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==FFFFFFFFFFFFFFFF),0x80,0x00,0x3f = FFFFFFFFFFFFFFFF (cc=0) -+RISBGN r1(==0000000000000000),r2(==0000000000000000),0xa1,0x00,0x3f = 0000000000000000 (cc=0) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==0000000000000000),0xa1,0x00,0x3f = 0000FFFF80000000 (cc=2) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==0000000000000000),0xa1,0x00,0x3f = 7FFFFFFF80000000 (cc=2) -+RISBGN r1(==0000000000000000),r2(==5555CCCCFFFF0000),0xa1,0x00,0x3f = 000000007FFF8000 (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==5555CCCCFFFF0000),0xa1,0x00,0x3f = 0000FFFFFFFF8000 (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==5555CCCCFFFF0000),0xa1,0x00,0x3f = 7FFFFFFFFFFF8000 (cc=2) -+RISBGN r1(==0000000000000000),r2(==FFFFFFFFFFFFFFFF),0xa1,0x00,0x3f = 800000007FFFFFFF (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==FFFFFFFFFFFFFFFF),0xa1,0x00,0x3f = 8000FFFFFFFFFFFF (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==FFFFFFFFFFFFFFFF),0xa1,0x00,0x3f = FFFFFFFFFFFFFFFF (cc=0) -+RISBGN r1(==0000000000000000),r2(==0000000000000000),0xbf,0x00,0x3f = 0000000000000000 (cc=0) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==0000000000000000),0xbf,0x00,0x3f = 0000FFFFCCCCAAAA (cc=2) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==0000000000000000),0xbf,0x00,0x3f = 7FFFFFFFFFFFFFFE (cc=2) -+RISBGN r1(==0000000000000000),r2(==5555CCCCFFFF0000),0xbf,0x00,0x3f = 0000000000000000 (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==5555CCCCFFFF0000),0xbf,0x00,0x3f = 0000FFFFCCCCAAAA (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==5555CCCCFFFF0000),0xbf,0x00,0x3f = 7FFFFFFFFFFFFFFE (cc=2) -+RISBGN r1(==0000000000000000),r2(==FFFFFFFFFFFFFFFF),0xbf,0x00,0x3f = 8000000000000001 (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==FFFFFFFFFFFFFFFF),0xbf,0x00,0x3f = 8000FFFFCCCCAAAB (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==FFFFFFFFFFFFFFFF),0xbf,0x00,0x3f = FFFFFFFFFFFFFFFF (cc=0) -+RISBGN r1(==0000000000000000),r2(==0000000000000000),0x00,0x2a,0x3f = 0000000000000000 (cc=0) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==0000000000000000),0x00,0x2a,0x3f = 00000000000CAAAA (cc=2) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==0000000000000000),0x00,0x2a,0x3f = 00000000001FFFFF (cc=2) -+RISBGN r1(==0000000000000000),r2(==5555CCCCFFFF0000),0x00,0x2a,0x3f = 2AAAE6667FE00000 (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==5555CCCCFFFF0000),0x00,0x2a,0x3f = 2AAAE6667FECAAAA (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==5555CCCCFFFF0000),0x00,0x2a,0x3f = 2AAAE6667FFFFFFF (cc=2) -+RISBGN r1(==0000000000000000),r2(==FFFFFFFFFFFFFFFF),0x00,0x2a,0x3f = FFFFFFFFFFE00000 (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==FFFFFFFFFFFFFFFF),0x00,0x2a,0x3f = FFFFFFFFFFECAAAA (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==FFFFFFFFFFFFFFFF),0x00,0x2a,0x3f = FFFFFFFFFFFFFFFF (cc=0) -+RISBGN r1(==0000000000000000),r2(==0000000000000000),0x14,0x2a,0x3f = 0000000000000000 (cc=0) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==0000000000000000),0x14,0x2a,0x3f = 0000F000000CAAAA (cc=2) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==0000000000000000),0x14,0x2a,0x3f = FFFFF000001FFFFF (cc=2) -+RISBGN r1(==0000000000000000),r2(==5555CCCCFFFF0000),0x14,0x2a,0x3f = 000006667FE00000 (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==5555CCCCFFFF0000),0x14,0x2a,0x3f = 0000F6667FECAAAA (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==5555CCCCFFFF0000),0x14,0x2a,0x3f = FFFFF6667FFFFFFF (cc=2) -+RISBGN r1(==0000000000000000),r2(==FFFFFFFFFFFFFFFF),0x14,0x2a,0x3f = 00000FFFFFE00000 (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==FFFFFFFFFFFFFFFF),0x14,0x2a,0x3f = 0000FFFFFFECAAAA (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==FFFFFFFFFFFFFFFF),0x14,0x2a,0x3f = FFFFFFFFFFFFFFFF (cc=0) -+RISBGN r1(==0000000000000000),r2(==0000000000000000),0x3f,0x2a,0x3f = 0000000000000000 (cc=0) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==0000000000000000),0x3f,0x2a,0x3f = 00000000000CAAAA (cc=2) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==0000000000000000),0x3f,0x2a,0x3f = 00000000001FFFFE (cc=2) -+RISBGN r1(==0000000000000000),r2(==5555CCCCFFFF0000),0x3f,0x2a,0x3f = 2AAAE6667FE00000 (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==5555CCCCFFFF0000),0x3f,0x2a,0x3f = 2AAAE6667FECAAAA (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==5555CCCCFFFF0000),0x3f,0x2a,0x3f = 2AAAE6667FFFFFFE (cc=2) -+RISBGN r1(==0000000000000000),r2(==FFFFFFFFFFFFFFFF),0x3f,0x2a,0x3f = FFFFFFFFFFE00001 (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==FFFFFFFFFFFFFFFF),0x3f,0x2a,0x3f = FFFFFFFFFFECAAAB (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==FFFFFFFFFFFFFFFF),0x3f,0x2a,0x3f = FFFFFFFFFFFFFFFF (cc=0) -+RISBGN r1(==0000000000000000),r2(==0000000000000000),0x80,0x2a,0x3f = 0000000000000000 (cc=0) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==0000000000000000),0x80,0x2a,0x3f = 00000000000CAAAA (cc=2) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==0000000000000000),0x80,0x2a,0x3f = 00000000001FFFFF (cc=2) -+RISBGN r1(==0000000000000000),r2(==5555CCCCFFFF0000),0x80,0x2a,0x3f = 2AAAE6667FE00000 (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==5555CCCCFFFF0000),0x80,0x2a,0x3f = 2AAAE6667FECAAAA (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==5555CCCCFFFF0000),0x80,0x2a,0x3f = 2AAAE6667FFFFFFF (cc=2) -+RISBGN r1(==0000000000000000),r2(==FFFFFFFFFFFFFFFF),0x80,0x2a,0x3f = FFFFFFFFFFE00000 (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==FFFFFFFFFFFFFFFF),0x80,0x2a,0x3f = FFFFFFFFFFECAAAA (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==FFFFFFFFFFFFFFFF),0x80,0x2a,0x3f = FFFFFFFFFFFFFFFF (cc=0) -+RISBGN r1(==0000000000000000),r2(==0000000000000000),0xa1,0x2a,0x3f = 0000000000000000 (cc=0) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==0000000000000000),0xa1,0x2a,0x3f = 0000FFFF800CAAAA (cc=2) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==0000000000000000),0xa1,0x2a,0x3f = FFFFFFFF801FFFFF (cc=2) -+RISBGN r1(==0000000000000000),r2(==5555CCCCFFFF0000),0xa1,0x2a,0x3f = 000000007FE00000 (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==5555CCCCFFFF0000),0xa1,0x2a,0x3f = 0000FFFFFFECAAAA (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==5555CCCCFFFF0000),0xa1,0x2a,0x3f = FFFFFFFFFFFFFFFF (cc=2) -+RISBGN r1(==0000000000000000),r2(==FFFFFFFFFFFFFFFF),0xa1,0x2a,0x3f = 000000007FE00000 (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==FFFFFFFFFFFFFFFF),0xa1,0x2a,0x3f = 0000FFFFFFECAAAA (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==FFFFFFFFFFFFFFFF),0xa1,0x2a,0x3f = FFFFFFFFFFFFFFFF (cc=0) -+RISBGN r1(==0000000000000000),r2(==0000000000000000),0xbf,0x2a,0x3f = 0000000000000000 (cc=0) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==0000000000000000),0xbf,0x2a,0x3f = 00000000000CAAAA (cc=2) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==0000000000000000),0xbf,0x2a,0x3f = 00000000001FFFFE (cc=2) -+RISBGN r1(==0000000000000000),r2(==5555CCCCFFFF0000),0xbf,0x2a,0x3f = 2AAAE6667FE00000 (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==5555CCCCFFFF0000),0xbf,0x2a,0x3f = 2AAAE6667FECAAAA (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==5555CCCCFFFF0000),0xbf,0x2a,0x3f = 2AAAE6667FFFFFFE (cc=2) -+RISBGN r1(==0000000000000000),r2(==FFFFFFFFFFFFFFFF),0xbf,0x2a,0x3f = FFFFFFFFFFE00001 (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==FFFFFFFFFFFFFFFF),0xbf,0x2a,0x3f = FFFFFFFFFFECAAAB (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==FFFFFFFFFFFFFFFF),0xbf,0x2a,0x3f = FFFFFFFFFFFFFFFF (cc=0) -+RISBGN r1(==0000000000000000),r2(==0000000000000000),0x00,0x3f,0x3f = 0000000000000000 (cc=0) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==0000000000000000),0x00,0x3f,0x3f = 0000000000000000 (cc=2) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==0000000000000000),0x00,0x3f,0x3f = 0000000000000000 (cc=2) -+RISBGN r1(==0000000000000000),r2(==5555CCCCFFFF0000),0x00,0x3f,0x3f = 2AAAE6667FFF8000 (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==5555CCCCFFFF0000),0x00,0x3f,0x3f = 2AAAE6667FFF8000 (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==5555CCCCFFFF0000),0x00,0x3f,0x3f = 2AAAE6667FFF8000 (cc=2) -+RISBGN r1(==0000000000000000),r2(==FFFFFFFFFFFFFFFF),0x00,0x3f,0x3f = FFFFFFFFFFFFFFFF (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==FFFFFFFFFFFFFFFF),0x00,0x3f,0x3f = FFFFFFFFFFFFFFFF (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==FFFFFFFFFFFFFFFF),0x00,0x3f,0x3f = FFFFFFFFFFFFFFFF (cc=0) -+RISBGN r1(==0000000000000000),r2(==0000000000000000),0x14,0x3f,0x3f = 0000000000000000 (cc=0) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==0000000000000000),0x14,0x3f,0x3f = 0000F00000000000 (cc=2) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==0000000000000000),0x14,0x3f,0x3f = FFFFF00000000000 (cc=2) -+RISBGN r1(==0000000000000000),r2(==5555CCCCFFFF0000),0x14,0x3f,0x3f = 000006667FFF8000 (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==5555CCCCFFFF0000),0x14,0x3f,0x3f = 0000F6667FFF8000 (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==5555CCCCFFFF0000),0x14,0x3f,0x3f = FFFFF6667FFF8000 (cc=2) -+RISBGN r1(==0000000000000000),r2(==FFFFFFFFFFFFFFFF),0x14,0x3f,0x3f = 00000FFFFFFFFFFF (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==FFFFFFFFFFFFFFFF),0x14,0x3f,0x3f = 0000FFFFFFFFFFFF (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==FFFFFFFFFFFFFFFF),0x14,0x3f,0x3f = FFFFFFFFFFFFFFFF (cc=0) -+RISBGN r1(==0000000000000000),r2(==0000000000000000),0x3f,0x3f,0x3f = 0000000000000000 (cc=0) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==0000000000000000),0x3f,0x3f,0x3f = 0000FFFFCCCCAAAA (cc=2) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==0000000000000000),0x3f,0x3f,0x3f = FFFFFFFFFFFFFFFE (cc=2) -+RISBGN r1(==0000000000000000),r2(==5555CCCCFFFF0000),0x3f,0x3f,0x3f = 0000000000000000 (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==5555CCCCFFFF0000),0x3f,0x3f,0x3f = 0000FFFFCCCCAAAA (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==5555CCCCFFFF0000),0x3f,0x3f,0x3f = FFFFFFFFFFFFFFFE (cc=2) -+RISBGN r1(==0000000000000000),r2(==FFFFFFFFFFFFFFFF),0x3f,0x3f,0x3f = 0000000000000001 (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==FFFFFFFFFFFFFFFF),0x3f,0x3f,0x3f = 0000FFFFCCCCAAAB (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==FFFFFFFFFFFFFFFF),0x3f,0x3f,0x3f = FFFFFFFFFFFFFFFF (cc=0) -+RISBGN r1(==0000000000000000),r2(==0000000000000000),0x80,0x3f,0x3f = 0000000000000000 (cc=0) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==0000000000000000),0x80,0x3f,0x3f = 0000000000000000 (cc=2) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==0000000000000000),0x80,0x3f,0x3f = 0000000000000000 (cc=2) -+RISBGN r1(==0000000000000000),r2(==5555CCCCFFFF0000),0x80,0x3f,0x3f = 2AAAE6667FFF8000 (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==5555CCCCFFFF0000),0x80,0x3f,0x3f = 2AAAE6667FFF8000 (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==5555CCCCFFFF0000),0x80,0x3f,0x3f = 2AAAE6667FFF8000 (cc=2) -+RISBGN r1(==0000000000000000),r2(==FFFFFFFFFFFFFFFF),0x80,0x3f,0x3f = FFFFFFFFFFFFFFFF (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==FFFFFFFFFFFFFFFF),0x80,0x3f,0x3f = FFFFFFFFFFFFFFFF (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==FFFFFFFFFFFFFFFF),0x80,0x3f,0x3f = FFFFFFFFFFFFFFFF (cc=0) -+RISBGN r1(==0000000000000000),r2(==0000000000000000),0xa1,0x3f,0x3f = 0000000000000000 (cc=0) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==0000000000000000),0xa1,0x3f,0x3f = 0000FFFF80000000 (cc=2) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==0000000000000000),0xa1,0x3f,0x3f = FFFFFFFF80000000 (cc=2) -+RISBGN r1(==0000000000000000),r2(==5555CCCCFFFF0000),0xa1,0x3f,0x3f = 000000007FFF8000 (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==5555CCCCFFFF0000),0xa1,0x3f,0x3f = 0000FFFFFFFF8000 (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==5555CCCCFFFF0000),0xa1,0x3f,0x3f = FFFFFFFFFFFF8000 (cc=2) -+RISBGN r1(==0000000000000000),r2(==FFFFFFFFFFFFFFFF),0xa1,0x3f,0x3f = 000000007FFFFFFF (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==FFFFFFFFFFFFFFFF),0xa1,0x3f,0x3f = 0000FFFFFFFFFFFF (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==FFFFFFFFFFFFFFFF),0xa1,0x3f,0x3f = FFFFFFFFFFFFFFFF (cc=0) -+RISBGN r1(==0000000000000000),r2(==0000000000000000),0xbf,0x3f,0x3f = 0000000000000000 (cc=0) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==0000000000000000),0xbf,0x3f,0x3f = 0000FFFFCCCCAAAA (cc=2) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==0000000000000000),0xbf,0x3f,0x3f = FFFFFFFFFFFFFFFE (cc=2) -+RISBGN r1(==0000000000000000),r2(==5555CCCCFFFF0000),0xbf,0x3f,0x3f = 0000000000000000 (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==5555CCCCFFFF0000),0xbf,0x3f,0x3f = 0000FFFFCCCCAAAA (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==5555CCCCFFFF0000),0xbf,0x3f,0x3f = FFFFFFFFFFFFFFFE (cc=2) -+RISBGN r1(==0000000000000000),r2(==FFFFFFFFFFFFFFFF),0xbf,0x3f,0x3f = 0000000000000001 (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==FFFFFFFFFFFFFFFF),0xbf,0x3f,0x3f = 0000FFFFCCCCAAAB (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==FFFFFFFFFFFFFFFF),0xbf,0x3f,0x3f = FFFFFFFFFFFFFFFF (cc=0) -+RISBGN r1(==0000000000000000),r2(==0000000000000000),0x00,0x80,0x3f = 0000000000000000 (cc=0) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==0000000000000000),0x00,0x80,0x3f = 0000000000000000 (cc=2) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==0000000000000000),0x00,0x80,0x3f = 0000000000000000 (cc=2) -+RISBGN r1(==0000000000000000),r2(==5555CCCCFFFF0000),0x00,0x80,0x3f = 0000000000000000 (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==5555CCCCFFFF0000),0x00,0x80,0x3f = 0000000000000000 (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==5555CCCCFFFF0000),0x00,0x80,0x3f = 0000000000000000 (cc=2) -+RISBGN r1(==0000000000000000),r2(==FFFFFFFFFFFFFFFF),0x00,0x80,0x3f = 8000000000000000 (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==FFFFFFFFFFFFFFFF),0x00,0x80,0x3f = 8000000000000000 (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==FFFFFFFFFFFFFFFF),0x00,0x80,0x3f = 8000000000000000 (cc=0) -+RISBGN r1(==0000000000000000),r2(==0000000000000000),0x14,0x80,0x3f = 0000000000000000 (cc=0) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==0000000000000000),0x14,0x80,0x3f = 0000000000000000 (cc=2) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==0000000000000000),0x14,0x80,0x3f = 0000000000000000 (cc=2) -+RISBGN r1(==0000000000000000),r2(==5555CCCCFFFF0000),0x14,0x80,0x3f = 000006667FFF8000 (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==5555CCCCFFFF0000),0x14,0x80,0x3f = 000006667FFF8000 (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==5555CCCCFFFF0000),0x14,0x80,0x3f = 000006667FFF8000 (cc=2) -+RISBGN r1(==0000000000000000),r2(==FFFFFFFFFFFFFFFF),0x14,0x80,0x3f = 80000FFFFFFFFFFF (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==FFFFFFFFFFFFFFFF),0x14,0x80,0x3f = 80000FFFFFFFFFFF (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==FFFFFFFFFFFFFFFF),0x14,0x80,0x3f = 80000FFFFFFFFFFF (cc=0) -+RISBGN r1(==0000000000000000),r2(==0000000000000000),0x3f,0x80,0x3f = 0000000000000000 (cc=0) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==0000000000000000),0x3f,0x80,0x3f = 0000000000000000 (cc=2) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==0000000000000000),0x3f,0x80,0x3f = 0000000000000000 (cc=2) -+RISBGN r1(==0000000000000000),r2(==5555CCCCFFFF0000),0x3f,0x80,0x3f = 0000000000000000 (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==5555CCCCFFFF0000),0x3f,0x80,0x3f = 0000000000000000 (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==5555CCCCFFFF0000),0x3f,0x80,0x3f = 0000000000000000 (cc=2) -+RISBGN r1(==0000000000000000),r2(==FFFFFFFFFFFFFFFF),0x3f,0x80,0x3f = 8000000000000001 (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==FFFFFFFFFFFFFFFF),0x3f,0x80,0x3f = 8000000000000001 (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==FFFFFFFFFFFFFFFF),0x3f,0x80,0x3f = 8000000000000001 (cc=0) -+RISBGN r1(==0000000000000000),r2(==0000000000000000),0x80,0x80,0x3f = 0000000000000000 (cc=0) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==0000000000000000),0x80,0x80,0x3f = 0000000000000000 (cc=2) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==0000000000000000),0x80,0x80,0x3f = 0000000000000000 (cc=2) -+RISBGN r1(==0000000000000000),r2(==5555CCCCFFFF0000),0x80,0x80,0x3f = 0000000000000000 (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==5555CCCCFFFF0000),0x80,0x80,0x3f = 0000000000000000 (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==5555CCCCFFFF0000),0x80,0x80,0x3f = 0000000000000000 (cc=2) -+RISBGN r1(==0000000000000000),r2(==FFFFFFFFFFFFFFFF),0x80,0x80,0x3f = 8000000000000000 (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==FFFFFFFFFFFFFFFF),0x80,0x80,0x3f = 8000000000000000 (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==FFFFFFFFFFFFFFFF),0x80,0x80,0x3f = 8000000000000000 (cc=0) -+RISBGN r1(==0000000000000000),r2(==0000000000000000),0xa1,0x80,0x3f = 0000000000000000 (cc=0) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==0000000000000000),0xa1,0x80,0x3f = 0000000000000000 (cc=2) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==0000000000000000),0xa1,0x80,0x3f = 0000000000000000 (cc=2) -+RISBGN r1(==0000000000000000),r2(==5555CCCCFFFF0000),0xa1,0x80,0x3f = 000000007FFF8000 (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==5555CCCCFFFF0000),0xa1,0x80,0x3f = 000000007FFF8000 (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==5555CCCCFFFF0000),0xa1,0x80,0x3f = 000000007FFF8000 (cc=2) -+RISBGN r1(==0000000000000000),r2(==FFFFFFFFFFFFFFFF),0xa1,0x80,0x3f = 800000007FFFFFFF (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==FFFFFFFFFFFFFFFF),0xa1,0x80,0x3f = 800000007FFFFFFF (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==FFFFFFFFFFFFFFFF),0xa1,0x80,0x3f = 800000007FFFFFFF (cc=0) -+RISBGN r1(==0000000000000000),r2(==0000000000000000),0xbf,0x80,0x3f = 0000000000000000 (cc=0) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==0000000000000000),0xbf,0x80,0x3f = 0000000000000000 (cc=2) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==0000000000000000),0xbf,0x80,0x3f = 0000000000000000 (cc=2) -+RISBGN r1(==0000000000000000),r2(==5555CCCCFFFF0000),0xbf,0x80,0x3f = 0000000000000000 (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==5555CCCCFFFF0000),0xbf,0x80,0x3f = 0000000000000000 (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==5555CCCCFFFF0000),0xbf,0x80,0x3f = 0000000000000000 (cc=2) -+RISBGN r1(==0000000000000000),r2(==FFFFFFFFFFFFFFFF),0xbf,0x80,0x3f = 8000000000000001 (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==FFFFFFFFFFFFFFFF),0xbf,0x80,0x3f = 8000000000000001 (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==FFFFFFFFFFFFFFFF),0xbf,0x80,0x3f = 8000000000000001 (cc=0) -+RISBGN r1(==0000000000000000),r2(==0000000000000000),0x00,0x9e,0x3f = 0000000000000000 (cc=0) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==0000000000000000),0x00,0x9e,0x3f = 0000000000000000 (cc=2) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==0000000000000000),0x00,0x9e,0x3f = 0000000000000000 (cc=2) -+RISBGN r1(==0000000000000000),r2(==5555CCCCFFFF0000),0x00,0x9e,0x3f = 2AAAE66600000000 (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==5555CCCCFFFF0000),0x00,0x9e,0x3f = 2AAAE66600000000 (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==5555CCCCFFFF0000),0x00,0x9e,0x3f = 2AAAE66600000000 (cc=2) -+RISBGN r1(==0000000000000000),r2(==FFFFFFFFFFFFFFFF),0x00,0x9e,0x3f = FFFFFFFE00000000 (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==FFFFFFFFFFFFFFFF),0x00,0x9e,0x3f = FFFFFFFE00000000 (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==FFFFFFFFFFFFFFFF),0x00,0x9e,0x3f = FFFFFFFE00000000 (cc=0) -+RISBGN r1(==0000000000000000),r2(==0000000000000000),0x14,0x9e,0x3f = 0000000000000000 (cc=0) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==0000000000000000),0x14,0x9e,0x3f = 0000000000000000 (cc=2) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==0000000000000000),0x14,0x9e,0x3f = 0000000000000000 (cc=2) -+RISBGN r1(==0000000000000000),r2(==5555CCCCFFFF0000),0x14,0x9e,0x3f = 0000066600000000 (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==5555CCCCFFFF0000),0x14,0x9e,0x3f = 0000066600000000 (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==5555CCCCFFFF0000),0x14,0x9e,0x3f = 0000066600000000 (cc=2) -+RISBGN r1(==0000000000000000),r2(==FFFFFFFFFFFFFFFF),0x14,0x9e,0x3f = 00000FFE00000000 (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==FFFFFFFFFFFFFFFF),0x14,0x9e,0x3f = 00000FFE00000000 (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==FFFFFFFFFFFFFFFF),0x14,0x9e,0x3f = 00000FFE00000000 (cc=0) -+RISBGN r1(==0000000000000000),r2(==0000000000000000),0x3f,0x9e,0x3f = 0000000000000000 (cc=0) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==0000000000000000),0x3f,0x9e,0x3f = 0000000000000000 (cc=2) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==0000000000000000),0x3f,0x9e,0x3f = 0000000000000000 (cc=2) -+RISBGN r1(==0000000000000000),r2(==5555CCCCFFFF0000),0x3f,0x9e,0x3f = 2AAAE66600000000 (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==5555CCCCFFFF0000),0x3f,0x9e,0x3f = 2AAAE66600000000 (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==5555CCCCFFFF0000),0x3f,0x9e,0x3f = 2AAAE66600000000 (cc=2) -+RISBGN r1(==0000000000000000),r2(==FFFFFFFFFFFFFFFF),0x3f,0x9e,0x3f = FFFFFFFE00000001 (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==FFFFFFFFFFFFFFFF),0x3f,0x9e,0x3f = FFFFFFFE00000001 (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==FFFFFFFFFFFFFFFF),0x3f,0x9e,0x3f = FFFFFFFE00000001 (cc=0) -+RISBGN r1(==0000000000000000),r2(==0000000000000000),0x80,0x9e,0x3f = 0000000000000000 (cc=0) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==0000000000000000),0x80,0x9e,0x3f = 0000000000000000 (cc=2) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==0000000000000000),0x80,0x9e,0x3f = 0000000000000000 (cc=2) -+RISBGN r1(==0000000000000000),r2(==5555CCCCFFFF0000),0x80,0x9e,0x3f = 2AAAE66600000000 (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==5555CCCCFFFF0000),0x80,0x9e,0x3f = 2AAAE66600000000 (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==5555CCCCFFFF0000),0x80,0x9e,0x3f = 2AAAE66600000000 (cc=2) -+RISBGN r1(==0000000000000000),r2(==FFFFFFFFFFFFFFFF),0x80,0x9e,0x3f = FFFFFFFE00000000 (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==FFFFFFFFFFFFFFFF),0x80,0x9e,0x3f = FFFFFFFE00000000 (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==FFFFFFFFFFFFFFFF),0x80,0x9e,0x3f = FFFFFFFE00000000 (cc=0) -+RISBGN r1(==0000000000000000),r2(==0000000000000000),0xa1,0x9e,0x3f = 0000000000000000 (cc=0) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==0000000000000000),0xa1,0x9e,0x3f = 0000000000000000 (cc=2) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==0000000000000000),0xa1,0x9e,0x3f = 0000000000000000 (cc=2) -+RISBGN r1(==0000000000000000),r2(==5555CCCCFFFF0000),0xa1,0x9e,0x3f = 2AAAE6667FFF8000 (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==5555CCCCFFFF0000),0xa1,0x9e,0x3f = 2AAAE6667FFF8000 (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==5555CCCCFFFF0000),0xa1,0x9e,0x3f = 2AAAE6667FFF8000 (cc=2) -+RISBGN r1(==0000000000000000),r2(==FFFFFFFFFFFFFFFF),0xa1,0x9e,0x3f = FFFFFFFE7FFFFFFF (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==FFFFFFFFFFFFFFFF),0xa1,0x9e,0x3f = FFFFFFFE7FFFFFFF (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==FFFFFFFFFFFFFFFF),0xa1,0x9e,0x3f = FFFFFFFE7FFFFFFF (cc=0) -+RISBGN r1(==0000000000000000),r2(==0000000000000000),0xbf,0x9e,0x3f = 0000000000000000 (cc=0) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==0000000000000000),0xbf,0x9e,0x3f = 0000000000000000 (cc=2) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==0000000000000000),0xbf,0x9e,0x3f = 0000000000000000 (cc=2) -+RISBGN r1(==0000000000000000),r2(==5555CCCCFFFF0000),0xbf,0x9e,0x3f = 2AAAE66600000000 (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==5555CCCCFFFF0000),0xbf,0x9e,0x3f = 2AAAE66600000000 (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==5555CCCCFFFF0000),0xbf,0x9e,0x3f = 2AAAE66600000000 (cc=2) -+RISBGN r1(==0000000000000000),r2(==FFFFFFFFFFFFFFFF),0xbf,0x9e,0x3f = FFFFFFFE00000001 (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==FFFFFFFFFFFFFFFF),0xbf,0x9e,0x3f = FFFFFFFE00000001 (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==FFFFFFFFFFFFFFFF),0xbf,0x9e,0x3f = FFFFFFFE00000001 (cc=0) -+RISBGN r1(==0000000000000000),r2(==0000000000000000),0x00,0xbf,0x3f = 0000000000000000 (cc=0) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==0000000000000000),0x00,0xbf,0x3f = 0000000000000000 (cc=2) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==0000000000000000),0x00,0xbf,0x3f = 0000000000000000 (cc=2) -+RISBGN r1(==0000000000000000),r2(==5555CCCCFFFF0000),0x00,0xbf,0x3f = 2AAAE6667FFF8000 (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==5555CCCCFFFF0000),0x00,0xbf,0x3f = 2AAAE6667FFF8000 (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==5555CCCCFFFF0000),0x00,0xbf,0x3f = 2AAAE6667FFF8000 (cc=2) -+RISBGN r1(==0000000000000000),r2(==FFFFFFFFFFFFFFFF),0x00,0xbf,0x3f = FFFFFFFFFFFFFFFF (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==FFFFFFFFFFFFFFFF),0x00,0xbf,0x3f = FFFFFFFFFFFFFFFF (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==FFFFFFFFFFFFFFFF),0x00,0xbf,0x3f = FFFFFFFFFFFFFFFF (cc=0) -+RISBGN r1(==0000000000000000),r2(==0000000000000000),0x14,0xbf,0x3f = 0000000000000000 (cc=0) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==0000000000000000),0x14,0xbf,0x3f = 0000000000000000 (cc=2) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==0000000000000000),0x14,0xbf,0x3f = 0000000000000000 (cc=2) -+RISBGN r1(==0000000000000000),r2(==5555CCCCFFFF0000),0x14,0xbf,0x3f = 000006667FFF8000 (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==5555CCCCFFFF0000),0x14,0xbf,0x3f = 000006667FFF8000 (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==5555CCCCFFFF0000),0x14,0xbf,0x3f = 000006667FFF8000 (cc=2) -+RISBGN r1(==0000000000000000),r2(==FFFFFFFFFFFFFFFF),0x14,0xbf,0x3f = 00000FFFFFFFFFFF (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==FFFFFFFFFFFFFFFF),0x14,0xbf,0x3f = 00000FFFFFFFFFFF (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==FFFFFFFFFFFFFFFF),0x14,0xbf,0x3f = 00000FFFFFFFFFFF (cc=0) -+RISBGN r1(==0000000000000000),r2(==0000000000000000),0x3f,0xbf,0x3f = 0000000000000000 (cc=0) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==0000000000000000),0x3f,0xbf,0x3f = 0000000000000000 (cc=2) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==0000000000000000),0x3f,0xbf,0x3f = 0000000000000000 (cc=2) -+RISBGN r1(==0000000000000000),r2(==5555CCCCFFFF0000),0x3f,0xbf,0x3f = 0000000000000000 (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==5555CCCCFFFF0000),0x3f,0xbf,0x3f = 0000000000000000 (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==5555CCCCFFFF0000),0x3f,0xbf,0x3f = 0000000000000000 (cc=2) -+RISBGN r1(==0000000000000000),r2(==FFFFFFFFFFFFFFFF),0x3f,0xbf,0x3f = 0000000000000001 (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==FFFFFFFFFFFFFFFF),0x3f,0xbf,0x3f = 0000000000000001 (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==FFFFFFFFFFFFFFFF),0x3f,0xbf,0x3f = 0000000000000001 (cc=0) -+RISBGN r1(==0000000000000000),r2(==0000000000000000),0x80,0xbf,0x3f = 0000000000000000 (cc=0) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==0000000000000000),0x80,0xbf,0x3f = 0000000000000000 (cc=2) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==0000000000000000),0x80,0xbf,0x3f = 0000000000000000 (cc=2) -+RISBGN r1(==0000000000000000),r2(==5555CCCCFFFF0000),0x80,0xbf,0x3f = 2AAAE6667FFF8000 (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==5555CCCCFFFF0000),0x80,0xbf,0x3f = 2AAAE6667FFF8000 (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==5555CCCCFFFF0000),0x80,0xbf,0x3f = 2AAAE6667FFF8000 (cc=2) -+RISBGN r1(==0000000000000000),r2(==FFFFFFFFFFFFFFFF),0x80,0xbf,0x3f = FFFFFFFFFFFFFFFF (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==FFFFFFFFFFFFFFFF),0x80,0xbf,0x3f = FFFFFFFFFFFFFFFF (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==FFFFFFFFFFFFFFFF),0x80,0xbf,0x3f = FFFFFFFFFFFFFFFF (cc=0) -+RISBGN r1(==0000000000000000),r2(==0000000000000000),0xa1,0xbf,0x3f = 0000000000000000 (cc=0) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==0000000000000000),0xa1,0xbf,0x3f = 0000000000000000 (cc=2) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==0000000000000000),0xa1,0xbf,0x3f = 0000000000000000 (cc=2) -+RISBGN r1(==0000000000000000),r2(==5555CCCCFFFF0000),0xa1,0xbf,0x3f = 000000007FFF8000 (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==5555CCCCFFFF0000),0xa1,0xbf,0x3f = 000000007FFF8000 (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==5555CCCCFFFF0000),0xa1,0xbf,0x3f = 000000007FFF8000 (cc=2) -+RISBGN r1(==0000000000000000),r2(==FFFFFFFFFFFFFFFF),0xa1,0xbf,0x3f = 000000007FFFFFFF (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==FFFFFFFFFFFFFFFF),0xa1,0xbf,0x3f = 000000007FFFFFFF (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==FFFFFFFFFFFFFFFF),0xa1,0xbf,0x3f = 000000007FFFFFFF (cc=0) -+RISBGN r1(==0000000000000000),r2(==0000000000000000),0xbf,0xbf,0x3f = 0000000000000000 (cc=0) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==0000000000000000),0xbf,0xbf,0x3f = 0000000000000000 (cc=2) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==0000000000000000),0xbf,0xbf,0x3f = 0000000000000000 (cc=2) -+RISBGN r1(==0000000000000000),r2(==5555CCCCFFFF0000),0xbf,0xbf,0x3f = 0000000000000000 (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==5555CCCCFFFF0000),0xbf,0xbf,0x3f = 0000000000000000 (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==5555CCCCFFFF0000),0xbf,0xbf,0x3f = 0000000000000000 (cc=2) -+RISBGN r1(==0000000000000000),r2(==FFFFFFFFFFFFFFFF),0xbf,0xbf,0x3f = 0000000000000001 (cc=1) -+RISBGN r1(==0000FFFFCCCCAAAA),r2(==FFFFFFFFFFFFFFFF),0xbf,0xbf,0x3f = 0000000000000001 (cc=1) -+RISBGN r1(==FFFFFFFFFFFFFFFF),r2(==FFFFFFFFFFFFFFFF),0xbf,0xbf,0x3f = 0000000000000001 (cc=0) diff --git a/SOURCES/valgrind-3.11.0-socketcall-x86-linux.patch b/SOURCES/valgrind-3.11.0-socketcall-x86-linux.patch deleted file mode 100644 index fe30d0f..0000000 --- a/SOURCES/valgrind-3.11.0-socketcall-x86-linux.patch +++ /dev/null @@ -1,70 +0,0 @@ -commit 266d48ed3aa5f5a6c422805d56abc5a32b90c09c -Author: mjw -Date: Wed Jan 20 22:24:43 2016 +0000 - - Bug #358030 Support direct socket calls on x86 32bit (new in linux 4.3) - - Patch by ronald.wahl@raritan.com. - - git-svn-id: svn://svn.valgrind.org/valgrind/trunk@15764 a5019735-40e9-0310-863c-91ae7b9d1cf9 - -diff --git a/coregrind/m_syswrap/syswrap-x86-linux.c b/coregrind/m_syswrap/syswrap-x86-linux.c -index 24d7dc1..3c80e6a 100644 ---- a/coregrind/m_syswrap/syswrap-x86-linux.c -+++ b/coregrind/m_syswrap/syswrap-x86-linux.c -@@ -1824,8 +1824,23 @@ static SyscallTableEntry syscall_table[] = { - // LIN__(__NR_seccomp, sys_ni_syscall), // 354 - - LINXY(__NR_getrandom, sys_getrandom), // 355 -- LINXY(__NR_memfd_create, sys_memfd_create) // 356 --// LIN__(__NR_bpf, sys_ni_syscall) // 357 -+ LINXY(__NR_memfd_create, sys_memfd_create), // 356 -+// LIN__(__NR_bpf, sys_ni_syscall), // 357 -+ LINXY(__NR_socket, sys_socket), // 359 -+ LINXY(__NR_socketpair, sys_socketpair), // 360 -+ LINX_(__NR_bind, sys_bind), // 361 -+ LINX_(__NR_connect, sys_connect), // 362 -+ LINX_(__NR_listen, sys_listen), // 363 -+ LINXY(__NR_accept4, sys_accept4), // 364 -+ LINXY(__NR_getsockopt, sys_getsockopt), // 365 -+ LINX_(__NR_setsockopt, sys_setsockopt), // 366 -+ LINXY(__NR_getsockname, sys_getsockname), // 367 -+ LINXY(__NR_getpeername, sys_getpeername), // 368 -+ LINX_(__NR_sendto, sys_sendto), // 369 -+ LINX_(__NR_sendmsg, sys_sendmsg), // 370 -+ LINXY(__NR_recvfrom, sys_recvfrom), // 371 -+ LINXY(__NR_recvmsg, sys_recvmsg), // 372 -+ LINX_(__NR_shutdown, sys_shutdown) // 373 - }; - - SyscallTableEntry* ML_(get_linux_syscall_entry) ( UInt sysno ) -diff --git a/include/vki/vki-scnums-x86-linux.h b/include/vki/vki-scnums-x86-linux.h -index 5479b3e..a4e75a7 100644 ---- a/include/vki/vki-scnums-x86-linux.h -+++ b/include/vki/vki-scnums-x86-linux.h -@@ -392,6 +392,25 @@ - #define __NR_getrandom 355 - #define __NR_memfd_create 356 - #define __NR_bpf 357 -+#define __NR_execveat 358 -+#define __NR_socket 359 -+#define __NR_socketpair 360 -+#define __NR_bind 361 -+#define __NR_connect 362 -+#define __NR_listen 363 -+#define __NR_accept4 364 -+#define __NR_getsockopt 365 -+#define __NR_setsockopt 366 -+#define __NR_getsockname 367 -+#define __NR_getpeername 368 -+#define __NR_sendto 369 -+#define __NR_sendmsg 370 -+#define __NR_recvfrom 371 -+#define __NR_recvmsg 372 -+#define __NR_shutdown 373 -+#define __NR_userfaultfd 374 -+#define __NR_membarrier 375 -+#define __NR_mlock2 376 - - #endif /* __VKI_SCNUMS_X86_LINUX_H */ - diff --git a/SOURCES/valgrind-3.11.0-wrapmalloc.patch b/SOURCES/valgrind-3.11.0-wrapmalloc.patch deleted file mode 100644 index 064163f..0000000 --- a/SOURCES/valgrind-3.11.0-wrapmalloc.patch +++ /dev/null @@ -1,1176 +0,0 @@ -commit 13693666bd9fc7be37a907302e5d3d4f4b2c9358 -Author: mjw -Date: Sun Nov 15 16:50:43 2015 +0000 - - BZ#355188 valgrind should intercept all malloc related global functions. - - This implements the interception of all globally public allocation - functions by default. It works by adding a flag to the spec to say the - interception only applies to global functions. Which is set for the - somalloc spec. The librarypath to match is set to "*" unless the user - overrides it. Then each DiSym keeps track of whether the symbol is local - or global. For a spec which has isGlobal set only isGlobal symbols will - match. - - Note that because of padding to keep the addresses in DiSym aligned the - addition of the extra bool isGlobal doesn't actually grow the struct. - The comments explain how the struct could be made more compact on 32bit - systems, but this isn't as easy on 64bit systems. So I didn't try to do - that in this patch. - - For ELF symbols keeping track of which are global is trivial. For pdb I - had to guess and made only the "Public" symbols global. I don't know - how/if macho keeps track of global symbols or not. For now I just mark - all of them local (which just means things work as previously on platforms - that use machos, no non-system symbols are matches by default for somalloc - unless the user explicitly tells which library name to match). - - Included are two testcases for shared libraries (wrapmalloc) and staticly - linked (wrapmallocstatic) malloc/free overrides that depend on the new - default. One existing testcase (new_override) was adjusted to explicitly - not use the new somalloc default because it depends on a user defined - new implementation that has side-effects and should explicitly not be - intercepted. - - git-svn-id: svn://svn.valgrind.org/valgrind/trunk@15726 a5019735-40e9-0310-863c-91ae7b9d1cf9 - -diff --git a/coregrind/m_debuginfo/debuginfo.c b/coregrind/m_debuginfo/debuginfo.c -index 6f11cd2..4dc1129 100644 ---- a/coregrind/m_debuginfo/debuginfo.c -+++ b/coregrind/m_debuginfo/debuginfo.c -@@ -4306,7 +4306,8 @@ void VG_(DebugInfo_syms_getidx) ( const DebugInfo *si, - /*OUT*/const HChar** pri_name, - /*OUT*/const HChar*** sec_names, - /*OUT*/Bool* isText, -- /*OUT*/Bool* isIFunc ) -+ /*OUT*/Bool* isIFunc, -+ /*OUT*/Bool* isGlobal ) - { - vg_assert(idx >= 0 && idx < si->symtab_used); - if (avmas) *avmas = si->symtab[idx].avmas; -@@ -4315,6 +4316,7 @@ void VG_(DebugInfo_syms_getidx) ( const DebugInfo *si, - if (sec_names) *sec_names = si->symtab[idx].sec_names; - if (isText) *isText = si->symtab[idx].isText; - if (isIFunc) *isIFunc = si->symtab[idx].isIFunc; -+ if (isGlobal) *isGlobal = si->symtab[idx].isGlobal; - } - - -diff --git a/coregrind/m_debuginfo/priv_storage.h b/coregrind/m_debuginfo/priv_storage.h -index aa1d9f9..a43720a 100644 ---- a/coregrind/m_debuginfo/priv_storage.h -+++ b/coregrind/m_debuginfo/priv_storage.h -@@ -75,14 +75,18 @@ typedef - the macros defined in pub_core_debuginfo.h */ - const HChar* pri_name; /* primary name, never NULL */ - const HChar** sec_names; /* NULL, or a NULL term'd array of other names */ -- // XXX: this could be shrunk (on 32-bit platforms) by using 30 -- // bits for the size and 1 bit each for isText and isIFunc. If you -- // do this, make sure that all assignments to the latter two use -- // 0 or 1 (or True or False), and that a positive number larger -- // than 1 is never used to represent True. -+ // XXX: DiSym could be shrunk (on 32-bit platforms to exactly 16 -+ // bytes, on 64-bit platforms the first 3 pointers already add -+ // up to 24 bytes, so size plus bits will extend to 32 bytes -+ // anyway) by using 29 bits for the size and 1 bit each for -+ // isText, isIFunc and isGlobal. If you do this, make sure that -+ // all assignments to the latter two use 0 or 1 (or True or -+ // False), and that a positive number larger than 1 is never -+ // used to represent True. - UInt size; /* size in bytes */ - Bool isText; - Bool isIFunc; /* symbol is an indirect function? */ -+ Bool isGlobal; /* Is this symbol globally visible? */ - } - DiSym; - -diff --git a/coregrind/m_debuginfo/readelf.c b/coregrind/m_debuginfo/readelf.c -index 0861725..3820965 100644 ---- a/coregrind/m_debuginfo/readelf.c -+++ b/coregrind/m_debuginfo/readelf.c -@@ -241,7 +241,8 @@ Bool get_elf_symbol_info ( - Bool* from_opd_out, /* ppc64be-linux only: did we deref an - .opd entry? */ - Bool* is_text_out, /* is this a text symbol? */ -- Bool* is_ifunc /* is this a STT_GNU_IFUNC function ?*/ -+ Bool* is_ifunc_out, /* is this a STT_GNU_IFUNC function ?*/ -+ Bool* is_global_out /* is this a global symbol ?*/ - ) - { - Bool plausible; -@@ -259,7 +260,8 @@ Bool get_elf_symbol_info ( - SET_TOCPTR_AVMA(*sym_avmas_out, 0); /* default to unknown/inapplicable */ - SET_LOCAL_EP_AVMA(*sym_avmas_out, 0); /* default to unknown/inapplicable */ - *from_opd_out = False; -- *is_ifunc = False; -+ *is_ifunc_out = False; -+ *is_global_out = False; - - /* Get the symbol size, but restrict it to fit in a signed 32 bit - int. Also, deal with the stupid case of negative size by making -@@ -373,10 +375,14 @@ Bool get_elf_symbol_info ( - /* Check for indirect functions. */ - if (*is_text_out - && ELFXX_ST_TYPE(sym->st_info) == STT_GNU_IFUNC) { -- *is_ifunc = True; -+ *is_ifunc_out = True; - } - # endif - -+ if (ELFXX_ST_BIND(sym->st_info) == STB_GLOBAL) { -+ *is_global_out = True; -+ } -+ - # if defined(VGP_ppc64be_linux) - /* Allow STT_NOTYPE in the very special case where we're running on - ppc64be-linux and the symbol is one which the .opd-chasing hack -@@ -777,6 +783,7 @@ void read_elf_symtab__normal( - SymAVMAs sym_avmas_really; - Int sym_size = 0; - Bool from_opd = False, is_text = False, is_ifunc = False; -+ Bool is_global = False; - DiOffT sym_name_really = DiOffT_INVALID; - sym_avmas_really.main = 0; - SET_TOCPTR_AVMA(sym_avmas_really, 0); -@@ -787,7 +794,7 @@ void read_elf_symtab__normal( - &sym_name_really, - &sym_avmas_really, - &sym_size, -- &from_opd, &is_text, &is_ifunc)) { -+ &from_opd, &is_text, &is_ifunc, &is_global)) { - - DiSym disym; - VG_(memset)(&disym, 0, sizeof(disym)); -@@ -799,6 +806,7 @@ void read_elf_symtab__normal( - disym.size = sym_size; - disym.isText = is_text; - disym.isIFunc = is_ifunc; -+ disym.isGlobal = is_global; - if (cstr) { ML_(dinfo_free)(cstr); cstr = NULL; } - vg_assert(disym.pri_name); - vg_assert(GET_TOCPTR_AVMA(disym.avmas) == 0); -@@ -847,6 +855,7 @@ typedef - Bool from_opd; - Bool is_text; - Bool is_ifunc; -+ Bool is_global; - } - TempSym; - -@@ -911,6 +920,7 @@ void read_elf_symtab__ppc64be_linux( - SymAVMAs sym_avmas_really; - Int sym_size = 0; - Bool from_opd = False, is_text = False, is_ifunc = False; -+ Bool is_global = False; - DiOffT sym_name_really = DiOffT_INVALID; - DiSym disym; - VG_(memset)(&disym, 0, sizeof(disym)); -@@ -923,7 +933,7 @@ void read_elf_symtab__ppc64be_linux( - &sym_name_really, - &sym_avmas_really, - &sym_size, -- &from_opd, &is_text, &is_ifunc)) { -+ &from_opd, &is_text, &is_ifunc, &is_global)) { - - /* Check if we've seen this (name,addr) key before. */ - key.addr = sym_avmas_really.main; -@@ -996,6 +1006,7 @@ void read_elf_symtab__ppc64be_linux( - elem->from_opd = from_opd; - elem->is_text = is_text; - elem->is_ifunc = is_ifunc; -+ elem->is_global = is_global; - VG_(OSetGen_Insert)(oset, elem); - if (di->trace_symtab) { - HChar* str = ML_(img_strdup)(escn_strtab->img, "di.respl.2", -@@ -1034,14 +1045,17 @@ void read_elf_symtab__ppc64be_linux( - disym.size = elem->size; - disym.isText = elem->is_text; - disym.isIFunc = elem->is_ifunc; -+ disym.isGlobal = elem->is_global; - if (cstr) { ML_(dinfo_free)(cstr); cstr = NULL; } - vg_assert(disym.pri_name != NULL); - - ML_(addSym) ( di, &disym ); - if (di->trace_symtab) { -- VG_(printf)(" rec(%c) [%4ld]: " -+ VG_(printf)(" rec(%c%c%c) [%4ld]: " - " val %#010lx, toc %#010lx, sz %4d %s\n", - disym.isText ? 't' : 'd', -+ disym.isIFunc ? 'i' : '-', -+ disym.isGlobal ? 'g' : 'l', - i, - disym.avmas.main, - GET_TOCPTR_AVMA(disym.avmas), -diff --git a/coregrind/m_debuginfo/readmacho.c b/coregrind/m_debuginfo/readmacho.c -index 98ab048..3d406a4 100644 ---- a/coregrind/m_debuginfo/readmacho.c -+++ b/coregrind/m_debuginfo/readmacho.c -@@ -365,6 +365,7 @@ void read_symtab( /*OUT*/XArray* /* DiSym */ syms, - di->text_avma+di->text_size - sym_addr; - disym.isText = True; - disym.isIFunc = False; -+ disym.isGlobal = False; - // Lots of user function names get prepended with an underscore. Eg. the - // function 'f' becomes the symbol '_f'. And the "below main" - // function is called "start". So we skip the leading underscore, and -diff --git a/coregrind/m_debuginfo/readpdb.c b/coregrind/m_debuginfo/readpdb.c -index 8b63e95..1ebf863 100644 ---- a/coregrind/m_debuginfo/readpdb.c -+++ b/coregrind/m_debuginfo/readpdb.c -@@ -1272,6 +1272,7 @@ static ULong DEBUG_SnarfCodeView( - // FIXME: .namelen is sizeof(.data) including .name[] - vsym.isText = (sym->generic.id == S_PUB_V1); - vsym.isIFunc = False; -+ vsym.isGlobal = True; - ML_(addSym)( di, &vsym ); - n_syms_read++; - } -@@ -1299,6 +1300,7 @@ static ULong DEBUG_SnarfCodeView( - vsym.isText = !!(IMAGE_SCN_CNT_CODE - & sectp[sym->data_v2.segment-1].Characteristics); - vsym.isIFunc = False; -+ vsym.isGlobal = True; - ML_(addSym)( di, &vsym ); - n_syms_read++; - } -@@ -1332,6 +1334,7 @@ static ULong DEBUG_SnarfCodeView( - vsym.isText = !!(IMAGE_SCN_CNT_CODE - & sectp[sym->data_v2.segment-1].Characteristics); - vsym.isIFunc = False; -+ vsym.isGlobal = True; - ML_(addSym)( di, &vsym ); - n_syms_read++; - } -@@ -1365,6 +1368,7 @@ static ULong DEBUG_SnarfCodeView( - vsym.size = sym->proc_v1.proc_len; - vsym.isText = True; - vsym.isIFunc = False; -+ vsym.isGlobal = sym->generic.id == S_GPROC_V1; - if (debug) - VG_(umsg)(" Adding function %s addr=%#lx length=%u\n", - symname, vsym.avmas.main, vsym.size ); -@@ -1386,6 +1390,7 @@ static ULong DEBUG_SnarfCodeView( - vsym.size = sym->proc_v2.proc_len; - vsym.isText = True; - vsym.isIFunc = False; -+ vsym.isGlobal = sym->generic.id == S_GPROC_V2; - if (debug) - VG_(umsg)(" Adding function %s addr=%#lx length=%u\n", - symname, vsym.avmas.main, vsym.size ); -@@ -1408,6 +1413,7 @@ static ULong DEBUG_SnarfCodeView( - vsym.size = sym->proc_v3.proc_len; - vsym.isText = 1; - vsym.isIFunc = False; -+ vsym.isGlobal = sym->generic.id == S_GPROC_V3; - ML_(addSym)( di, &vsym ); - n_syms_read++; - } -diff --git a/coregrind/m_debuginfo/storage.c b/coregrind/m_debuginfo/storage.c -index 45bc135..7b2e26a 100644 ---- a/coregrind/m_debuginfo/storage.c -+++ b/coregrind/m_debuginfo/storage.c -@@ -98,10 +98,11 @@ void ML_(ppSym) ( Int idx, const DiSym* sym ) - vg_assert(sym->pri_name); - if (sec_names) - vg_assert(sec_names); -- VG_(printf)( "%5d: %c%c %#8lx .. %#8lx (%u) %s%s", -+ VG_(printf)( "%5d: %c%c%c %#8lx .. %#8lx (%u) %s%s", - idx, - sym->isText ? 'T' : '-', - sym->isIFunc ? 'I' : '-', -+ sym->isGlobal ? 'G' : '-', - sym->avmas.main, - sym->avmas.main + sym->size - 1, sym->size, - sym->pri_name, sec_names ? " " : "" ); -@@ -1646,7 +1647,7 @@ static void canonicaliseSymtab ( struct _DebugInfo* di ) - Word i, j, n_truncated; - Addr sta1, sta2, end1, end2, toc1, toc2; - const HChar *pri1, *pri2, **sec1, **sec2; -- Bool ist1, ist2, isf1, isf2; -+ Bool ist1, ist2, isf1, isf2, isg1, isg2; - - # define SWAP(ty,aa,bb) \ - do { ty tt = (aa); (aa) = (bb); (bb) = tt; } while (0) -@@ -1693,6 +1694,8 @@ static void canonicaliseSymtab ( struct _DebugInfo* di ) - } - /* mark w as an IFunc if either w or r are */ - di->symtab[w].isIFunc = di->symtab[w].isIFunc || di->symtab[r].isIFunc; -+ /* likewise for global symbols */ -+ di->symtab[w].isGlobal = di->symtab[w].isGlobal || di->symtab[r].isGlobal; - /* and use ::pri_names to indicate this slot is no longer in use */ - di->symtab[r].pri_name = NULL; - if (di->symtab[r].sec_names) { -@@ -1796,6 +1799,7 @@ static void canonicaliseSymtab ( struct _DebugInfo* di ) - sec1 = di->symtab[i].sec_names; - ist1 = di->symtab[i].isText; - isf1 = di->symtab[i].isIFunc; -+ isg1 = di->symtab[i].isGlobal; - - sta2 = di->symtab[i+1].avmas.main; - end2 = sta2 + di->symtab[i+1].size - 1; -@@ -1805,6 +1809,7 @@ static void canonicaliseSymtab ( struct _DebugInfo* di ) - sec2 = di->symtab[i+1].sec_names; - ist2 = di->symtab[i+1].isText; - isf2 = di->symtab[i+1].isIFunc; -+ isg2 = di->symtab[i+1].isGlobal; - - if (sta1 < sta2) { - end1 = sta2 - 1; -@@ -1814,7 +1819,7 @@ static void canonicaliseSymtab ( struct _DebugInfo* di ) - sta1 = end2 + 1; - SWAP(Addr,sta1,sta2); SWAP(Addr,end1,end2); SWAP(Addr,toc1,toc2); - SWAP(const HChar*,pri1,pri2); SWAP(const HChar**,sec1,sec2); -- SWAP(Bool,ist1,ist2); SWAP(Bool,isf1,isf2); -+ SWAP(Bool,ist1,ist2); SWAP(Bool,isf1,isf2); SWAP(Bool, isg1, isg2); - } else - if (end1 < end2) { - sta2 = end1 + 1; -@@ -1831,6 +1836,7 @@ static void canonicaliseSymtab ( struct _DebugInfo* di ) - di->symtab[i].sec_names = sec1; - di->symtab[i].isText = ist1; - di->symtab[i].isIFunc = isf1; -+ di->symtab[i].isGlobal = isg1; - - di->symtab[i+1].avmas.main = sta2; - di->symtab[i+1].size = end2 - sta2 + 1; -@@ -1840,6 +1846,7 @@ static void canonicaliseSymtab ( struct _DebugInfo* di ) - di->symtab[i+1].sec_names = sec2; - di->symtab[i+1].isText = ist2; - di->symtab[i+1].isIFunc = isf2; -+ di->symtab[i+1].isGlobal = isg2; - - vg_assert(sta1 <= sta2); - vg_assert(di->symtab[i].size > 0); -diff --git a/coregrind/m_redir.c b/coregrind/m_redir.c -index 7e4df8d..3d3f70a 100644 ---- a/coregrind/m_redir.c -+++ b/coregrind/m_redir.c -@@ -233,6 +233,7 @@ typedef - HChar* from_fnpatt; /* from fnname pattern */ - Addr to_addr; /* where redirecting to */ - Bool isWrap; /* wrap or replacement? */ -+ Bool isGlobal; /* must the symbol to replace be global? */ - Int becTag; /* 0 through 9999. Behavioural equivalance class tag. - If two wrappers have the same (non-zero) tag, they - are promising that they behave identically. */ -@@ -388,7 +389,7 @@ static HChar const* advance_to_comma ( HChar const* c ) { - - void VG_(redir_notify_new_DebugInfo)( const DebugInfo* newdi ) - { -- Bool ok, isWrap; -+ Bool ok, isWrap, isGlobal; - Int i, nsyms, becTag, becPrio; - Spec* specList; - Spec* spec; -@@ -518,13 +519,14 @@ void VG_(redir_notify_new_DebugInfo)( const DebugInfo* newdi ) - for (i = 0; i < nsyms; i++) { - VG_(DebugInfo_syms_getidx)( newdi, i, &sym_avmas, - NULL, &sym_name_pri, &sym_names_sec, -- &isText, NULL ); -+ &isText, NULL, NULL ); - /* Set up to conveniently iterate over all names for this symbol. */ - const HChar* twoslots[2]; - const HChar** names_init = - alloc_symname_array(sym_name_pri, sym_names_sec, &twoslots[0]); - const HChar** names; - for (names = names_init; *names; names++) { -+ isGlobal = False; - ok = VG_(maybe_Z_demangle)( *names, - &demangled_sopatt, - &demangled_fnpatt, -@@ -579,15 +581,12 @@ void VG_(redir_notify_new_DebugInfo)( const DebugInfo* newdi ) - have a matching lib synonym, then replace the sopatt. - Otherwise, just ignore this redirection spec. */ - -- if (!VG_(clo_soname_synonyms)) -- continue; // No synonyms => skip the redir. -- - /* Search for a matching synonym=newname*/ - SizeT const sopatt_syn_len - = VG_(strlen)(demangled_sopatt+VG_SO_SYN_PREFIX_LEN); - HChar const* last = VG_(clo_soname_synonyms); - -- while (*last) { -+ while (last != NULL && *last) { - HChar const* first = last; - last = advance_to_equal(first); - -@@ -611,6 +610,17 @@ void VG_(redir_notify_new_DebugInfo)( const DebugInfo* newdi ) - last++; - } - -+ // If the user didn't set it then somalloc is special. We -+ // want to match public/global symbols that match the -+ // fnpatt everywhere. -+ if (replaced_sopatt == NULL -+ && VG_(strcmp) ( demangled_sopatt, SO_SYN_MALLOC_NAME ) == 0) -+ { -+ replaced_sopatt = VG_(strdup)("m_redir.rnnD.1", "*"); -+ demangled_sopatt = replaced_sopatt; -+ isGlobal = True; -+ } -+ - // If we have not replaced the sopatt, then skip the redir. - if (replaced_sopatt == NULL) - continue; -@@ -621,6 +631,7 @@ void VG_(redir_notify_new_DebugInfo)( const DebugInfo* newdi ) - spec->from_fnpatt = dinfo_strdup("redir.rnnD.3", demangled_fnpatt); - spec->to_addr = sym_avmas.main; - spec->isWrap = isWrap; -+ spec->isGlobal = isGlobal; - spec->becTag = becTag; - spec->becPrio = becPrio; - /* check we're not adding manifestly stupid destinations */ -@@ -653,7 +664,7 @@ void VG_(redir_notify_new_DebugInfo)( const DebugInfo* newdi ) - for (i = 0; i < nsyms; i++) { - VG_(DebugInfo_syms_getidx)( newdi, i, &sym_avmas, - NULL, &sym_name_pri, &sym_names_sec, -- &isText, NULL ); -+ &isText, NULL, NULL ); - const HChar* twoslots[2]; - const HChar** names_init = - alloc_symname_array(sym_name_pri, sym_names_sec, &twoslots[0]); -@@ -785,7 +796,7 @@ void generate_and_add_actives ( - ) - { - Spec* sp; -- Bool anyMark, isText, isIFunc; -+ Bool anyMark, isText, isIFunc, isGlobal; - Active act; - Int nsyms, i; - SymAVMAs sym_avmas; -@@ -813,7 +824,7 @@ void generate_and_add_actives ( - for (i = 0; i < nsyms; i++) { - VG_(DebugInfo_syms_getidx)( di, i, &sym_avmas, - NULL, &sym_name_pri, &sym_names_sec, -- &isText, &isIFunc ); -+ &isText, &isIFunc, &isGlobal ); - const HChar* twoslots[2]; - const HChar** names_init = - alloc_symname_array(sym_name_pri, sym_names_sec, &twoslots[0]); -@@ -827,7 +838,8 @@ void generate_and_add_actives ( - for (sp = specs; sp; sp = sp->next) { - if (!sp->mark) - continue; /* soname doesn't match */ -- if (VG_(string_match)( sp->from_fnpatt, *names )) { -+ if (VG_(string_match)( sp->from_fnpatt, *names ) -+ && (sp->isGlobal == False || isGlobal == True)) { - /* got a new binding. Add to collection. */ - act.from_addr = sym_avmas.main; - act.to_addr = sp->to_addr; -@@ -1220,6 +1232,7 @@ static void add_hardwired_spec (const HChar* sopatt, const HChar* fnpatt, - spec->from_fnpatt = CONST_CAST(HChar *,fnpatt); - spec->to_addr = to_addr; - spec->isWrap = False; -+ spec->isGlobal = False; - spec->mandatory = mandatory; - /* VARIABLE PARTS */ - spec->mark = False; /* not significant */ -@@ -1719,7 +1732,7 @@ static void handle_require_text_symbols ( const DebugInfo* di ) - const HChar** sym_names_sec = NULL; - VG_(DebugInfo_syms_getidx)( di, j, NULL, - NULL, &sym_name_pri, &sym_names_sec, -- &isText, NULL ); -+ &isText, NULL, NULL ); - const HChar* twoslots[2]; - const HChar** names_init = - alloc_symname_array(sym_name_pri, sym_names_sec, &twoslots[0]); -@@ -1773,10 +1786,11 @@ static void handle_require_text_symbols ( const DebugInfo* di ) - static void show_spec ( const HChar* left, const Spec* spec ) - { - VG_(message)( Vg_DebugMsg, -- "%s%-25s %-30s %s-> (%04d.%d) 0x%08lx\n", -+ "%s%-25s %-30s %s%s-> (%04d.%d) 0x%08lx\n", - left, - spec->from_sopatt, spec->from_fnpatt, - spec->isWrap ? "W" : "R", -+ spec->isGlobal ? "G" : "L", - spec->becTag, spec->becPrio, - spec->to_addr ); - } -diff --git a/coregrind/m_replacemalloc/vg_replace_malloc.c b/coregrind/m_replacemalloc/vg_replace_malloc.c -index ccac130..3c79c8a 100644 ---- a/coregrind/m_replacemalloc/vg_replace_malloc.c -+++ b/coregrind/m_replacemalloc/vg_replace_malloc.c -@@ -291,7 +291,6 @@ static void init(void); - // For some lines, we will also define a replacement function - // whose only purpose is to be a soname synonym place holder - // that can be replaced using --soname-synonyms. --#define SO_SYN_MALLOC VG_SO_SYN(somalloc) - - // malloc - #if defined(VGO_linux) -diff --git a/coregrind/pub_core_debuginfo.h b/coregrind/pub_core_debuginfo.h -index b698f2c..8f26f25 100644 ---- a/coregrind/pub_core_debuginfo.h -+++ b/coregrind/pub_core_debuginfo.h -@@ -216,7 +216,8 @@ void VG_(DebugInfo_syms_getidx) ( const DebugInfo *di, - /*OUT*/const HChar** pri_name, - /*OUT*/const HChar*** sec_names, - /*OUT*/Bool* isText, -- /*OUT*/Bool* isIFunc ); -+ /*OUT*/Bool* isIFunc, -+ /*OUT*/Bool* isGlobal ); - /* ppc64-linux only: find the TOC pointer (R2 value) that should be in - force at the entry point address of the function containing - guest_code_addr. Returns 0 if not known. */ -diff --git a/docs/xml/manual-core.xml b/docs/xml/manual-core.xml -index edda8a1..c80aab0 100644 ---- a/docs/xml/manual-core.xml -+++ b/docs/xml/manual-core.xml -@@ -2315,18 +2315,26 @@ need to use them. - -
- -- When a shared library is loaded, Valgrind checks for -- functions in the library that must be replaced or wrapped. -- For example, Memcheck replaces all malloc related -- functions (malloc, free, calloc, ...) with its own versions. -- Such replacements are done by default only in shared libraries whose -- soname matches a predefined soname pattern (e.g. -- libc.so* on linux). -- By default, no replacement is done for a statically linked -- library or for alternative libraries such as tcmalloc. -+ When a shared library is loaded, Valgrind checks for -+ functions in the library that must be replaced or wrapped. For -+ example, Memcheck replaces some string and memory functions -+ (strchr, strlen, strcpy, memchr, memcpy, memmove, etc.) with its -+ own versions. Such replacements are normally done only in shared -+ libraries whose soname matches a predefined soname pattern (e.g. -+ libc.so* on linux). By default, no -+ replacement is done for a statically linked library or for -+ alternative libraries, except for the allocation functions -+ (malloc, free, calloc, memalign, realloc, operator new, operator -+ delete, etc.) Such allocation functions are intercepted by -+ default in any shared library or in the executable if they are -+ exported as global symbols. This means that if a replacement -+ allocation library such as tcmalloc is found, its functions are -+ also intercepted by default. -+ - In some cases, the replacements allow - to specify one additional -- synonym pattern, giving flexibility in the replacement. -+ synonym pattern, giving flexibility in the replacement. Or to -+ prevent interception of all public allocation symbols. - - Currently, this flexibility is only allowed for the - malloc related functions, using the -@@ -2339,27 +2347,31 @@ need to use them. - - - Alternate malloc library: to replace the malloc -- related functions in an alternate library with -- soname mymalloclib.so, give the -+ related functions in a specific alternate library with -+ soname mymalloclib.so (and not in any -+ others), give the - option . - A pattern can be used to match multiple libraries sonames. - For - example, -- will match the soname of all variants of the tcmalloc library -- (native, debug, profiled, ... tcmalloc variants). -+ will match the soname of all variants of the tcmalloc -+ library (native, debug, profiled, ... tcmalloc -+ variants). - Note: the soname of a elf shared library can be - retrieved using the readelf utility. - - - - -- Replacements in a statically linked library are done by -- using the NONE pattern. For example, if -- you link with libtcmalloc.a, memcheck -- will properly work when you give the -- option . Note -- that a NONE pattern will match the main executable and any -- shared library having no soname. -+ Replacements in a statically linked library are done -+ by using the NONE pattern. For example, -+ if you link with libtcmalloc.a, and only -+ want to intercept the malloc related functions in the -+ executable (and standard libraries) themselves, but not any -+ other shared libraries, you can give the -+ option . -+ Note that a NONE pattern will match the main executable and -+ any shared library having no soname. - - - -@@ -2369,6 +2381,17 @@ need to use them. - - - -+ -+ To only intercept allocation symbols in the default -+ system libraries, but not in any other shared library or the -+ executable defining public malloc or operator new related -+ functions use a non-existing library name -+ like -+ (where nouserintercepts can be any -+ non-existing library name). -+ -+ -+ - - -
-diff --git a/include/pub_tool_redir.h b/include/pub_tool_redir.h -index bac00d7..21d186b 100644 ---- a/include/pub_tool_redir.h -+++ b/include/pub_tool_redir.h -@@ -345,6 +345,12 @@ - #define VG_SO_SYN_PREFIX "VgSoSyn" - #define VG_SO_SYN_PREFIX_LEN 7 - -+// Special soname synonym place holder for the malloc symbols that can -+// be replaced using --soname-synonyms. Otherwise will match all -+// public symbols in any shared library/executable. -+#define SO_SYN_MALLOC VG_SO_SYN(somalloc) -+#define SO_SYN_MALLOC_NAME "VgSoSynsomalloc" -+ - #endif // __PUB_TOOL_REDIR_H - - /*--------------------------------------------------------------------*/ -diff --git a/memcheck/tests/Makefile.am b/memcheck/tests/Makefile.am -index 68d9ca1..0f34127 100644 ---- a/memcheck/tests/Makefile.am -+++ b/memcheck/tests/Makefile.am -@@ -291,6 +291,9 @@ EXTRA_DIST = \ - wrap7.vgtest wrap7.stdout.exp wrap7.stderr.exp \ - wrap8.vgtest wrap8.stdout.exp wrap8.stderr.exp \ - wrap8.stdout.exp-ppc64 wrap8.stderr.exp-ppc64 \ -+ wrapmalloc.vgtest wrapmalloc.stdout.exp wrapmalloc.stderr.exp \ -+ wrapmallocstatic.vgtest wrapmallocstatic.stdout.exp \ -+ wrapmallocstatic.stderr.exp \ - writev1.stderr.exp writev1.stderr.exp-solaris writev1.vgtest \ - xml1.stderr.exp xml1.stdout.exp xml1.vgtest xml1.stderr.exp-s390x-mvc \ - threadname.vgtest threadname.stderr.exp \ -@@ -375,6 +378,7 @@ check_PROGRAMS = \ - wcs \ - xml1 \ - wrap1 wrap2 wrap3 wrap4 wrap5 wrap6 wrap7 wrap7so.so wrap8 \ -+ wrapmalloc wrapmallocso.so wrapmallocstatic \ - writev1 - - if !SOLARIS_SUN_STUDIO_AS -@@ -570,4 +574,26 @@ else - -Wl,-soname -Wl,wrap7so.so - endif - -+# Build shared object for wrapmalloc -+wrapmalloc_SOURCES = wrapmalloc.c -+wrapmalloc_DEPENDENCIES = wrapmallocso.so -+if VGCONF_OS_IS_DARWIN -+ wrapmalloc_LDADD = `pwd`/wrapmallocso.so -+ wrapmalloc_LDFLAGS = $(AM_FLAG_M3264_PRI) -+else -+ wrapmalloc_LDADD = wrapmallocso.so -+ wrapmalloc_LDFLAGS = $(AM_FLAG_M3264_PRI) \ -+ -Wl,-rpath,$(top_builddir)/memcheck/tests -+endif -+ -+wrapmallocso_so_SOURCES = wrapmallocso.c -+wrapmallocso_so_CFLAGS = $(AM_CFLAGS) -fpic -+if VGCONF_OS_IS_DARWIN -+ wrapmallocso_so_LDFLAGS = -fpic $(AM_FLAG_M3264_PRI) -dynamic \ -+ -dynamiclib -all_load -+else -+ wrapmallocso_so_LDFLAGS = -fpic $(AM_FLAG_M3264_PRI) -shared \ -+ -Wl,-soname -Wl,wrapmallocso.so -+endif -+ - xml1_CFLAGS = $(AM_CFLAGS) -D_GNU_SOURCE -diff --git a/memcheck/tests/new_override.vgtest b/memcheck/tests/new_override.vgtest -index 50e6240..435e330 100644 ---- a/memcheck/tests/new_override.vgtest -+++ b/memcheck/tests/new_override.vgtest -@@ -1,2 +1,6 @@ - prog: new_override -+# Don't override the user defined somalloc functions in this test. -+# The test depends on some side effects and initializing memory done by -+# the user overidden operator new. -+vgopts: --soname-synonyms=somalloc=nouseroverride - stderr_filter: filter_allocs -diff --git a/memcheck/tests/wrapmalloc.c b/memcheck/tests/wrapmalloc.c -new file mode 100644 -index 0000000..2307e77 ---- /dev/null -+++ b/memcheck/tests/wrapmalloc.c -@@ -0,0 +1,14 @@ -+#include -+#include -+ -+/* Test that a program that has malloc/free interposed in a shared -+ library is also intercepted. */ -+ -+int main ( void ) -+{ -+ printf ("start\n"); -+ void *p = malloc (1024); -+ free (p); -+ printf ("done\n"); -+ return 0; -+} -diff --git a/memcheck/tests/wrapmalloc.stderr.exp b/memcheck/tests/wrapmalloc.stderr.exp -new file mode 100644 -index 0000000..d937776 ---- /dev/null -+++ b/memcheck/tests/wrapmalloc.stderr.exp -@@ -0,0 +1,10 @@ -+ -+ -+HEAP SUMMARY: -+ in use at exit: 0 bytes in 0 blocks -+ total heap usage: 1 allocs, 1 frees, 1,024 bytes allocated -+ -+For a detailed leak analysis, rerun with: --leak-check=full -+ -+For counts of detected and suppressed errors, rerun with: -v -+ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0) -diff --git a/memcheck/tests/wrapmalloc.stdout.exp b/memcheck/tests/wrapmalloc.stdout.exp -new file mode 100644 -index 0000000..60b5fd2 ---- /dev/null -+++ b/memcheck/tests/wrapmalloc.stdout.exp -@@ -0,0 +1,2 @@ -+start -+done -diff --git a/memcheck/tests/wrapmalloc.vgtest b/memcheck/tests/wrapmalloc.vgtest -new file mode 100644 -index 0000000..a6dff4e ---- /dev/null -+++ b/memcheck/tests/wrapmalloc.vgtest -@@ -0,0 +1,2 @@ -+prog: wrapmalloc -+ -diff --git a/memcheck/tests/wrapmallocso.c b/memcheck/tests/wrapmallocso.c -new file mode 100644 -index 0000000..985ce56 ---- /dev/null -+++ b/memcheck/tests/wrapmallocso.c -@@ -0,0 +1,17 @@ -+#include -+#include -+ -+/* Fake malloc/free functions that just print something. When run -+ under memcheck these functions will be intercepted and not print -+ anything. */ -+ -+void *malloc ( size_t size ) -+{ -+ printf ("malloc\n"); -+ return NULL; -+} -+ -+void free (void *ptr) -+{ -+ printf ("free\n"); -+} -diff --git a/memcheck/tests/wrapmallocstatic.c b/memcheck/tests/wrapmallocstatic.c -new file mode 100644 -index 0000000..be6573b ---- /dev/null -+++ b/memcheck/tests/wrapmallocstatic.c -@@ -0,0 +1,29 @@ -+#include -+#include -+ -+/* Test that a program that has malloc/free interposed in the -+ executable is also intercepted. */ -+ -+int main ( void ) -+{ -+ printf ("start\n"); -+ void *p = malloc (1024); -+ free (p); -+ printf ("done\n"); -+ return 0; -+} -+ -+/* Fake malloc/free functions that just print something. When run -+ under memcheck these functions will be intercepted and not print -+ anything. */ -+ -+void *malloc ( size_t size ) -+{ -+ printf ("malloc\n"); -+ return NULL; -+} -+ -+void free (void *ptr) -+{ -+ printf ("free\n"); -+} -diff --git a/memcheck/tests/wrapmallocstatic.stderr.exp b/memcheck/tests/wrapmallocstatic.stderr.exp -new file mode 100644 -index 0000000..d937776 ---- /dev/null -+++ b/memcheck/tests/wrapmallocstatic.stderr.exp -@@ -0,0 +1,10 @@ -+ -+ -+HEAP SUMMARY: -+ in use at exit: 0 bytes in 0 blocks -+ total heap usage: 1 allocs, 1 frees, 1,024 bytes allocated -+ -+For a detailed leak analysis, rerun with: --leak-check=full -+ -+For counts of detected and suppressed errors, rerun with: -v -+ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0) -diff --git a/memcheck/tests/wrapmallocstatic.stdout.exp b/memcheck/tests/wrapmallocstatic.stdout.exp -new file mode 100644 -index 0000000..60b5fd2 ---- /dev/null -+++ b/memcheck/tests/wrapmallocstatic.stdout.exp -@@ -0,0 +1,2 @@ -+start -+done -diff --git a/memcheck/tests/wrapmallocstatic.vgtest b/memcheck/tests/wrapmallocstatic.vgtest -new file mode 100644 -index 0000000..7b3c068 ---- /dev/null -+++ b/memcheck/tests/wrapmallocstatic.vgtest -@@ -0,0 +1,2 @@ -+prog: wrapmallocstatic -+ -diff -ur valgrind-3.11.0.orig/memcheck/tests/Makefile.in valgrind-3.11.0/memcheck/tests/Makefile.in ---- valgrind-3.11.0.orig/memcheck/tests/Makefile.in 2015-11-15 18:08:05.457930383 +0100 -+++ valgrind-3.11.0/memcheck/tests/Makefile.in 2015-11-15 18:14:10.828008973 +0100 -@@ -185,7 +185,8 @@ - vcpu_fnfns$(EXEEXT) wcs$(EXEEXT) xml1$(EXEEXT) wrap1$(EXEEXT) \ - wrap2$(EXEEXT) wrap3$(EXEEXT) wrap4$(EXEEXT) wrap5$(EXEEXT) \ - wrap6$(EXEEXT) wrap7$(EXEEXT) wrap7so.so$(EXEEXT) \ -- wrap8$(EXEEXT) writev1$(EXEEXT) $(am__EXEEXT_1) \ -+ wrap8$(EXEEXT) wrapmalloc$(EXEEXT) wrapmallocso.so$(EXEEXT) \ -+ wrapmallocstatic$(EXEEXT) writev1$(EXEEXT) $(am__EXEEXT_1) \ - $(am__EXEEXT_2) $(am__EXEEXT_3) $(am__EXEEXT_4) \ - $(am__EXEEXT_5) - -@@ -736,6 +737,18 @@ - wrap8_SOURCES = wrap8.c - wrap8_OBJECTS = wrap8.$(OBJEXT) - wrap8_LDADD = $(LDADD) -+am_wrapmalloc_OBJECTS = wrapmalloc.$(OBJEXT) -+wrapmalloc_OBJECTS = $(am_wrapmalloc_OBJECTS) -+wrapmalloc_LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(wrapmalloc_LDFLAGS) \ -+ $(LDFLAGS) -o $@ -+am_wrapmallocso_so_OBJECTS = wrapmallocso_so-wrapmallocso.$(OBJEXT) -+wrapmallocso_so_OBJECTS = $(am_wrapmallocso_so_OBJECTS) -+wrapmallocso_so_LDADD = $(LDADD) -+wrapmallocso_so_LINK = $(CCLD) $(wrapmallocso_so_CFLAGS) $(CFLAGS) \ -+ $(wrapmallocso_so_LDFLAGS) $(LDFLAGS) -o $@ -+wrapmallocstatic_SOURCES = wrapmallocstatic.c -+wrapmallocstatic_OBJECTS = wrapmallocstatic.$(OBJEXT) -+wrapmallocstatic_LDADD = $(LDADD) - writev1_SOURCES = writev1.c - writev1_OBJECTS = writev1.$(OBJEXT) - writev1_LDADD = $(LDADD) -@@ -826,7 +839,8 @@ - $(varinfo5_SOURCES) $(varinfo5so_so_SOURCES) varinfo6.c \ - varinforestrict.c vcpu_fbench.c vcpu_fnfns.c wcs.c wrap1.c \ - wrap2.c wrap3.c wrap4.c wrap5.c wrap6.c $(wrap7_SOURCES) \ -- $(wrap7so_so_SOURCES) wrap8.c writev1.c xml1.c -+ $(wrap7so_so_SOURCES) wrap8.c $(wrapmalloc_SOURCES) \ -+ $(wrapmallocso_so_SOURCES) wrapmallocstatic.c writev1.c xml1.c - DIST_SOURCES = accounting.c addressable.c atomic_incs.c badaddrvalue.c \ - badfree.c badjump.c badjump2.c badloop.c badpoll.c badrw.c \ - big_blocks_freed_list.c brk2.c buflen_check.c bug155125.c \ -@@ -863,7 +877,8 @@ - $(varinfo5_SOURCES) $(varinfo5so_so_SOURCES) varinfo6.c \ - varinforestrict.c vcpu_fbench.c vcpu_fnfns.c wcs.c wrap1.c \ - wrap2.c wrap3.c wrap4.c wrap5.c wrap6.c $(wrap7_SOURCES) \ -- $(wrap7so_so_SOURCES) wrap8.c writev1.c xml1.c -+ $(wrap7so_so_SOURCES) wrap8.c $(wrapmalloc_SOURCES) \ -+ $(wrapmallocso_so_SOURCES) wrapmallocstatic.c writev1.c xml1.c - RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \ - ctags-recursive dvi-recursive html-recursive info-recursive \ - install-data-recursive install-dvi-recursive \ -@@ -1544,6 +1559,9 @@ - wrap7.vgtest wrap7.stdout.exp wrap7.stderr.exp \ - wrap8.vgtest wrap8.stdout.exp wrap8.stderr.exp \ - wrap8.stdout.exp-ppc64 wrap8.stderr.exp-ppc64 \ -+ wrapmalloc.vgtest wrapmalloc.stdout.exp wrapmalloc.stderr.exp \ -+ wrapmallocstatic.vgtest wrapmallocstatic.stdout.exp \ -+ wrapmallocstatic.stderr.exp \ - writev1.stderr.exp writev1.stderr.exp-solaris writev1.vgtest \ - xml1.stderr.exp xml1.stdout.exp xml1.vgtest xml1.stderr.exp-s390x-mvc \ - threadname.vgtest threadname.stderr.exp \ -@@ -1662,6 +1680,24 @@ - @VGCONF_OS_IS_DARWIN_TRUE@wrap7so_so_LDFLAGS = -fpic $(AM_FLAG_M3264_PRI) -dynamic \ - @VGCONF_OS_IS_DARWIN_TRUE@ -dynamiclib -all_load - -+ -+# Build shared object for wrapmalloc -+wrapmalloc_SOURCES = wrapmalloc.c -+wrapmalloc_DEPENDENCIES = wrapmallocso.so -+@VGCONF_OS_IS_DARWIN_FALSE@wrapmalloc_LDADD = wrapmallocso.so -+@VGCONF_OS_IS_DARWIN_TRUE@wrapmalloc_LDADD = `pwd`/wrapmallocso.so -+@VGCONF_OS_IS_DARWIN_FALSE@wrapmalloc_LDFLAGS = $(AM_FLAG_M3264_PRI) \ -+@VGCONF_OS_IS_DARWIN_FALSE@ -Wl,-rpath,$(top_builddir)/memcheck/tests -+ -+@VGCONF_OS_IS_DARWIN_TRUE@wrapmalloc_LDFLAGS = $(AM_FLAG_M3264_PRI) -+wrapmallocso_so_SOURCES = wrapmallocso.c -+wrapmallocso_so_CFLAGS = $(AM_CFLAGS) -fpic -+@VGCONF_OS_IS_DARWIN_FALSE@wrapmallocso_so_LDFLAGS = -fpic $(AM_FLAG_M3264_PRI) -shared \ -+@VGCONF_OS_IS_DARWIN_FALSE@ -Wl,-soname -Wl,wrapmallocso.so -+ -+@VGCONF_OS_IS_DARWIN_TRUE@wrapmallocso_so_LDFLAGS = -fpic $(AM_FLAG_M3264_PRI) -dynamic \ -+@VGCONF_OS_IS_DARWIN_TRUE@ -dynamiclib -all_load -+ - xml1_CFLAGS = $(AM_CFLAGS) -D_GNU_SOURCE - all: all-recursive - -@@ -2286,6 +2322,18 @@ - @rm -f wrap8$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(wrap8_OBJECTS) $(wrap8_LDADD) $(LIBS) - -+wrapmalloc$(EXEEXT): $(wrapmalloc_OBJECTS) $(wrapmalloc_DEPENDENCIES) $(EXTRA_wrapmalloc_DEPENDENCIES) -+ @rm -f wrapmalloc$(EXEEXT) -+ $(AM_V_CCLD)$(wrapmalloc_LINK) $(wrapmalloc_OBJECTS) $(wrapmalloc_LDADD) $(LIBS) -+ -+wrapmallocso.so$(EXEEXT): $(wrapmallocso_so_OBJECTS) $(wrapmallocso_so_DEPENDENCIES) $(EXTRA_wrapmallocso_so_DEPENDENCIES) -+ @rm -f wrapmallocso.so$(EXEEXT) -+ $(AM_V_CCLD)$(wrapmallocso_so_LINK) $(wrapmallocso_so_OBJECTS) $(wrapmallocso_so_LDADD) $(LIBS) -+ -+wrapmallocstatic$(EXEEXT): $(wrapmallocstatic_OBJECTS) $(wrapmallocstatic_DEPENDENCIES) $(EXTRA_wrapmallocstatic_DEPENDENCIES) -+ @rm -f wrapmallocstatic$(EXEEXT) -+ $(AM_V_CCLD)$(LINK) $(wrapmallocstatic_OBJECTS) $(wrapmallocstatic_LDADD) $(LIBS) -+ - writev1$(EXEEXT): $(writev1_OBJECTS) $(writev1_DEPENDENCIES) $(EXTRA_writev1_DEPENDENCIES) - @rm -f writev1$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(writev1_OBJECTS) $(writev1_LDADD) $(LIBS) -@@ -2446,6 +2494,9 @@ - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/wrap7.Po@am__quote@ - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/wrap7so_so-wrap7so.Po@am__quote@ - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/wrap8.Po@am__quote@ -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/wrapmalloc.Po@am__quote@ -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/wrapmallocso_so-wrapmallocso.Po@am__quote@ -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/wrapmallocstatic.Po@am__quote@ - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/writev1.Po@am__quote@ - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xml1-xml1.Po@am__quote@ - -@@ -3011,6 +3062,20 @@ - @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ - @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(wrap7so_so_CFLAGS) $(CFLAGS) -c -o wrap7so_so-wrap7so.obj `if test -f 'wrap7so.c'; then $(CYGPATH_W) 'wrap7so.c'; else $(CYGPATH_W) '$(srcdir)/wrap7so.c'; fi` - -+wrapmallocso_so-wrapmallocso.o: wrapmallocso.c -+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(wrapmallocso_so_CFLAGS) $(CFLAGS) -MT wrapmallocso_so-wrapmallocso.o -MD -MP -MF $(DEPDIR)/wrapmallocso_so-wrapmallocso.Tpo -c -o wrapmallocso_so-wrapmallocso.o `test -f 'wrapmallocso.c' || echo '$(srcdir)/'`wrapmallocso.c -+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/wrapmallocso_so-wrapmallocso.Tpo $(DEPDIR)/wrapmallocso_so-wrapmallocso.Po -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='wrapmallocso.c' object='wrapmallocso_so-wrapmallocso.o' libtool=no @AMDEPBACKSLASH@ -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(wrapmallocso_so_CFLAGS) $(CFLAGS) -c -o wrapmallocso_so-wrapmallocso.o `test -f 'wrapmallocso.c' || echo '$(srcdir)/'`wrapmallocso.c -+ -+wrapmallocso_so-wrapmallocso.obj: wrapmallocso.c -+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(wrapmallocso_so_CFLAGS) $(CFLAGS) -MT wrapmallocso_so-wrapmallocso.obj -MD -MP -MF $(DEPDIR)/wrapmallocso_so-wrapmallocso.Tpo -c -o wrapmallocso_so-wrapmallocso.obj `if test -f 'wrapmallocso.c'; then $(CYGPATH_W) 'wrapmallocso.c'; else $(CYGPATH_W) '$(srcdir)/wrapmallocso.c'; fi` -+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/wrapmallocso_so-wrapmallocso.Tpo $(DEPDIR)/wrapmallocso_so-wrapmallocso.Po -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='wrapmallocso.c' object='wrapmallocso_so-wrapmallocso.obj' libtool=no @AMDEPBACKSLASH@ -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(wrapmallocso_so_CFLAGS) $(CFLAGS) -c -o wrapmallocso_so-wrapmallocso.obj `if test -f 'wrapmallocso.c'; then $(CYGPATH_W) 'wrapmallocso.c'; else $(CYGPATH_W) '$(srcdir)/wrapmallocso.c'; fi` -+ - xml1-xml1.o: xml1.c - @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(xml1_CFLAGS) $(CFLAGS) -MT xml1-xml1.o -MD -MP -MF $(DEPDIR)/xml1-xml1.Tpo -c -o xml1-xml1.o `test -f 'xml1.c' || echo '$(srcdir)/'`xml1.c - @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/xml1-xml1.Tpo $(DEPDIR)/xml1-xml1.Po -commit d35c2c3197a0ae8398228d19578e1dfcb8401c5f -Author: iraisr -Date: Wed Nov 18 04:13:12 2015 +0000 - - Expected stderr of test cases wrapmalloc and wrapmallocstatic are overconstrained. - Fixes BZ#355455. - - - git-svn-id: svn://svn.valgrind.org/valgrind/trunk@15727 a5019735-40e9-0310-863c-91ae7b9d1cf9 - -diff --git a/memcheck/tests/wrapmalloc.stderr.exp b/memcheck/tests/wrapmalloc.stderr.exp -index d937776..e69de29 100644 ---- a/memcheck/tests/wrapmalloc.stderr.exp -+++ b/memcheck/tests/wrapmalloc.stderr.exp -@@ -1,10 +0,0 @@ -- -- --HEAP SUMMARY: -- in use at exit: 0 bytes in 0 blocks -- total heap usage: 1 allocs, 1 frees, 1,024 bytes allocated -- --For a detailed leak analysis, rerun with: --leak-check=full -- --For counts of detected and suppressed errors, rerun with: -v --ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0) -diff --git a/memcheck/tests/wrapmalloc.vgtest b/memcheck/tests/wrapmalloc.vgtest -index a6dff4e..c22f241 100644 ---- a/memcheck/tests/wrapmalloc.vgtest -+++ b/memcheck/tests/wrapmalloc.vgtest -@@ -1,2 +1,2 @@ - prog: wrapmalloc -- -+vgopts: -q -diff --git a/memcheck/tests/wrapmallocstatic.stderr.exp b/memcheck/tests/wrapmallocstatic.stderr.exp -index d937776..e69de29 100644 ---- a/memcheck/tests/wrapmallocstatic.stderr.exp -+++ b/memcheck/tests/wrapmallocstatic.stderr.exp -@@ -1,10 +0,0 @@ -- -- --HEAP SUMMARY: -- in use at exit: 0 bytes in 0 blocks -- total heap usage: 1 allocs, 1 frees, 1,024 bytes allocated -- --For a detailed leak analysis, rerun with: --leak-check=full -- --For counts of detected and suppressed errors, rerun with: -v --ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0) -diff --git a/memcheck/tests/wrapmallocstatic.vgtest b/memcheck/tests/wrapmallocstatic.vgtest -index 7b3c068..f040756 100644 ---- a/memcheck/tests/wrapmallocstatic.vgtest -+++ b/memcheck/tests/wrapmallocstatic.vgtest -@@ -1,2 +1,2 @@ - prog: wrapmallocstatic -- -+vgopts: -q - -commit 194731c49eb7d448503a5e8625dd39779c2c9f8b -Author: iraisr -Date: Wed Nov 18 20:38:37 2015 +0000 - - When searching for global public symbols (like for the somalloc - synonym symbols), exclude the dynamic (runtime) linker as it is very - special. - Fixes BZ#355454 - - - git-svn-id: svn://svn.valgrind.org/valgrind/trunk@15728 a5019735-40e9-0310-863c-91ae7b9d1cf9 - -diff --git a/coregrind/m_redir.c b/coregrind/m_redir.c -index 3d3f70a..dcf1fb4 100644 ---- a/coregrind/m_redir.c -+++ b/coregrind/m_redir.c -@@ -809,8 +809,19 @@ void generate_and_add_actives ( - anyMark = False; - for (sp = specs; sp; sp = sp->next) { - sp->done = False; -- sp->mark = VG_(string_match)( sp->from_sopatt, -- VG_(DebugInfo_get_soname)(di) ); -+ const HChar *soname = VG_(DebugInfo_get_soname)(di); -+ -+ /* When searching for global public symbols (like for the somalloc -+ synonym symbols), exclude the dynamic (runtime) linker as it is very -+ special. See https://bugs.kde.org/show_bug.cgi?id=355454 */ -+ if ((VG_(strcmp)(sp->from_sopatt, "*") == 0) && -+ (sp->isGlobal == True) && -+ VG_(is_soname_ld_so)(soname)) { -+ sp->mark = False; -+ continue; -+ } -+ -+ sp->mark = VG_(string_match)( sp->from_sopatt, soname ); - anyMark = anyMark || sp->mark; - } - -@@ -1179,6 +1190,29 @@ Addr VG_(redir_do_lookup) ( Addr orig, Bool* isWrap ) - return r->to_addr; - } - -+/* Does the soname represent a dynamic (runtime) linker? -+ Considers various VG_U_LD* entries from pub_tool_redir.h. */ -+Bool VG_(is_soname_ld_so) (const HChar *soname) -+{ -+# if defined(VGO_linux) -+ if (VG_STREQ(soname, VG_U_LD_LINUX_SO_3)) return True; -+ if (VG_STREQ(soname, VG_U_LD_LINUX_SO_2)) return True; -+ if (VG_STREQ(soname, VG_U_LD_LINUX_X86_64_SO_2)) return True; -+ if (VG_STREQ(soname, VG_U_LD64_SO_1)) return True; -+ if (VG_STREQ(soname, VG_U_LD64_SO_2)) return True; -+ if (VG_STREQ(soname, VG_U_LD_SO_1)) return True; -+ if (VG_STREQ(soname, VG_U_LD_LINUX_AARCH64_SO_1)) return True; -+ if (VG_STREQ(soname, VG_U_LD_LINUX_ARMHF_SO_3)) return True; -+# elif defined(VGO_darwin) -+ if (VG_STREQ(soname, VG_U_DYLD)) return True; -+# elif defined(VGO_solaris) -+ if (VG_STREQ(soname, VG_U_LD_SO_1)) return True; -+# else -+# error "Unsupported OS" -+# endif -+ -+ return False; -+} - - /*------------------------------------------------------------*/ - /*--- INITIALISATION ---*/ -diff --git a/docs/xml/manual-core.xml b/docs/xml/manual-core.xml -index c80aab0..758e2f4 100644 ---- a/docs/xml/manual-core.xml -+++ b/docs/xml/manual-core.xml -@@ -2322,7 +2322,7 @@ need to use them. - own versions. Such replacements are normally done only in shared - libraries whose soname matches a predefined soname pattern (e.g. - libc.so* on linux). By default, no -- replacement is done for a statically linked library or for -+ replacement is done for a statically linked binary or for - alternative libraries, except for the allocation functions - (malloc, free, calloc, memalign, realloc, operator new, operator - delete, etc.) Such allocation functions are intercepted by -@@ -2392,6 +2392,13 @@ need to use them. - - - -+ -+ Shared library of the dynamic (runtime) linker is excluded from -+ searching for global public symbols, such as those for the malloc -+ related functions (identified by somalloc synonym). -+ -+ -+ - - - -diff --git a/helgrind/hg_main.c b/helgrind/hg_main.c -index ae6eec0..9aed05a 100644 ---- a/helgrind/hg_main.c -+++ b/helgrind/hg_main.c -@@ -4589,7 +4589,6 @@ static Bool is_in_dynamic_linker_shared_object( Addr ga ) - { - DebugInfo* dinfo; - const HChar* soname; -- if (0) return False; - - dinfo = VG_(find_DebugInfo)( ga ); - if (!dinfo) return False; -@@ -4598,23 +4597,7 @@ static Bool is_in_dynamic_linker_shared_object( Addr ga ) - tl_assert(soname); - if (0) VG_(printf)("%s\n", soname); - --# if defined(VGO_linux) -- if (VG_STREQ(soname, VG_U_LD_LINUX_SO_3)) return True; -- if (VG_STREQ(soname, VG_U_LD_LINUX_SO_2)) return True; -- if (VG_STREQ(soname, VG_U_LD_LINUX_X86_64_SO_2)) return True; -- if (VG_STREQ(soname, VG_U_LD64_SO_1)) return True; -- if (VG_STREQ(soname, VG_U_LD64_SO_2)) return True; -- if (VG_STREQ(soname, VG_U_LD_SO_1)) return True; -- if (VG_STREQ(soname, VG_U_LD_LINUX_AARCH64_SO_1)) return True; -- if (VG_STREQ(soname, VG_U_LD_LINUX_ARMHF_SO_3)) return True; --# elif defined(VGO_darwin) -- if (VG_STREQ(soname, VG_U_DYLD)) return True; --# elif defined(VGO_solaris) -- if (VG_STREQ(soname, VG_U_LD_SO_1)) return True; --# else --# error "Unsupported OS" --# endif -- return False; -+ return VG_(is_soname_ld_so)(soname); - } - - static -diff --git a/include/pub_tool_redir.h b/include/pub_tool_redir.h -index 21d186b..aa879d6 100644 ---- a/include/pub_tool_redir.h -+++ b/include/pub_tool_redir.h -@@ -351,6 +351,8 @@ - #define SO_SYN_MALLOC VG_SO_SYN(somalloc) - #define SO_SYN_MALLOC_NAME "VgSoSynsomalloc" - -+Bool VG_(is_soname_ld_so) (const HChar *soname); -+ - #endif // __PUB_TOOL_REDIR_H - - /*--------------------------------------------------------------------*/ diff --git a/SOURCES/valgrind-3.11.0-x86_unwind.patch b/SOURCES/valgrind-3.11.0-x86_unwind.patch deleted file mode 100644 index f6b62bb..0000000 --- a/SOURCES/valgrind-3.11.0-x86_unwind.patch +++ /dev/null @@ -1,167 +0,0 @@ -commit f250c4d3241c156f8e65398e2af76e3e2ee1ccb5 -Author: philippe -Date: Wed Nov 18 20:56:55 2015 +0000 - - Fix incorrect (or infinite loop) unwind on RHEL7 x86 32 bits. - - On RHEL7 x86 32 bits, Valgrind unwinder cannot properly unwind - the stack just after a thread creation : the unwinder always retrieves - the same pc/sp/bp. - See below for an example. - This has as consequences that some stack traces are bigger than - needed (i.e. they always fill up the ips array). If - --merge-recursive-frames is given, then the unwinder enters in an - infinite loop (as identical frames will be merged, and the ips array - will never be filled in). - Thi patch adds an additional exit condition : after unwinding - a frame, if the previous sp is >= new sp, then unwinding stops. - Patch has been tested on debian 8/x86, RHEL7/x86. - - - - 0x0417db67 <+55>: mov 0x18(%esp),%ebx - 0x0417db6b <+59>: mov 0x28(%esp),%edi - 0x0417db6f <+63>: mov $0x78,%eax - 0x0417db74 <+68>: mov %ebx,(%ecx) - 0x0417db76 <+70>: int $0x80 - => 0x0417db78 <+72>: pop %edi - 0x0417db79 <+73>: pop %esi - 0x0417db7a <+74>: pop %ebx - 0x0417db7b <+75>: test %eax,%eax - - Valgrind stacktrace gives: - ==21261== at 0x417DB78: clone (clone.S:110) - ==21261== by 0x424702F: ??? - ==21261== by 0x424702F: ??? - ==21261== by 0x424702F: ??? - ==21261== by 0x424702F: ??? - ==21261== by 0x424702F: ??? - ==21261== by 0x424702F: ??? - ==21261== by 0x424702F: ??? - ... - (till the array of ips is full) - - while gdb stacktrace gives: - (gdb) bt - #0 clone () at ../sysdeps/unix/sysv/linux/i386/clone.S:110 - #1 0x00000000 in ?? () - (gdb) p $pc - $2 = (void (*)()) 0x417db78 - (gdb) - - - With the fix, valgrind gives: - ==21261== at 0x417DB78: clone (clone.S:110) - ==21261== by 0x424702F: ??? - which looks more reasonable. - - - - - git-svn-id: svn://svn.valgrind.org/valgrind/trunk@15729 a5019735-40e9-0310-863c-91ae7b9d1cf9 - -diff --git a/coregrind/m_stacktrace.c b/coregrind/m_stacktrace.c -index 8c1e9a4..137e780 100644 ---- a/coregrind/m_stacktrace.c -+++ b/coregrind/m_stacktrace.c -@@ -350,6 +350,8 @@ UInt VG_(get_StackTrace_wrk) ( ThreadId tid_if_known, - uregs.xbp <= fp_max - 1 * sizeof(UWord)/*see comment below*/ && - VG_IS_4_ALIGNED(uregs.xbp)) - { -+ Addr old_xsp; -+ - /* fp looks sane, so use it. */ - uregs.xip = (((UWord*)uregs.xbp)[1]); - // We stop if we hit a zero (the traditional end-of-stack -@@ -382,6 +384,7 @@ UInt VG_(get_StackTrace_wrk) ( ThreadId tid_if_known, - } - } - -+ old_xsp = uregs.xsp; - uregs.xsp = uregs.xbp + sizeof(Addr) /*saved %ebp*/ - + sizeof(Addr) /*ra*/; - uregs.xbp = (((UWord*)uregs.xbp)[0]); -@@ -393,6 +396,12 @@ UInt VG_(get_StackTrace_wrk) ( ThreadId tid_if_known, - if (debug) VG_(printf)(" cache FPUNWIND >2\n"); - if (debug) unwind_case = "FO"; - if (do_stats) stats.FO++; -+ if (old_xsp >= uregs.xsp) { -+ if (debug) -+ VG_(printf) (" FO end of stack old_xsp %p >= xsp %p\n", -+ (void*)old_xsp, (void*)uregs.xsp); -+ break; -+ } - } else { - fp_CF_verif_cache [hash] = xip_verified ^ CFUNWIND; - if (debug) VG_(printf)(" cache CFUNWIND >2\n"); -@@ -406,6 +415,12 @@ UInt VG_(get_StackTrace_wrk) ( ThreadId tid_if_known, - } else { - if (debug) unwind_case = "FF"; - if (do_stats) stats.FF++; -+ if (old_xsp >= uregs.xsp) { -+ if (debug) -+ VG_(printf) (" FF end of stack old_xsp %p >= xsp %p\n", -+ (void*)old_xsp, (void*)uregs.xsp); -+ break; -+ } - } - goto unwind_done; - } else { -commit 4520d562975820aced0fda6ed503379f337da66e -Author: philippe -Date: Wed Feb 17 22:41:14 2016 +0000 - - Fix incorrect (or infinite loop) unwind on RHEL7 amd64 64 bits. - - Same kind of problems as explained and fixed in revision 15720: - In some cases, unwinding always retrieves the same pc/sp/bp. - - Fix for 64 bits is similar: stop unwinding if the previous sp is >= new sp - - - - git-svn-id: svn://svn.valgrind.org/valgrind/trunk@15794 a5019735-40e9-0310-863c-91ae7b9d1cf9 - -diff --git a/coregrind/m_stacktrace.c b/coregrind/m_stacktrace.c -index 137e780..ef4984c 100644 ---- a/coregrind/m_stacktrace.c -+++ b/coregrind/m_stacktrace.c -@@ -607,16 +607,25 @@ UInt VG_(get_StackTrace_wrk) ( ThreadId tid_if_known, - * next function which is completely wrong. - */ - while (True) { -+ Addr old_xsp; - - if (i >= max_n_ips) - break; - -+ old_xsp = uregs.xsp; -+ - /* Try to derive a new (ip,sp,fp) triple from the current set. */ - - /* First off, see if there is any CFI info to hand which can - be used. */ - if ( VG_(use_CF_info)( &uregs, fp_min, fp_max ) ) { - if (0 == uregs.xip || 1 == uregs.xip) break; -+ if (old_xsp >= uregs.xsp) { -+ if (debug) -+ VG_(printf) (" CF end of stack old_xsp %p >= xsp %p\n", -+ (void*)old_xsp, (void*)uregs.xsp); -+ break; -+ } - if (sps) sps[i] = uregs.xsp; - if (fps) fps[i] = uregs.xbp; - ips[i++] = uregs.xip - 1; /* -1: refer to calling insn, not the RA */ -@@ -646,6 +655,12 @@ UInt VG_(get_StackTrace_wrk) ( ThreadId tid_if_known, - if (0 == uregs.xip || 1 == uregs.xip) break; - uregs.xsp = uregs.xbp + sizeof(Addr) /*saved %rbp*/ - + sizeof(Addr) /*ra*/; -+ if (old_xsp >= uregs.xsp) { -+ if (debug) -+ VG_(printf) (" FF end of stack old_xsp %p >= xsp %p\n", -+ (void*)old_xsp, (void*)uregs.xsp); -+ break; -+ } - uregs.xbp = (((UWord*)uregs.xbp)[0]); - if (sps) sps[i] = uregs.xsp; - if (fps) fps[i] = uregs.xbp; diff --git a/SOURCES/valgrind-3.11.0-z13s.patch b/SOURCES/valgrind-3.11.0-z13s.patch deleted file mode 100644 index 7e7e1c2..0000000 --- a/SOURCES/valgrind-3.11.0-z13s.patch +++ /dev/null @@ -1,56 +0,0 @@ -commit 3b6e36f530120f5e30d8a81d26e04018a8d0784f -Author: florian -Date: Tue Feb 16 21:14:47 2016 +0000 - - s390: Add machine model z13s - - - git-svn-id: svn://svn.valgrind.org/vex/trunk@3208 8f6e269a-dfd6-0310-a8e1-e2731360e62c - -diff --git a/VEX/pub/libvex.h b/pub/libvex.h -index b2bd476..4dd23e6 100644 ---- a/VEX/pub/libvex.h -+++ b/VEX/pub/libvex.h -@@ -141,7 +141,8 @@ typedef - #define VEX_S390X_MODEL_ZEC12 10 - #define VEX_S390X_MODEL_ZBC12 11 - #define VEX_S390X_MODEL_Z13 12 --#define VEX_S390X_MODEL_UNKNOWN 13 /* always last in list */ -+#define VEX_S390X_MODEL_Z13S 13 -+#define VEX_S390X_MODEL_UNKNOWN 14 /* always last in list */ - #define VEX_S390X_MODEL_MASK 0x3F - - #define VEX_HWCAPS_S390X_LDISP (1<<6) /* Long-displacement facility */ -commit e6d40c0b4d4e8a7007a6f2fc0c2f0aac50aba274 -Author: florian -Date: Tue Feb 16 21:15:32 2016 +0000 - - s390: Recognise machine model z13s (2965). - - - git-svn-id: svn://svn.valgrind.org/valgrind/trunk@15789 a5019735-40e9-0310-863c-91ae7b9d1cf9 - -diff --git a/coregrind/m_machine.c b/coregrind/m_machine.c -index cd4606b..ae8b929 100644 ---- a/coregrind/m_machine.c -+++ b/coregrind/m_machine.c -@@ -616,6 +616,7 @@ static UInt VG_(get_machine_model)(void) - { "2827", VEX_S390X_MODEL_ZEC12 }, - { "2828", VEX_S390X_MODEL_ZBC12 }, - { "2964", VEX_S390X_MODEL_Z13 }, -+ { "2965", VEX_S390X_MODEL_Z13S }, - }; - - Int model, n, fh; -diff --git a/tests/s390x_features.c b/tests/s390x_features.c -index de34a98..bc671c6 100644 ---- a/tests/s390x_features.c -+++ b/tests/s390x_features.c -@@ -89,6 +89,7 @@ model_info models[] = { - { "2827", "zEC12" }, - { "2828", "zBC12" }, - { "2964", "z13" }, -+ { "2965", "z13s" }, - }; - - diff --git a/SOURCES/valgrind-3.12.0-aarch64-syscalls.patch b/SOURCES/valgrind-3.12.0-aarch64-syscalls.patch new file mode 100644 index 0000000..cc67009 --- /dev/null +++ b/SOURCES/valgrind-3.12.0-aarch64-syscalls.patch @@ -0,0 +1,444 @@ +diff --git a/coregrind/m_syswrap/syswrap-arm64-linux.c b/coregrind/m_syswrap/syswrap-arm64-linux.c +index f8b5b7c..60482d7 100644 +--- a/coregrind/m_syswrap/syswrap-arm64-linux.c ++++ b/coregrind/m_syswrap/syswrap-arm64-linux.c +@@ -666,10 +666,11 @@ static SyscallTableEntry syscall_main_table[] = { + LINX_(__NR_unlinkat, sys_unlinkat), // 35 + LINX_(__NR_symlinkat, sys_symlinkat), // 36 + LINX_(__NR_linkat, sys_linkat), // 37 +- LINX_(__NR_renameat, sys_renameat), // 38 ++ LINX_(__NR_renameat, sys_renameat), // 38 + LINX_(__NR_umount2, sys_umount), // 39 + LINX_(__NR_mount, sys_mount), // 40 +- ++ LINX_(__NR_pivot_root, sys_pivot_root), // 41 ++ // (__NR_nfsservctl, sys_ni_syscall), // 42 + GENXY(__NR_statfs, sys_statfs), // 43 + GENXY(__NR_fstatfs, sys_fstatfs), // 44 + GENX_(__NR_truncate, sys_truncate), // 45 +@@ -711,7 +712,7 @@ static SyscallTableEntry syscall_main_table[] = { + GENX_(__NR_sync, sys_sync), // 81 + GENX_(__NR_fsync, sys_fsync), // 82 + GENX_(__NR_fdatasync, sys_fdatasync), // 83 +- ++ LINX_(__NR_sync_file_range, sys_sync_file_range), // 84 + LINXY(__NR_timerfd_create, sys_timerfd_create), // 85 + LINXY(__NR_timerfd_settime, sys_timerfd_settime), // 86 + LINXY(__NR_timerfd_gettime, sys_timerfd_gettime), // 87 +@@ -724,27 +725,27 @@ static SyscallTableEntry syscall_main_table[] = { + LINX_(__NR_exit_group, sys_exit_group), // 94 + LINXY(__NR_waitid, sys_waitid), // 95 + LINX_(__NR_set_tid_address, sys_set_tid_address), // 96 +- ++ LINX_(__NR_unshare, sys_unshare), // 97 + LINXY(__NR_futex, sys_futex), // 98 + LINX_(__NR_set_robust_list, sys_set_robust_list), // 99 +- ++ LINXY(__NR_get_robust_list, sys_get_robust_list), // 100 + GENXY(__NR_nanosleep, sys_nanosleep), // 101 + GENXY(__NR_getitimer, sys_getitimer), // 102 + GENXY(__NR_setitimer, sys_setitimer), // 103 + GENX_(__NR_kexec_load, sys_ni_syscall), // 104 + LINX_(__NR_init_module, sys_init_module), // 105 +- ++ LINX_(__NR_delete_module, sys_delete_module), // 106 + LINXY(__NR_timer_create, sys_timer_create), // 107 +- LINXY(__NR_timer_settime, sys_timer_settime), // 108 +- LINXY(__NR_timer_gettime, sys_timer_gettime), // 109 +- LINX_(__NR_timer_getoverrun, sys_timer_getoverrun), // 110 ++ LINXY(__NR_timer_gettime, sys_timer_gettime), // 108 ++ LINX_(__NR_timer_getoverrun, sys_timer_getoverrun), // 109 ++ LINXY(__NR_timer_settime, sys_timer_settime), // 110 + LINX_(__NR_timer_delete, sys_timer_delete), // 111 + LINX_(__NR_clock_settime, sys_clock_settime), // 112 + LINXY(__NR_clock_gettime, sys_clock_gettime), // 113 + LINXY(__NR_clock_getres, sys_clock_getres), // 114 + LINXY(__NR_clock_nanosleep, sys_clock_nanosleep), // 115 + LINXY(__NR_syslog, sys_syslog), // 116 +- ++ // (__NR_ptrace, sys_ptrace), // 117 + LINXY(__NR_sched_setparam, sys_sched_setparam), // 118 + LINX_(__NR_sched_setscheduler,sys_sched_setscheduler),// 119 + LINX_(__NR_sched_getscheduler,sys_sched_getscheduler),// 120 +@@ -754,9 +755,10 @@ static SyscallTableEntry syscall_main_table[] = { + LINX_(__NR_sched_yield, sys_sched_yield), // 124 + LINX_(__NR_sched_get_priority_max, sys_sched_get_priority_max),// 125 + LINX_(__NR_sched_get_priority_min, sys_sched_get_priority_min),// 126 +- ++ LINXY(__NR_sched_rr_get_interval, sys_sched_rr_get_interval),// 127 ++ // (__NR_restart_syscall, sys_ni_syscall), // 128 + GENX_(__NR_kill, sys_kill), // 129 +- ++ LINXY(__NR_tkill, sys_tkill), // 130 + LINX_(__NR_tgkill, sys_tgkill), // 131 + GENXY(__NR_sigaltstack, sys_sigaltstack), // 132 + LINX_(__NR_rt_sigsuspend, sys_rt_sigsuspend), // 133 +@@ -768,7 +770,7 @@ static SyscallTableEntry syscall_main_table[] = { + PLAX_(__NR_rt_sigreturn, sys_rt_sigreturn), // 139 + GENX_(__NR_setpriority, sys_setpriority), // 140 + GENX_(__NR_getpriority, sys_getpriority), // 141 +- ++ // (__NR_reboot, sys_ni_syscall), // 142 + GENX_(__NR_setregid, sys_setregid), // 143 + GENX_(__NR_setgid, sys_setgid), // 144 + GENX_(__NR_setreuid, sys_setreuid), // 145 +@@ -787,13 +789,14 @@ static SyscallTableEntry syscall_main_table[] = { + GENXY(__NR_getgroups, sys_getgroups), // 158 + GENX_(__NR_setgroups, sys_setgroups), // 159 + GENXY(__NR_uname, sys_newuname), // 160 +- ++ GENX_(__NR_sethostname, sys_sethostname), // 161 ++ // (__NR_setdomainname, sys_ni_syscall), // 162 + GENXY(__NR_getrlimit, sys_old_getrlimit), // 163 + GENX_(__NR_setrlimit, sys_setrlimit), // 164 + GENXY(__NR_getrusage, sys_getrusage), // 165 + GENX_(__NR_umask, sys_umask), // 166 + LINXY(__NR_prctl, sys_prctl), // 167 +- ++ LINXY(__NR_getcpu, sys_getcpu), // 168 + GENXY(__NR_gettimeofday, sys_gettimeofday), // 169 + GENX_(__NR_settimeofday, sys_settimeofday), // 170 + LINXY(__NR_adjtimex, sys_adjtimex), // 171 +@@ -843,13 +846,14 @@ static SyscallTableEntry syscall_main_table[] = { + GENXY(__NR_munmap, sys_munmap), // 215 + GENX_(__NR_mremap, sys_mremap), // 216 + LINX_(__NR_add_key, sys_add_key), // 217 +- ++ LINX_(__NR_request_key, sys_request_key), // 218 + LINXY(__NR_keyctl, sys_keyctl), // 219 + LINX_(__NR_clone, sys_clone), // 220 + GENX_(__NR_execve, sys_execve), // 221 + PLAX_(__NR_mmap, sys_mmap), // 222 + PLAX_(__NR_fadvise64, sys_fadvise64), // 223 +- ++ // (__NR_swapon, sys_swapon), // 224 ++ // (__NR_swapoff, sys_swapoff), // 225 + GENXY(__NR_mprotect, sys_mprotect), // 226 + GENX_(__NR_msync, sys_msync), // 227 + GENX_(__NR_mlock, sys_mlock), // 228 +@@ -858,301 +862,47 @@ static SyscallTableEntry syscall_main_table[] = { + LINX_(__NR_munlockall, sys_munlockall), // 231 + GENXY(__NR_mincore, sys_mincore), // 232 + GENX_(__NR_madvise, sys_madvise), // 233 +- ++ // (__NR_remap_file_pages, sys_ni_syscall) // 234 + LINX_(__NR_mbind, sys_mbind), // 235 + LINXY(__NR_get_mempolicy, sys_get_mempolicy), // 236 + LINX_(__NR_set_mempolicy, sys_set_mempolicy), // 237 +- ++ // (__NR_migrate_pages, sys_ni_syscall), // 238 ++ LINXY(__NR_move_pages, sys_move_pages), // 239 ++ LINXY(__NR_rt_tgsigqueueinfo, sys_rt_tgsigqueueinfo), // 240 + LINXY(__NR_perf_event_open, sys_perf_event_open), // 241 + LINXY(__NR_accept4, sys_accept4), // 242 + LINXY(__NR_recvmmsg, sys_recvmmsg), // 243 +- + GENXY(__NR_wait4, sys_wait4), // 260 + LINXY(__NR_prlimit64, sys_prlimit64), // 261 +- ++ LINXY(__NR_fanotify_init, sys_fanotify_init), // 262 ++ LINX_(__NR_fanotify_mark, sys_fanotify_mark), // 263 + LINXY(__NR_name_to_handle_at, sys_name_to_handle_at), // 264 + LINXY(__NR_open_by_handle_at, sys_open_by_handle_at), // 265 +- ++ LINXY(__NR_clock_adjtime, sys_clock_adjtime), // 266 + LINX_(__NR_syncfs, sys_syncfs), // 267 +- ++ // (__NR_setns, sys_ni_syscall), // 268 + LINXY(__NR_sendmmsg, sys_sendmmsg), // 269 + LINXY(__NR_process_vm_readv, sys_process_vm_readv), // 270 + LINX_(__NR_process_vm_writev, sys_process_vm_writev), // 271 +- ++ LINX_(__NR_kcmp, sys_kcmp), // 272 ++ // (__NR_finit_module, sys_ni_syscall), // 273 ++ // (__NR_sched_setattr, sys_ni_syscall), // 274 ++ // (__NR_sched_getattr, sys_ni_syscall), // 275 + LINX_(__NR_renameat2, sys_renameat2), // 276 +- ++ // (__NR_seccomp, sys_ni_syscall), // 277 + LINXY(__NR_getrandom, sys_getrandom), // 278 + LINXY(__NR_memfd_create, sys_memfd_create), // 279 +- +-// The numbers below are bogus. (See comment further down.) +-// When pulling entries above this line, change the numbers +-// to be correct. +- +-//ZZ //zz // (restart_syscall) // 0 +-//ZZ GENX_(__NR_fork, sys_fork), // 2 +-//ZZ +-//ZZ GENXY(__NR_open, sys_open), // 5 +-//ZZ // GENXY(__NR_waitpid, sys_waitpid), // 7 +-//ZZ GENXY(__NR_creat, sys_creat), // 8 +-//ZZ GENX_(__NR_link, sys_link), // 9 +-//ZZ +-//ZZ GENX_(__NR_unlink, sys_unlink), // 10 +-//ZZ GENXY(__NR_time, sys_time), // 13 +-//ZZ GENX_(__NR_mknod, sys_mknod), // 14 +-//ZZ +-//ZZ GENX_(__NR_chmod, sys_chmod), // 15 +-//ZZ //zz LINX_(__NR_lchown, sys_lchown16), // 16 +-//ZZ // GENX_(__NR_break, sys_ni_syscall), // 17 +-//ZZ //zz // (__NR_oldstat, sys_stat), // 18 (obsolete) +-//ZZ LINX_(__NR_lseek, sys_lseek), // 19 +-//ZZ +-//ZZ GENX_(__NR_getpid, sys_getpid), // 20 +-//ZZ LINX_(__NR_umount, sys_oldumount), // 22 +-//ZZ LINX_(__NR_setuid, sys_setuid16), // 23 ## P +-//ZZ LINX_(__NR_getuid, sys_getuid16), // 24 ## P +-//ZZ //zz +-//ZZ //zz // (__NR_stime, sys_stime), // 25 * (SVr4,SVID,X/OPEN) +-//ZZ PLAXY(__NR_ptrace, sys_ptrace), // 26 +-//ZZ GENX_(__NR_alarm, sys_alarm), // 27 +-//ZZ //zz // (__NR_oldfstat, sys_fstat), // 28 * L -- obsolete +-//ZZ GENX_(__NR_pause, sys_pause), // 29 +-//ZZ +-//ZZ LINX_(__NR_utime, sys_utime), // 30 +-//ZZ // GENX_(__NR_stty, sys_ni_syscall), // 31 +-//ZZ // GENX_(__NR_gtty, sys_ni_syscall), // 32 +-//ZZ GENX_(__NR_access, sys_access), // 33 +-//ZZ GENX_(__NR_nice, sys_nice), // 34 +-//ZZ +-//ZZ // GENX_(__NR_ftime, sys_ni_syscall), // 35 +-//ZZ GENX_(__NR_rename, sys_rename), // 38 +-//ZZ GENX_(__NR_mkdir, sys_mkdir), // 39 +-//ZZ +-//ZZ GENX_(__NR_rmdir, sys_rmdir), // 40 +-//ZZ LINXY(__NR_pipe, sys_pipe), // 42 +-//ZZ // GENX_(__NR_prof, sys_ni_syscall), // 44 +- +-//ZZ LINX_(__NR_getgid, sys_getgid16), // 47 +-//ZZ //zz // (__NR_signal, sys_signal), // 48 */* (ANSI C) +-//ZZ LINX_(__NR_geteuid, sys_geteuid16), // 49 +-//ZZ +-//ZZ LINX_(__NR_getegid, sys_getegid16), // 50 +-//ZZ // GENX_(__NR_lock, sys_ni_syscall), // 53 +-//ZZ +-//ZZ LINXY(__NR_fcntl, sys_fcntl), // 55 +-//ZZ // GENX_(__NR_mpx, sys_ni_syscall), // 56 +-//ZZ // GENX_(__NR_ulimit, sys_ni_syscall), // 58 +-//ZZ //zz // (__NR_oldolduname, sys_olduname), // 59 Linux -- obsolete +-//ZZ //zz +-//ZZ //zz // (__NR_ustat, sys_ustat) // 62 SVr4 -- deprecated +-//ZZ GENXY(__NR_dup2, sys_dup2), // 63 +-//ZZ GENX_(__NR_getppid, sys_getppid), // 64 +-//ZZ +-//ZZ GENX_(__NR_getpgrp, sys_getpgrp), // 65 +-//ZZ LINXY(__NR_sigaction, sys_sigaction), // 67 +-//ZZ //zz // (__NR_sgetmask, sys_sgetmask), // 68 */* (ANSI C) +-//ZZ //zz // (__NR_ssetmask, sys_ssetmask), // 69 */* (ANSI C) +-//ZZ //zz +-//ZZ PLAX_(__NR_sigsuspend, sys_sigsuspend), // 72 +-//ZZ LINXY(__NR_sigpending, sys_sigpending), // 73 +-//ZZ //zz // (__NR_sethostname, sys_sethostname), // 74 */* +-//ZZ //zz +-//ZZ GENXY(__NR_getrlimit, sys_old_getrlimit), // 76 +-//ZZ +-//ZZ LINXY(__NR_getgroups, sys_getgroups16), // 80 +-//ZZ LINX_(__NR_setgroups, sys_setgroups16), // 81 +-//ZZ // PLAX_(__NR_select, old_select), // 82 +-//ZZ GENX_(__NR_symlink, sys_symlink), // 83 +-//ZZ //zz // (__NR_oldlstat, sys_lstat), // 84 -- obsolete +-//ZZ //zz +-//ZZ GENX_(__NR_readlink, sys_readlink), // 85 +-//ZZ //zz // (__NR_uselib, sys_uselib), // 86 */Linux +-//ZZ //zz // (__NR_swapon, sys_swapon), // 87 */Linux +-//ZZ //zz // (__NR_reboot, sys_reboot), // 88 */Linux +-//ZZ //zz // (__NR_readdir, old_readdir), // 89 -- superseded +-//ZZ //zz +-//ZZ // _____(__NR_mmap, old_mmap), // 90 +-//ZZ GENXY(__NR_munmap, sys_munmap), // 91 +-//ZZ GENX_(__NR_truncate, sys_truncate), // 92 +-//ZZ GENX_(__NR_ftruncate, sys_ftruncate), // 93 +-//ZZ +-//ZZ LINX_(__NR_fchown, sys_fchown16), // 95 +-//ZZ // GENX_(__NR_profil, sys_ni_syscall), // 98 +-//ZZ GENXY(__NR_statfs, sys_statfs), // 99 +-//ZZ +-//ZZ GENXY(__NR_fstatfs, sys_fstatfs), // 100 +-//ZZ // LINX_(__NR_ioperm, sys_ioperm), // 101 +-//ZZ LINXY(__NR_socketcall, sys_socketcall), // 102 +-//ZZ +-//ZZ GENXY(__NR_stat, sys_newstat), // 106 +-//ZZ GENXY(__NR_lstat, sys_newlstat), // 107 +-//ZZ GENXY(__NR_fstat, sys_newfstat), // 108 +-//ZZ //zz // (__NR_olduname, sys_uname), // 109 -- obsolete +-//ZZ //zz +-//ZZ // GENX_(__NR_iopl, sys_iopl), // 110 +-//ZZ // GENX_(__NR_idle, sys_ni_syscall), // 112 +-//ZZ // PLAXY(__NR_vm86old, sys_vm86old), // 113 __NR_syscall... weird +-//ZZ //zz +-//ZZ //zz // (__NR_swapoff, sys_swapoff), // 115 */Linux +-//ZZ // _____(__NR_ipc, sys_ipc), // 117 +-//ZZ GENX_(__NR_fsync, sys_fsync), // 118 +-//ZZ PLAX_(__NR_sigreturn, sys_sigreturn), // 119 ?/Linux +-//ZZ +-//ZZ //zz // (__NR_setdomainname, sys_setdomainname), // 121 */*(?) +-//ZZ // PLAX_(__NR_modify_ldt, sys_modify_ldt), // 123 +-//ZZ //zz +-//ZZ LINXY(__NR_sigprocmask, sys_sigprocmask), // 126 +-//ZZ //zz // Nb: create_module() was removed 2.4-->2.6 +-//ZZ // GENX_(__NR_create_module, sys_ni_syscall), // 127 +-//ZZ LINX_(__NR_delete_module, sys_delete_module), // 129 +-//ZZ //zz +-//ZZ //zz // Nb: get_kernel_syms() was removed 2.4-->2.6 +-//ZZ // GENX_(__NR_get_kernel_syms, sys_ni_syscall), // 130 +-//ZZ GENX_(__NR_getpgid, sys_getpgid), // 132 +-//ZZ //zz // (__NR_bdflush, sys_bdflush), // 134 */Linux +-//ZZ //zz +-//ZZ //zz // (__NR_sysfs, sys_sysfs), // 135 SVr4 +-//ZZ // GENX_(__NR_afs_syscall, sys_ni_syscall), // 137 +-//ZZ +-//ZZ LINXY(__NR__llseek, sys_llseek), // 140 +-//ZZ GENXY(__NR_getdents, sys_getdents), // 141 +-//ZZ GENX_(__NR__newselect, sys_select), // 142 +-//ZZ +-//ZZ LINXY(__NR__sysctl, sys_sysctl), // 149 +-//ZZ +-//ZZ //zz //LINX?(__NR_sched_rr_get_interval, sys_sched_rr_get_interval), // 161 */* +-//ZZ LINX_(__NR_setresuid, sys_setresuid16), // 164 +-//ZZ +-//ZZ LINXY(__NR_getresuid, sys_getresuid16), // 165 +-//ZZ // PLAXY(__NR_vm86, sys_vm86), // 166 x86/Linux-only +-//ZZ // GENX_(__NR_query_module, sys_ni_syscall), // 167 +-//ZZ GENXY(__NR_poll, sys_poll), // 168 +-//ZZ //zz // (__NR_nfsservctl, sys_nfsservctl), // 169 */Linux +-//ZZ //zz +-//ZZ LINX_(__NR_setresgid, sys_setresgid16), // 170 +-//ZZ LINXY(__NR_getresgid, sys_getresgid16), // 171 +-//ZZ LINXY(__NR_prctl, sys_prctl), // 172 +-//ZZ LINXY(__NR_rt_sigaction, sys_rt_sigaction), // 174 +-//ZZ +-//ZZ LINXY(__NR_rt_sigtimedwait, sys_rt_sigtimedwait),// 177 +-//ZZ +-//ZZ LINX_(__NR_chown, sys_chown16), // 182 +-//ZZ +-//ZZ LINXY(__NR_sendfile, sys_sendfile), // 187 +-//ZZ // GENXY(__NR_getpmsg, sys_getpmsg), // 188 +-//ZZ // GENX_(__NR_putpmsg, sys_putpmsg), // 189 +-//ZZ +-//ZZ // Nb: we treat vfork as fork +-//ZZ GENX_(__NR_vfork, sys_fork), // 190 +-//ZZ GENXY(__NR_ugetrlimit, sys_getrlimit), // 191 +-//ZZ GENX_(__NR_truncate64, sys_truncate64), // 193 +-//ZZ GENX_(__NR_ftruncate64, sys_ftruncate64), // 194 +-//ZZ +-//ZZ PLAXY(__NR_stat64, sys_stat64), // 195 +-//ZZ PLAXY(__NR_lstat64, sys_lstat64), // 196 +-//ZZ PLAXY(__NR_fstat64, sys_fstat64), // 197 +-//ZZ GENX_(__NR_lchown32, sys_lchown), // 198 +-//ZZ GENX_(__NR_getuid32, sys_getuid), // 199 +-//ZZ +-//ZZ GENX_(__NR_getgid32, sys_getgid), // 200 +-//ZZ GENX_(__NR_geteuid32, sys_geteuid), // 201 +-//ZZ GENX_(__NR_getegid32, sys_getegid), // 202 +-//ZZ GENX_(__NR_setreuid32, sys_setreuid), // 203 +-//ZZ GENX_(__NR_setregid32, sys_setregid), // 204 +-//ZZ +-//ZZ LINX_(__NR_setresuid32, sys_setresuid), // 208 +-//ZZ LINXY(__NR_getresuid32, sys_getresuid), // 209 +-//ZZ +-//ZZ LINX_(__NR_setresgid32, sys_setresgid), // 210 +-//ZZ LINXY(__NR_getresgid32, sys_getresgid), // 211 +-//ZZ GENX_(__NR_chown32, sys_chown), // 212 +-//ZZ GENX_(__NR_setuid32, sys_setuid), // 213 +-//ZZ GENX_(__NR_setgid32, sys_setgid), // 214 +-//ZZ +-//ZZ LINX_(__NR_setfsuid32, sys_setfsuid), // 215 +-//ZZ LINX_(__NR_setfsgid32, sys_setfsgid), // 216 +-//ZZ //zz // (__NR_pivot_root, sys_pivot_root), // 217 */Linux +-//ZZ +-//ZZ LINXY(__NR_fcntl64, sys_fcntl64), // 221 +-//ZZ // GENX_(222, sys_ni_syscall), // 222 +-//ZZ // PLAXY(223, sys_syscall223), // 223 // sys_bproc? +-//ZZ +-//ZZ LINXY(__NR_tkill, sys_tkill), // 238 */Linux +-//ZZ +-//ZZ LINXY(__NR_futex, sys_futex), // 240 +-//ZZ LINXY(__NR_sched_getaffinity, sys_sched_getaffinity), // 242 +-//ZZ // PLAX_(__NR_set_thread_area, sys_set_thread_area), // 243 +-//ZZ // PLAX_(__NR_get_thread_area, sys_get_thread_area), // 244 +-//ZZ +-//ZZ // LINX_(__NR_fadvise64, sys_fadvise64), // 250 */(Linux?) +-//ZZ GENX_(251, sys_ni_syscall), // 251 +-//ZZ LINXY(__NR_epoll_create, sys_epoll_create), // 254 +-//ZZ +-//ZZ LINX_(__NR_epoll_ctl, sys_epoll_ctl), // 255 +-//ZZ LINXY(__NR_epoll_wait, sys_epoll_wait), // 256 +-//ZZ //zz // (__NR_remap_file_pages, sys_remap_file_pages), // 257 */Linux +-//ZZ LINX_(__NR_set_tid_address, sys_set_tid_address), // 258 +-//ZZ +-//ZZ LINXY(__NR_clock_getres, sys_clock_getres), // (timer_create+7) +-//ZZ GENXY(__NR_statfs64, sys_statfs64), // 268 +-//ZZ GENXY(__NR_fstatfs64, sys_fstatfs64), // 269 +-//ZZ +-//ZZ GENX_(__NR_utimes, sys_utimes), // 271 +-//ZZ // LINX_(__NR_fadvise64_64, sys_fadvise64_64), // 272 */(Linux?) +-//ZZ GENX_(__NR_vserver, sys_ni_syscall), // 273 +-//ZZ LINX_(__NR_mbind, sys_mbind), // 274 ?/? +-//ZZ +-//ZZ LINXY(__NR_get_mempolicy, sys_get_mempolicy), // 275 ?/? +-//ZZ LINX_(__NR_set_mempolicy, sys_set_mempolicy), // 276 ?/? +-//ZZ +-//ZZ LINX_(__NR_send, sys_send), +-//ZZ LINXY(__NR_recv, sys_recv), +-//ZZ LINXY(__NR_recvfrom, sys_recvfrom), // 292 +-//ZZ LINX_(__NR_semget, sys_semget), // 299 +-//ZZ LINXY(__NR_semctl, sys_semctl), // 300 +-//ZZ +-//ZZ LINX_(__NR_request_key, sys_request_key), // 287 +-//ZZ LINX_(__NR_inotify_init, sys_inotify_init), // 291 +-//ZZ // LINX_(__NR_migrate_pages, sys_migrate_pages), // 294 +-//ZZ +-//ZZ LINX_(__NR_futimesat, sys_futimesat), // 326 on arm +-//ZZ +-//ZZ PLAXY(__NR_fstatat64, sys_fstatat64), // 300 +-//ZZ LINX_(__NR_renameat, sys_renameat), // 302 +-//ZZ LINX_(__NR_symlinkat, sys_symlinkat), // 304 +-//ZZ +-//ZZ LINX_(__NR_shmget, sys_shmget), //307 +-//ZZ // LINX_(__NR_pselect6, sys_pselect6), // +-//ZZ +-//ZZ // LINX_(__NR_unshare, sys_unshare), // 310 +-//ZZ LINX_(__NR_set_robust_list, sys_set_robust_list), // 311 +-//ZZ LINXY(__NR_get_robust_list, sys_get_robust_list), // 312 +-//ZZ // LINX_(__NR_sync_file_range, sys_sync_file_range), // 314 +-//ZZ +-//ZZ LINXY(__NR_move_pages, sys_move_pages), // 317 +-//ZZ // LINX_(__NR_getcpu, sys_ni_syscall), // 318 +-//ZZ +-//ZZ LINXY(__NR_signalfd, sys_signalfd), // 321 +-//ZZ LINXY(__NR_eventfd, sys_eventfd), // 323 +-//ZZ +-//ZZ +-//ZZ /////////////// +-//ZZ +-//ZZ // JRS 2010-Jan-03: I believe that all the numbers listed +-//ZZ // in comments in the table prior to this point (eg "// 326", +-//ZZ // etc) are bogus since it looks to me like they are copied +-//ZZ // verbatim from syswrap-x86-linux.c and they certainly do not +-//ZZ // correspond to what's in include/vki/vki-scnums-arm-linux.h. +-//ZZ // From here onwards, please ensure the numbers are correct. +-//ZZ +-//ZZ +-//ZZ LINXY(__NR_epoll_pwait, sys_epoll_pwait), // 346 +-//ZZ +-//ZZ +-//ZZ LINXY(__NR_eventfd2, sys_eventfd2), // 356 +-//ZZ LINXY(__NR_epoll_create1, sys_epoll_create1), // 357 +-//ZZ LINXY(__NR_rt_tgsigqueueinfo, sys_rt_tgsigqueueinfo),// 363 +-//ZZ +-//ZZ LINXY(__NR_clock_adjtime, sys_clock_adjtime) // 372 ++ // (__NR_bpf, sys_ni_syscall) // 280 ++ // (__NR_execveat, sys_ni_syscall), // 281 ++ // (__NR_userfaultfd, sys_ni_syscall), // 282 ++ // (__NR_membarrier, sys_ni_syscall), // 283 ++ // (__NR_mlock2, sys_ni_syscall), // 284 ++ // (__NR_copy_file_range, sys_ni_syscall), // 285 ++ // (__NR_preadv2, sys_ni_syscall), // 286 ++ // (__NR_pwritev2, sys_ni_syscall), // 287 ++ // (__NR_pkey_mprotect, sys_ni_syscall), // 288 ++ // (__NR_pkey_alloc, sys_ni_syscall), // 289 ++ // (__NR_pkey_free, sys_ni_syscall), // 290 + }; + + diff --git a/SOURCES/valgrind-3.12.0-arm64-hint.patch b/SOURCES/valgrind-3.12.0-arm64-hint.patch new file mode 100644 index 0000000..561444f --- /dev/null +++ b/SOURCES/valgrind-3.12.0-arm64-hint.patch @@ -0,0 +1,33 @@ +commit cd685e0ff55060e9ec341c86b23c6dbb2d3127f4 +Author: tom +Date: Sat Feb 11 10:44:29 2017 +0000 + + Handle unknown HINT instructions on aarch64 by ignoring them. BZ#376279. + + + git-svn-id: svn://svn.valgrind.org/vex/trunk@3302 8f6e269a-dfd6-0310-a8e1-e2731360e62c + +diff --git a/VEX/priv/guest_arm64_toIR.c b/VEX/priv/guest_arm64_toIR.c +index e527447..484a26e 100644 +--- a/VEX/priv/guest_arm64_toIR.c ++++ b/VEX/priv/guest_arm64_toIR.c +@@ -7022,6 +7022,19 @@ Bool dis_ARM64_branch_etc(/*MB_OUT*/DisResult* dres, UInt insn, + return True; + } + ++ /* -------------------- HINT ------------------- */ ++ /* 31 23 15 11 4 3 ++ 1101 0101 0000 0011 0010 imm7 1 1111 ++ */ ++ if (INSN(31,24) == BITS8(1,1,0,1,0,1,0,1) ++ && INSN(23,16) == BITS8(0,0,0,0,0,0,1,1) ++ && INSN(15,12) == BITS4(0,0,1,0) ++ && INSN(4,0) == BITS5(1,1,1,1,1)) { ++ UInt imm7 = INSN(11,5); ++ DIP("hint #%u\n", imm7); ++ return True; ++ } ++ + /* ------------------- CLREX ------------------ */ + /* 31 23 15 11 7 + 1101 0101 0000 0011 0011 m 0101 1111 CLREX CRm diff --git a/SOURCES/valgrind-3.12.0-arm64-ppc64-prlimit64.patch b/SOURCES/valgrind-3.12.0-arm64-ppc64-prlimit64.patch new file mode 100644 index 0000000..4b4e9ac --- /dev/null +++ b/SOURCES/valgrind-3.12.0-arm64-ppc64-prlimit64.patch @@ -0,0 +1,24 @@ +diff --git a/coregrind/m_syswrap/syswrap-arm64-linux.c b/coregrind/m_syswrap/syswrap-arm64-linux.c +index 1be6629..f8b5b7c 100644 +--- a/coregrind/m_syswrap/syswrap-arm64-linux.c ++++ b/coregrind/m_syswrap/syswrap-arm64-linux.c +@@ -868,6 +868,7 @@ static SyscallTableEntry syscall_main_table[] = { + LINXY(__NR_recvmmsg, sys_recvmmsg), // 243 + + GENXY(__NR_wait4, sys_wait4), // 260 ++ LINXY(__NR_prlimit64, sys_prlimit64), // 261 + + LINXY(__NR_name_to_handle_at, sys_name_to_handle_at), // 264 + LINXY(__NR_open_by_handle_at, sys_open_by_handle_at), // 265 +diff --git a/coregrind/m_syswrap/syswrap-ppc64-linux.c b/coregrind/m_syswrap/syswrap-ppc64-linux.c +index f90140d..ce5cbbb 100644 +--- a/coregrind/m_syswrap/syswrap-ppc64-linux.c ++++ b/coregrind/m_syswrap/syswrap-ppc64-linux.c +@@ -905,6 +905,7 @@ static SyscallTableEntry syscall_table[] = { + LINX_(__NR_pwritev, sys_pwritev), // 321 + LINXY(__NR_rt_tgsigqueueinfo, sys_rt_tgsigqueueinfo),// 322 + ++ LINXY(__NR_prlimit64, sys_prlimit64), // 325 + LINXY(__NR_socket, sys_socket), // 326 + LINX_(__NR_bind, sys_bind), // 327 + LINX_(__NR_connect, sys_connect), // 328 diff --git a/SOURCES/valgrind-3.12.0-cd-dvd-ioctl.patch b/SOURCES/valgrind-3.12.0-cd-dvd-ioctl.patch new file mode 100644 index 0000000..54edf91 --- /dev/null +++ b/SOURCES/valgrind-3.12.0-cd-dvd-ioctl.patch @@ -0,0 +1,97 @@ +commit 9e00f6ed1e84a3b251aded21ef98ed9e4adc6936 +Author: sewardj +Date: Wed Nov 23 13:15:22 2016 +0000 + + Bug 352767 - Wine/valgrind: Warning: noted but unhandled ioctl 0x5307 + with no size/direction hints. (CDROMSTOP). + + Patch from Austin English (austinenglish@gmail.com). + + + git-svn-id: svn://svn.valgrind.org/valgrind/trunk@16152 a5019735-40e9-0310-863c-91ae7b9d1cf9 + +diff --git a/coregrind/m_syswrap/syswrap-linux.c b/coregrind/m_syswrap/syswrap-linux.c +index fda8dd1..5e540e8 100644 +--- a/coregrind/m_syswrap/syswrap-linux.c ++++ b/coregrind/m_syswrap/syswrap-linux.c +@@ -5672,6 +5672,7 @@ PRE(sys_ioctl) + + /* CDROM stuff. */ + case VKI_CDROM_DISC_STATUS: ++ case VKI_CDROMSTOP: + + /* KVM ioctls that dont check for a numeric value as parameter */ + case VKI_KVM_S390_ENABLE_SIE: +@@ -9188,6 +9189,7 @@ POST(sys_ioctl) + + /* CD ROM stuff (??) */ + case VKI_CDROM_DISC_STATUS: ++ case VKI_CDROMSTOP: + break; + case VKI_CDROMSUBCHNL: + POST_MEM_WRITE(ARG3, sizeof(struct vki_cdrom_subchnl)); +diff --git a/include/vki/vki-linux.h b/include/vki/vki-linux.h +index bdb8f33..7f6a117 100644 +--- a/include/vki/vki-linux.h ++++ b/include/vki/vki-linux.h +@@ -1865,6 +1865,7 @@ struct vki_scsi_idlun { + (struct cdrom_tochdr) */ + #define VKI_CDROMREADTOCENTRY 0x5306 /* Read TOC entry + (struct cdrom_tocentry) */ ++#define VKI_CDROMSTOP 0x5307 /* Stop the cdrom drive */ + #define VKI_CDROMSUBCHNL 0x530b /* Read subchannel data + (struct cdrom_subchnl) */ + #define VKI_CDROMREADMODE2 0x530c /* Read CDROM mode 2 data (2336 Bytes) + +commit 88c8d843f64fcb56a0ddd492fb560e6594c3f2e6 +Author: sewardj +Date: Wed Nov 23 13:26:23 2016 +0000 + + Bug 348616 - Wine/valgrind: Warning: noted but unhandled ioctl 0x5390 + with no size/direction hints. (DVD_READ_STRUCT) + + Patch from Austin English (austinenglish@gmail.com). + + + + git-svn-id: svn://svn.valgrind.org/valgrind/trunk@16153 a5019735-40e9-0310-863c-91ae7b9d1cf9 + +diff --git a/coregrind/m_syswrap/syswrap-linux.c b/coregrind/m_syswrap/syswrap-linux.c +index 5e540e8..af10b92 100644 +--- a/coregrind/m_syswrap/syswrap-linux.c ++++ b/coregrind/m_syswrap/syswrap-linux.c +@@ -5674,7 +5674,10 @@ PRE(sys_ioctl) + case VKI_CDROM_DISC_STATUS: + case VKI_CDROMSTOP: + +- /* KVM ioctls that dont check for a numeric value as parameter */ ++ /* DVD stuff */ ++ case VKI_DVD_READ_STRUCT: ++ ++ /* KVM ioctls that don't check for a numeric value as parameter */ + case VKI_KVM_S390_ENABLE_SIE: + case VKI_KVM_CREATE_IRQCHIP: + case VKI_KVM_S390_INITIAL_RESET: +@@ -9226,6 +9229,10 @@ POST(sys_ioctl) + case VKI_CDROM_GET_CAPABILITY: /* 0x5331 */ + break; + ++ /* DVD stuff */ ++ case VKI_DVD_READ_STRUCT: ++ break; ++ + case VKI_FIGETBSZ: + POST_MEM_WRITE(ARG3, sizeof(unsigned long)); + break; +diff --git a/include/vki/vki-linux.h b/include/vki/vki-linux.h +index 7f6a117..b64b521 100644 +--- a/include/vki/vki-linux.h ++++ b/include/vki/vki-linux.h +@@ -1885,6 +1885,7 @@ struct vki_scsi_idlun { + #define VKI_CDROM_DISC_STATUS 0x5327 /* get CD type information */ + #define VKI_CDROM_GET_CAPABILITY 0x5331 /* get capabilities */ + ++#define VKI_DVD_READ_STRUCT 0x5390 /* read structure */ + #define VKI_CDROM_SEND_PACKET 0x5393 /* send a packet to the drive */ + + struct vki_cdrom_msf0 diff --git a/SOURCES/valgrind-3.12.0-clone-spawn.patch b/SOURCES/valgrind-3.12.0-clone-spawn.patch new file mode 100644 index 0000000..f30e7aa --- /dev/null +++ b/SOURCES/valgrind-3.12.0-clone-spawn.patch @@ -0,0 +1,3325 @@ +commit e31d72da6cb415d0856ad53dac78e307548cd831 +Author: philippe +Date: Sun Dec 11 21:39:23 2016 +0000 + + Fix 342040 Valgrind mishandles clone with CLONE_VFORK | CLONE_VM that clones to a different stack + Fix 373192 Calling posix_spawn in glibc 2.24 completely broken + + Functionally, this patch just does the following 2 changes to the + fork clone handling: + * It does not mask anymore CLONE_VFORK : + The only effect of this flag is to suspend the parent, waiting for + the child to either exit or execve. + If some applications depends on this synchronisation, better keep it, + as it will not harm to suspend the parent valgrind waiting for the + child valgrind to exit or execve. + * In case the guest calls the clone syscall providing a non zero client stack, + set the child guest SP after the syscall, before executing guest instructions. + Not setting the guest stack ptr was the source of the problem reported + in the bugs. + + This also adds a test case none/tests/linux/clonev. + Before this patch, test gives a SEGV, which is fixed by the patch. + + The patch is however a lot bigger : this fix was touching some (mostly + identical/duplicated) code in all the linux platforms. + So, the clone/fork code has been factorised as much as possible. + This removes about 1700 lines of code. + + This has been tested on: + * amd64 + * x86 + * ppc64 be and le + * ppc32 + * arm64 + + This has been compiled on but *not really tested* on: + * mips64 (not too clear how to properly build and run valgrind on gcc22) + + It has *not* been compiled and *not* tested on: + * arm + * mips32 + * tilegx + * darwin (normally, no impact) + * solaris (normally, no impact) + + The changes are relatively mechanical, so it is not impossible that + it will compile and work out of the box on these platforms. + Otherwise, questions welcome. + + A few points of interest: + * Some platforms did have a typedef void vki_modify_ldt_t, + and some platforms had no definition for this type at all. + To make it easier to factorise, for such platforms, the following has + been used: + typedef char vki_modify_ldt_t; + When the sizeof vki_modify_ldt_t is > 1, then the arg syscall is checked. + This is somewhat a hack, but was simplifying the factorisation. + + * for mips32/mips64 and tilegx, there is a strange unconditional assignment + of 0 to a register (guest_r2 on mips, guest_r0 on tilegx). + Unclear what this is, in particular because this is assigned whatever + the result of the syscall (success or not). + + + + + git-svn-id: svn://svn.valgrind.org/valgrind/trunk@16186 a5019735-40e9-0310-863c-91ae7b9d1cf9 + +diff --git a/coregrind/m_syswrap/priv_syswrap-linux.h b/coregrind/m_syswrap/priv_syswrap-linux.h +index 38fcd7b..06ea7cd 100644 +--- a/coregrind/m_syswrap/priv_syswrap-linux.h ++++ b/coregrind/m_syswrap/priv_syswrap-linux.h +@@ -39,12 +39,10 @@ extern Word ML_(start_thread_NORETURN) ( void* arg ); + extern Addr ML_(allocstack) ( ThreadId tid ); + extern void ML_(call_on_new_stack_0_1) ( Addr stack, Addr retaddr, + void (*f)(Word), Word arg1 ); +-extern SysRes ML_(do_fork_clone) ( ThreadId tid, UInt flags, +- Int* parent_tidptr, Int* child_tidptr ); +- + + // Linux-specific (but non-arch-specific) syscalls + ++DECL_TEMPLATE(linux, sys_clone) + DECL_TEMPLATE(linux, sys_mount); + DECL_TEMPLATE(linux, sys_oldumount); + DECL_TEMPLATE(linux, sys_umount); +@@ -61,6 +59,10 @@ DECL_TEMPLATE(linux, sys_vmsplice); + DECL_TEMPLATE(linux, sys_readahead); + DECL_TEMPLATE(linux, sys_move_pages); + ++// clone is similar enough between linux variants to have a generic ++// version, but which will call an extern defined in syswrap--linux.c ++DECL_TEMPLATE(linux, sys_clone); ++ + // POSIX, but various sub-cases differ between Linux and Darwin. + DECL_TEMPLATE(linux, sys_fcntl); + DECL_TEMPLATE(linux, sys_fcntl64); +@@ -368,7 +370,83 @@ DECL_TEMPLATE(linux, sys_getpeername); + DECL_TEMPLATE(linux, sys_socketpair); + DECL_TEMPLATE(linux, sys_kcmp); + +-#endif // __PRIV_SYSWRAP_LINUX_H ++// Some arch specific functions called from syswrap-linux.c ++extern Int do_syscall_clone_x86_linux ( Word (*fn)(void *), ++ void* stack, ++ Int flags, ++ void* arg, ++ Int* child_tid, ++ Int* parent_tid, ++ void* tls_ptr); ++extern SysRes ML_(x86_sys_set_thread_area) ( ThreadId tid, ++ vki_modify_ldt_t* info ); ++extern void ML_(x86_setup_LDT_GDT) ( /*OUT*/ ThreadArchState *child, ++ /*IN*/ ThreadArchState *parent ); ++ ++extern Long do_syscall_clone_amd64_linux ( Word (*fn)(void *), ++ void* stack, ++ Long flags, ++ void* arg, ++ Int* child_tid, ++ Int* parent_tid, ++ void* tls_ptr); ++extern ULong do_syscall_clone_ppc32_linux ( Word (*fn)(void *), ++ void* stack, ++ Int flags, ++ void* arg, ++ Int* child_tid, ++ Int* parent_tid, ++ void* tls_ptr); ++extern ULong do_syscall_clone_ppc64_linux ( Word (*fn)(void *), ++ void* stack, ++ Int flags, ++ void* arg, ++ Int* child_tid, ++ Int* parent_tid, ++ void* tls_ptr ); ++extern ULong do_syscall_clone_s390x_linux ( void *stack, ++ ULong flags, ++ Int *parent_tid, ++ Int *child_tid, ++ void* tls_ptr, ++ Word (*fn)(void *), ++ void *arg); ++extern Long do_syscall_clone_arm64_linux ( Word (*fn)(void *), ++ void* stack, ++ Long flags, ++ void* arg, ++ Int* child_tid, ++ Int* parent_tid, ++ void* tls_ptr ); ++extern ULong do_syscall_clone_arm_linux ( Word (*fn)(void *), ++ void* stack, ++ Int flags, ++ void* arg, ++ Int* child_tid, ++ Int* parent_tid, ++ void* tls_ptr ); ++extern ULong do_syscall_clone_mips64_linux ( Word (*fn) (void *), /* a0 - 4 */ ++ void* stack, /* a1 - 5 */ ++ Int flags, /* a2 - 6 */ ++ void* arg, /* a3 - 7 */ ++ Int* parent_tid, /* a4 - 8 */ ++ void* tls_ptr, /* a5 - 9 */ ++ Int* child_tid ); /* a6 - 10 */ ++extern UInt do_syscall_clone_mips_linux ( Word (*fn) (void *), //a0 0 32 ++ void* stack, //a1 4 36 ++ Int flags, //a2 8 40 ++ void* arg, //a3 12 44 ++ Int* child_tid, //stack 16 48 ++ Int* parent_tid, //stack 20 52 ++ void* tls_ptr); //stack 24 56 ++extern Long do_syscall_clone_tilegx_linux ( Word (*fn) (void *), //r0 ++ void* stack, //r1 ++ Long flags, //r2 ++ void* arg, //r3 ++ Long* child_tid, //r4 ++ Long* parent_tid, //r5 ++ void* tls_ptr ); //r6 ++ #endif // __PRIV_SYSWRAP_LINUX_H + + /*--------------------------------------------------------------------*/ + /*--- end ---*/ +diff --git a/coregrind/m_syswrap/syswrap-amd64-linux.c b/coregrind/m_syswrap/syswrap-amd64-linux.c +index 08e9a93..3fe9938 100644 +--- a/coregrind/m_syswrap/syswrap-amd64-linux.c ++++ b/coregrind/m_syswrap/syswrap-amd64-linux.c +@@ -130,14 +130,7 @@ asm( + #define __NR_CLONE VG_STRINGIFY(__NR_clone) + #define __NR_EXIT VG_STRINGIFY(__NR_exit) + +-extern +-Long do_syscall_clone_amd64_linux ( Word (*fn)(void *), +- void* stack, +- Long flags, +- void* arg, +- Long* child_tid, +- Long* parent_tid, +- vki_modify_ldt_t * ); ++// See priv_syswrap-linux.h for arg profile. + asm( + ".text\n" + ".globl do_syscall_clone_amd64_linux\n" +@@ -183,126 +176,6 @@ asm( + #undef __NR_EXIT + + +-// forward declaration +-static void setup_child ( ThreadArchState*, ThreadArchState* ); +- +-/* +- When a client clones, we need to keep track of the new thread. This means: +- 1. allocate a ThreadId+ThreadState+stack for the thread +- +- 2. initialize the thread's new VCPU state +- +- 3. create the thread using the same args as the client requested, +- but using the scheduler entrypoint for EIP, and a separate stack +- for ESP. +- */ +-static SysRes do_clone ( ThreadId ptid, +- ULong flags, Addr rsp, +- Long* parent_tidptr, +- Long* child_tidptr, +- Addr tlsaddr ) +-{ +- static const Bool debug = False; +- +- ThreadId ctid = VG_(alloc_ThreadState)(); +- ThreadState* ptst = VG_(get_ThreadState)(ptid); +- ThreadState* ctst = VG_(get_ThreadState)(ctid); +- UWord* stack; +- SysRes res; +- Long rax; +- vki_sigset_t blockall, savedmask; +- +- VG_(sigfillset)(&blockall); +- +- vg_assert(VG_(is_running_thread)(ptid)); +- vg_assert(VG_(is_valid_tid)(ctid)); +- +- stack = (UWord*)ML_(allocstack)(ctid); +- if (stack == NULL) { +- res = VG_(mk_SysRes_Error)( VKI_ENOMEM ); +- goto out; +- } +- +- /* Copy register state +- +- Both parent and child return to the same place, and the code +- following the clone syscall works out which is which, so we +- don't need to worry about it. +- +- The parent gets the child's new tid returned from clone, but the +- child gets 0. +- +- If the clone call specifies a NULL rsp for the new thread, then +- it actually gets a copy of the parent's rsp. +- */ +- setup_child( &ctst->arch, &ptst->arch ); +- +- /* Make sys_clone appear to have returned Success(0) in the +- child. */ +- ctst->arch.vex.guest_RAX = 0; +- +- if (rsp != 0) +- ctst->arch.vex.guest_RSP = rsp; +- +- ctst->os_state.parent = ptid; +- +- /* inherit signal mask */ +- ctst->sig_mask = ptst->sig_mask; +- ctst->tmp_sig_mask = ptst->sig_mask; +- +- /* Start the child with its threadgroup being the same as the +- parent's. This is so that any exit_group calls that happen +- after the child is created but before it sets its +- os_state.threadgroup field for real (in thread_wrapper in +- syswrap-linux.c), really kill the new thread. a.k.a this avoids +- a race condition in which the thread is unkillable (via +- exit_group) because its threadgroup is not set. The race window +- is probably only a few hundred or a few thousand cycles long. +- See #226116. */ +- ctst->os_state.threadgroup = ptst->os_state.threadgroup; +- +- ML_(guess_and_register_stack) (rsp, ctst); +- +- /* Assume the clone will succeed, and tell any tool that wants to +- know that this thread has come into existence. If the clone +- fails, we'll send out a ll_exit notification for it at the out: +- label below, to clean up. */ +- vg_assert(VG_(owns_BigLock_LL)(ptid)); +- VG_TRACK ( pre_thread_ll_create, ptid, ctid ); +- +- if (flags & VKI_CLONE_SETTLS) { +- if (debug) +- VG_(printf)("clone child has SETTLS: tls at %#lx\n", tlsaddr); +- ctst->arch.vex.guest_FS_CONST = tlsaddr; +- } +- +- flags &= ~VKI_CLONE_SETTLS; +- +- /* start the thread with everything blocked */ +- VG_(sigprocmask)(VKI_SIG_SETMASK, &blockall, &savedmask); +- +- /* Create the new thread */ +- rax = do_syscall_clone_amd64_linux( +- ML_(start_thread_NORETURN), stack, flags, &VG_(threads)[ctid], +- child_tidptr, parent_tidptr, NULL +- ); +- res = VG_(mk_SysRes_amd64_linux)( rax ); +- +- VG_(sigprocmask)(VKI_SIG_SETMASK, &savedmask, NULL); +- +- out: +- if (sr_isError(res)) { +- /* clone failed */ +- VG_(cleanup_thread)(&ctst->arch); +- ctst->status = VgTs_Empty; +- /* oops. Better tell the tool the thread exited in a hurry :-) */ +- VG_TRACK( pre_thread_ll_exit, ctid ); +- } +- +- return res; +-} +- +- + /* --------------------------------------------------------------------- + More thread stuff + ------------------------------------------------------------------ */ +@@ -311,16 +184,6 @@ void VG_(cleanup_thread) ( ThreadArchState *arch ) + { + } + +-void setup_child ( /*OUT*/ ThreadArchState *child, +- /*IN*/ ThreadArchState *parent ) +-{ +- /* We inherit our parent's guest state. */ +- child->vex = parent->vex; +- child->vex_shadow1 = parent->vex_shadow1; +- child->vex_shadow2 = parent->vex_shadow2; +-} +- +- + /* --------------------------------------------------------------------- + PRE/POST wrappers for AMD64/Linux-specific syscalls + ------------------------------------------------------------------ */ +@@ -333,7 +196,6 @@ void setup_child ( /*OUT*/ ThreadArchState *child, + the right thing to do is to make these wrappers 'static' since they + aren't visible outside this file, but that requires even more macro + magic. */ +-DECL_TEMPLATE(amd64_linux, sys_clone); + DECL_TEMPLATE(amd64_linux, sys_rt_sigreturn); + DECL_TEMPLATE(amd64_linux, sys_arch_prctl); + DECL_TEMPLATE(amd64_linux, sys_ptrace); +@@ -342,108 +204,6 @@ DECL_TEMPLATE(amd64_linux, sys_mmap); + DECL_TEMPLATE(amd64_linux, sys_syscall184); + + +-PRE(sys_clone) +-{ +- ULong cloneflags; +- +- PRINT("sys_clone ( %lx, %#lx, %#lx, %#lx, %#lx )",ARG1,ARG2,ARG3,ARG4,ARG5); +- PRE_REG_READ2(int, "clone", +- unsigned long, flags, +- void *, child_stack); +- +- if (ARG1 & VKI_CLONE_PARENT_SETTID) { +- if (VG_(tdict).track_pre_reg_read) { +- PRA3("clone", int *, parent_tidptr); +- } +- PRE_MEM_WRITE("clone(parent_tidptr)", ARG3, sizeof(Int)); +- if (!VG_(am_is_valid_for_client)(ARG3, sizeof(Int), VKI_PROT_WRITE)) { +- SET_STATUS_Failure( VKI_EFAULT ); +- return; +- } +- } +- if (ARG1 & VKI_CLONE_SETTLS) { +- if (VG_(tdict).track_pre_reg_read) { +- PRA4("clone", vki_modify_ldt_t *, tlsinfo); +- } +- PRE_MEM_READ("clone(tlsinfo)", ARG4, sizeof(vki_modify_ldt_t)); +- if (!VG_(am_is_valid_for_client)(ARG4, sizeof(vki_modify_ldt_t), +- VKI_PROT_READ)) { +- SET_STATUS_Failure( VKI_EFAULT ); +- return; +- } +- } +- if (ARG1 & (VKI_CLONE_CHILD_SETTID | VKI_CLONE_CHILD_CLEARTID)) { +- if (VG_(tdict).track_pre_reg_read) { +- PRA5("clone", int *, child_tidptr); +- } +- PRE_MEM_WRITE("clone(child_tidptr)", ARG4, sizeof(Int)); +- if (!VG_(am_is_valid_for_client)(ARG4, sizeof(Int), VKI_PROT_WRITE)) { +- SET_STATUS_Failure( VKI_EFAULT ); +- return; +- } +- } +- +- cloneflags = ARG1; +- +- if (!ML_(client_signal_OK)(ARG1 & VKI_CSIGNAL)) { +- SET_STATUS_Failure( VKI_EINVAL ); +- return; +- } +- +- /* Only look at the flags we really care about */ +- switch (cloneflags & (VKI_CLONE_VM | VKI_CLONE_FS +- | VKI_CLONE_FILES | VKI_CLONE_VFORK)) { +- case VKI_CLONE_VM | VKI_CLONE_FS | VKI_CLONE_FILES: +- /* thread creation */ +- SET_STATUS_from_SysRes( +- do_clone(tid, +- ARG1, /* flags */ +- (Addr)ARG2, /* child ESP */ +- (Long *)ARG3, /* parent_tidptr */ +- (Long *)ARG4, /* child_tidptr */ +- (Addr)ARG5)); /* set_tls */ +- break; +- +- case VKI_CLONE_VFORK | VKI_CLONE_VM: /* vfork */ +- /* FALLTHROUGH - assume vfork == fork */ +- cloneflags &= ~(VKI_CLONE_VFORK | VKI_CLONE_VM); +- +- case 0: /* plain fork */ +- SET_STATUS_from_SysRes( +- ML_(do_fork_clone)(tid, +- cloneflags, /* flags */ +- (Int *)ARG3, /* parent_tidptr */ +- (Int *)ARG4)); /* child_tidptr */ +- break; +- +- default: +- /* should we just ENOSYS? */ +- VG_(message)(Vg_UserMsg, +- "Unsupported clone() flags: 0x%lx\n", ARG1); +- VG_(message)(Vg_UserMsg, +- "\n"); +- VG_(message)(Vg_UserMsg, +- "The only supported clone() uses are:\n"); +- VG_(message)(Vg_UserMsg, +- " - via a threads library (LinuxThreads or NPTL)\n"); +- VG_(message)(Vg_UserMsg, +- " - via the implementation of fork or vfork\n"); +- VG_(unimplemented) +- ("Valgrind does not support general clone()."); +- } +- +- if (SUCCESS) { +- if (ARG1 & VKI_CLONE_PARENT_SETTID) +- POST_MEM_WRITE(ARG3, sizeof(Int)); +- if (ARG1 & (VKI_CLONE_CHILD_SETTID | VKI_CLONE_CHILD_CLEARTID)) +- POST_MEM_WRITE(ARG4, sizeof(Int)); +- +- /* Thread creation was successful; let the child have the chance +- to run */ +- *flags |= SfYieldAfter; +- } +-} +- + PRE(sys_rt_sigreturn) + { + /* This isn't really a syscall at all - it's a misuse of the +@@ -761,7 +521,7 @@ static SyscallTableEntry syscall_table[] = { + LINX_(__NR_setsockopt, sys_setsockopt), // 54 + + LINXY(__NR_getsockopt, sys_getsockopt), // 55 +- PLAX_(__NR_clone, sys_clone), // 56 ++ LINX_(__NR_clone, sys_clone), // 56 + GENX_(__NR_fork, sys_fork), // 57 + GENX_(__NR_vfork, sys_fork), // 58 treat as fork + GENX_(__NR_execve, sys_execve), // 59 +diff --git a/coregrind/m_syswrap/syswrap-arm-linux.c b/coregrind/m_syswrap/syswrap-arm-linux.c +index 3bbd109..b417428 100644 +--- a/coregrind/m_syswrap/syswrap-arm-linux.c ++++ b/coregrind/m_syswrap/syswrap-arm-linux.c +@@ -102,14 +102,7 @@ asm( + #define __NR_CLONE VG_STRINGIFY(__NR_clone) + #define __NR_EXIT VG_STRINGIFY(__NR_exit) + +-extern +-ULong do_syscall_clone_arm_linux ( Word (*fn)(void *), +- void* stack, +- Int flags, +- void* arg, +- Int* child_tid, +- Int* parent_tid, +- void* tls ); ++// See priv_syswrap-linux.h for arg profile. + asm( + ".text\n" + ".globl do_syscall_clone_arm_linux\n" +@@ -148,104 +141,8 @@ asm( + #undef __NR_EXIT + + // forward declarations +-static void setup_child ( ThreadArchState*, ThreadArchState* ); +-static void assign_guest_tls(ThreadId ctid, Addr tlsptr); + static SysRes sys_set_tls ( ThreadId tid, Addr tlsptr ); + +-/* +- When a client clones, we need to keep track of the new thread. This means: +- 1. allocate a ThreadId+ThreadState+stack for the thread +- +- 2. initialize the thread's new VCPU state +- +- 3. create the thread using the same args as the client requested, +- but using the scheduler entrypoint for IP, and a separate stack +- for SP. +- */ +-static SysRes do_clone ( ThreadId ptid, +- UInt flags, Addr sp, +- Int *parent_tidptr, +- Int *child_tidptr, +- Addr child_tls) +-{ +- ThreadId ctid = VG_(alloc_ThreadState)(); +- ThreadState* ptst = VG_(get_ThreadState)(ptid); +- ThreadState* ctst = VG_(get_ThreadState)(ctid); +- UInt r0; +- UWord *stack; +- SysRes res; +- vki_sigset_t blockall, savedmask; +- +- VG_(sigfillset)(&blockall); +- +- vg_assert(VG_(is_running_thread)(ptid)); +- vg_assert(VG_(is_valid_tid)(ctid)); +- +- stack = (UWord*)ML_(allocstack)(ctid); +- +- if(stack == NULL) { +- res = VG_(mk_SysRes_Error)( VKI_ENOMEM ); +- goto out; +- } +- +- setup_child( &ctst->arch, &ptst->arch ); +- +- ctst->arch.vex.guest_R0 = 0; +- if(sp != 0) +- ctst->arch.vex.guest_R13 = sp; +- +- ctst->os_state.parent = ptid; +- +- ctst->sig_mask = ptst->sig_mask; +- ctst->tmp_sig_mask = ptst->sig_mask; +- +- /* Start the child with its threadgroup being the same as the +- parent's. This is so that any exit_group calls that happen +- after the child is created but before it sets its +- os_state.threadgroup field for real (in thread_wrapper in +- syswrap-linux.c), really kill the new thread. a.k.a this avoids +- a race condition in which the thread is unkillable (via +- exit_group) because its threadgroup is not set. The race window +- is probably only a few hundred or a few thousand cycles long. +- See #226116. */ +- ctst->os_state.threadgroup = ptst->os_state.threadgroup; +- +- ML_(guess_and_register_stack) (sp, ctst); +- +- vg_assert(VG_(owns_BigLock_LL)(ptid)); +- VG_TRACK ( pre_thread_ll_create, ptid, ctid ); +- +- if (flags & VKI_CLONE_SETTLS) { +- /* Just assign the tls pointer in the guest TPIDRURO. */ +- assign_guest_tls(ctid, child_tls); +- } +- +- flags &= ~VKI_CLONE_SETTLS; +- +- VG_(sigprocmask)(VKI_SIG_SETMASK, &blockall, &savedmask); +- +- r0 = do_syscall_clone_arm_linux( +- ML_(start_thread_NORETURN), stack, flags, &VG_(threads)[ctid], +- child_tidptr, parent_tidptr, NULL +- ); +- //VG_(printf)("AFTER SYSCALL, %x and %x CHILD: %d PARENT: %d\n",child_tidptr, parent_tidptr,*child_tidptr,*parent_tidptr); +- +- res = VG_(mk_SysRes_arm_linux)( r0 ); +- +- VG_(sigprocmask)(VKI_SIG_SETMASK, &savedmask, NULL); +- +-out: +- if (sr_isError(res)) { +- VG_(cleanup_thread)(&ctst->arch); +- ctst->status = VgTs_Empty; +- VG_TRACK( pre_thread_ll_exit, ctid ); +- } +- +- return res; +-} +- +- +- + /* --------------------------------------------------------------------- + More thread stuff + ------------------------------------------------------------------ */ +@@ -256,26 +153,13 @@ void VG_(cleanup_thread) ( ThreadArchState* arch ) + { + } + +-void setup_child ( /*OUT*/ ThreadArchState *child, +- /*IN*/ ThreadArchState *parent ) +-{ +- child->vex = parent->vex; +- child->vex_shadow1 = parent->vex_shadow1; +- child->vex_shadow2 = parent->vex_shadow2; +-} +- +-static void assign_guest_tls(ThreadId tid, Addr tlsptr) +-{ +- VG_(threads)[tid].arch.vex.guest_TPIDRURO = tlsptr; +-} +- + /* Assigns tlsptr to the guest TPIDRURO. + If needed for the specific hardware, really executes + the set_tls syscall. + */ + static SysRes sys_set_tls ( ThreadId tid, Addr tlsptr ) + { +- assign_guest_tls(tid, tlsptr); ++ VG_(threads)[tid].arch.vex.guest_TPIDRURO = tlsptr; + + if (KernelVariantiS(KernelVariant_android_no_hw_tls, + VG_(clo_kernel_variant))) { +@@ -333,7 +217,6 @@ DECL_TEMPLATE(arm_linux, sys_stat64); + DECL_TEMPLATE(arm_linux, sys_lstat64); + DECL_TEMPLATE(arm_linux, sys_fstatat64); + DECL_TEMPLATE(arm_linux, sys_fstat64); +-DECL_TEMPLATE(arm_linux, sys_clone); + DECL_TEMPLATE(arm_linux, sys_sigreturn); + DECL_TEMPLATE(arm_linux, sys_rt_sigreturn); + DECL_TEMPLATE(arm_linux, sys_sigsuspend); +@@ -424,100 +307,6 @@ POST(sys_fstat64) + POST_MEM_WRITE( ARG2, sizeof(struct vki_stat64) ); + } + +-PRE(sys_clone) +-{ +- UInt cloneflags; +- +- PRINT("sys_clone ( %lx, %#lx, %#lx, %#lx, %#lx )",ARG1,ARG2,ARG3,ARG4,ARG5); +- PRE_REG_READ5(int, "clone", +- unsigned long, flags, +- void *, child_stack, +- int *, parent_tidptr, +- void *, child_tls, +- int *, child_tidptr); +- +- if (ARG1 & VKI_CLONE_PARENT_SETTID) { +- PRE_MEM_WRITE("clone(parent_tidptr)", ARG3, sizeof(Int)); +- if (!VG_(am_is_valid_for_client)(ARG3, sizeof(Int), +- VKI_PROT_WRITE)) { +- SET_STATUS_Failure( VKI_EFAULT ); +- return; +- } +- } +- if (ARG1 & (VKI_CLONE_CHILD_SETTID | VKI_CLONE_CHILD_CLEARTID)) { +- PRE_MEM_WRITE("clone(child_tidptr)", ARG5, sizeof(Int)); +- if (!VG_(am_is_valid_for_client)(ARG5, sizeof(Int), +- VKI_PROT_WRITE)) { +- SET_STATUS_Failure( VKI_EFAULT ); +- return; +- } +- } +- if (ARG1 & VKI_CLONE_SETTLS) { +- PRE_MEM_READ("clone(tls_user_desc)", ARG4, sizeof(vki_modify_ldt_t)); +- if (!VG_(am_is_valid_for_client)(ARG4, sizeof(vki_modify_ldt_t), +- VKI_PROT_READ)) { +- SET_STATUS_Failure( VKI_EFAULT ); +- return; +- } +- } +- +- cloneflags = ARG1; +- +- if (!ML_(client_signal_OK)(ARG1 & VKI_CSIGNAL)) { +- SET_STATUS_Failure( VKI_EINVAL ); +- return; +- } +- +- /* Only look at the flags we really care about */ +- switch (cloneflags & (VKI_CLONE_VM | VKI_CLONE_FS +- | VKI_CLONE_FILES | VKI_CLONE_VFORK)) { +- case VKI_CLONE_VM | VKI_CLONE_FS | VKI_CLONE_FILES: +- /* thread creation */ +- SET_STATUS_from_SysRes( +- do_clone(tid, +- ARG1, /* flags */ +- (Addr)ARG2, /* child ESP */ +- (Int *)ARG3, /* parent_tidptr */ +- (Int *)ARG5, /* child_tidptr */ +- (Addr)ARG4)); /* set_tls */ +- break; +- +- case VKI_CLONE_VFORK | VKI_CLONE_VM: /* vfork */ +- /* FALLTHROUGH - assume vfork == fork */ +- cloneflags &= ~(VKI_CLONE_VFORK | VKI_CLONE_VM); +- +- case 0: /* plain fork */ +- SET_STATUS_from_SysRes( +- ML_(do_fork_clone)(tid, +- cloneflags, /* flags */ +- (Int *)ARG3, /* parent_tidptr */ +- (Int *)ARG5)); /* child_tidptr */ +- break; +- +- default: +- /* should we just ENOSYS? */ +- VG_(message)(Vg_UserMsg, "Unsupported clone() flags: 0x%lx\n", ARG1); +- VG_(message)(Vg_UserMsg, "\n"); +- VG_(message)(Vg_UserMsg, "The only supported clone() uses are:\n"); +- VG_(message)(Vg_UserMsg, " - via a threads library (LinuxThreads or NPTL)\n"); +- VG_(message)(Vg_UserMsg, " - via the implementation of fork or vfork\n"); +- VG_(message)(Vg_UserMsg, " - for the Quadrics Elan3 user-space driver\n"); +- VG_(unimplemented) +- ("Valgrind does not support general clone()."); +- } +- +- if (SUCCESS) { +- if (ARG1 & VKI_CLONE_PARENT_SETTID) +- POST_MEM_WRITE(ARG3, sizeof(Int)); +- if (ARG1 & (VKI_CLONE_CHILD_SETTID | VKI_CLONE_CHILD_CLEARTID)) +- POST_MEM_WRITE(ARG5, sizeof(Int)); +- +- /* Thread creation was successful; let the child have the chance +- to run */ +- *flags |= SfYieldAfter; +- } +-} +- + PRE(sys_sigreturn) + { + /* See comments on PRE(sys_rt_sigreturn) in syswrap-amd64-linux.c for +@@ -901,7 +690,7 @@ static SyscallTableEntry syscall_main_table[] = { + GENX_(__NR_fsync, sys_fsync), // 118 + PLAX_(__NR_sigreturn, sys_sigreturn), // 119 ?/Linux + +- PLAX_(__NR_clone, sys_clone), // 120 ++ LINX_(__NR_clone, sys_clone), // 120 + //zz // (__NR_setdomainname, sys_setdomainname), // 121 */*(?) + GENXY(__NR_uname, sys_newuname), // 122 + // PLAX_(__NR_modify_ldt, sys_modify_ldt), // 123 +diff --git a/coregrind/m_syswrap/syswrap-arm64-linux.c b/coregrind/m_syswrap/syswrap-arm64-linux.c +index 6b579e8..1be6629 100644 +--- a/coregrind/m_syswrap/syswrap-arm64-linux.c ++++ b/coregrind/m_syswrap/syswrap-arm64-linux.c +@@ -138,14 +138,7 @@ asm( + #define __NR_CLONE VG_STRINGIFY(__NR_clone) + #define __NR_EXIT VG_STRINGIFY(__NR_exit) + +-extern +-Long do_syscall_clone_arm64_linux ( Word (*fn)(void *), +- void* child_stack, +- Long flags, +- void* arg, +- Int* child_tid, +- Int* parent_tid, +- void* tls ); ++// See priv_syswrap-linux.h for arg profile. + asm( + ".text\n" + ".globl do_syscall_clone_arm64_linux\n" +@@ -196,121 +189,6 @@ static void setup_child ( ThreadArchState*, ThreadArchState* ); + static void assign_guest_tls(ThreadId ctid, Addr tlsptr); + //ZZ static SysRes sys_set_tls ( ThreadId tid, Addr tlsptr ); + +-/* +- When a client clones, we need to keep track of the new thread. This means: +- 1. allocate a ThreadId+ThreadState+stack for the thread +- +- 2. initialize the thread's new VCPU state +- +- 3. create the thread using the same args as the client requested, +- but using the scheduler entrypoint for IP, and a separate stack +- for SP. +- */ +-static SysRes do_clone ( ThreadId ptid, +- ULong flags, +- Addr child_xsp, +- Int* parent_tidptr, +- Int* child_tidptr, +- Addr child_tls ) +-{ +- ThreadId ctid = VG_(alloc_ThreadState)(); +- ThreadState* ptst = VG_(get_ThreadState)(ptid); +- ThreadState* ctst = VG_(get_ThreadState)(ctid); +- UWord* stack; +- SysRes res; +- ULong x0; +- vki_sigset_t blockall, savedmask; +- +- VG_(sigfillset)(&blockall); +- +- vg_assert(VG_(is_running_thread)(ptid)); +- vg_assert(VG_(is_valid_tid)(ctid)); +- +- stack = (UWord*)ML_(allocstack)(ctid); +- if (stack == NULL) { +- res = VG_(mk_SysRes_Error)( VKI_ENOMEM ); +- goto out; +- } +- +- /* Copy register state +- +- Both parent and child return to the same place, and the code +- following the clone syscall works out which is which, so we +- don't need to worry about it. +- +- The parent gets the child's new tid returned from clone, but the +- child gets 0. +- +- If the clone call specifies a NULL xsp for the new thread, then +- it actually gets a copy of the parent's xsp. +- */ +- setup_child( &ctst->arch, &ptst->arch ); +- +- /* Make sys_clone appear to have returned Success(0) in the +- child. */ +- ctst->arch.vex.guest_X0 = 0; +- +- if (child_xsp != 0) +- ctst->arch.vex.guest_XSP = child_xsp; +- +- ctst->os_state.parent = ptid; +- +- /* inherit signal mask */ +- ctst->sig_mask = ptst->sig_mask; +- ctst->tmp_sig_mask = ptst->sig_mask; +- +- /* Start the child with its threadgroup being the same as the +- parent's. This is so that any exit_group calls that happen +- after the child is created but before it sets its +- os_state.threadgroup field for real (in thread_wrapper in +- syswrap-linux.c), really kill the new thread. a.k.a this avoids +- a race condition in which the thread is unkillable (via +- exit_group) because its threadgroup is not set. The race window +- is probably only a few hundred or a few thousand cycles long. +- See #226116. */ +- ctst->os_state.threadgroup = ptst->os_state.threadgroup; +- +- ML_(guess_and_register_stack)(child_xsp, ctst); +- +- /* Assume the clone will succeed, and tell any tool that wants to +- know that this thread has come into existence. If the clone +- fails, we'll send out a ll_exit notification for it at the out: +- label below, to clean up. */ +- vg_assert(VG_(owns_BigLock_LL)(ptid)); +- VG_TRACK ( pre_thread_ll_create, ptid, ctid ); +- +- if (flags & VKI_CLONE_SETTLS) { +- /* Just assign the tls pointer in the guest TPIDR_EL0. */ +- assign_guest_tls(ctid, child_tls); +- } +- +- flags &= ~VKI_CLONE_SETTLS; +- +- /* start the thread with everything blocked */ +- VG_(sigprocmask)(VKI_SIG_SETMASK, &blockall, &savedmask); +- +- x0 = do_syscall_clone_arm64_linux( +- ML_(start_thread_NORETURN), stack, flags, &VG_(threads)[ctid], +- child_tidptr, parent_tidptr, NULL +- ); +- +- res = VG_(mk_SysRes_arm64_linux)( x0 ); +- +- VG_(sigprocmask)(VKI_SIG_SETMASK, &savedmask, NULL); +- +- out: +- if (sr_isError(res)) { +- /* clone failed */ +- VG_(cleanup_thread)(&ctst->arch); +- ctst->status = VgTs_Empty; +- /* oops. Better tell the tool the thread exited in a hurry :-) */ +- VG_TRACK( pre_thread_ll_exit, ctid ); +- } +- +- return res; +-} +- +- + /* --------------------------------------------------------------------- + More thread stuff + ------------------------------------------------------------------ */ +@@ -397,7 +275,6 @@ DECL_TEMPLATE(arm64_linux, sys_mmap); + //ZZ DECL_TEMPLATE(arm_linux, sys_lstat64); + //ZZ DECL_TEMPLATE(arm_linux, sys_fstatat64); + //ZZ DECL_TEMPLATE(arm_linux, sys_fstat64); +-DECL_TEMPLATE(arm64_linux, sys_clone); + //ZZ DECL_TEMPLATE(arm_linux, sys_sigreturn); + DECL_TEMPLATE(arm64_linux, sys_rt_sigreturn); + //ZZ DECL_TEMPLATE(arm_linux, sys_sigsuspend); +@@ -512,110 +389,6 @@ PRE(sys_mmap) + //ZZ POST_MEM_WRITE( ARG2, sizeof(struct vki_stat64) ); + //ZZ } + +-/* Aarch64 seems to use CONFIG_CLONE_BACKWARDS in the kernel. See: +- http://dev.gentoo.org/~vapier/aarch64/linux-3.12.6.config +- http://people.redhat.com/wcohen/aarch64/aarch64_config +- from linux-3.10.5/kernel/fork.c +- #ifdef CONFIG_CLONE_BACKWARDS +- SYSCALL_DEFINE5(clone, unsigned long, clone_flags, unsigned long, newsp, +- int __user *, parent_tidptr, +- int, tls_val, +- int __user *, child_tidptr) +-*/ +-PRE(sys_clone) +-{ +- UInt cloneflags; +- +- PRINT("sys_clone ( %lx, %#lx, %#lx, %#lx, %#lx )",ARG1,ARG2,ARG3,ARG4,ARG5); +- PRE_REG_READ5(int, "clone", +- unsigned long, flags, +- void *, child_stack, +- int *, parent_tidptr, +- void *, child_tls, +- int *, child_tidptr); +- +- if (ARG1 & VKI_CLONE_PARENT_SETTID) { +- PRE_MEM_WRITE("clone(parent_tidptr)", ARG3, sizeof(Int)); +- if (!VG_(am_is_valid_for_client)(ARG3, sizeof(Int), +- VKI_PROT_WRITE)) { +- SET_STATUS_Failure( VKI_EFAULT ); +- return; +- } +- } +-//ZZ if (ARG1 & VKI_CLONE_SETTLS) { +-//ZZ PRE_MEM_READ("clone(tls_user_desc)", ARG4, sizeof(vki_modify_ldt_t)); +-//ZZ if (!VG_(am_is_valid_for_client)(ARG4, sizeof(vki_modify_ldt_t), +-//ZZ VKI_PROT_READ)) { +-//ZZ SET_STATUS_Failure( VKI_EFAULT ); +-//ZZ return; +-//ZZ } +-//ZZ } +- if (ARG1 & (VKI_CLONE_CHILD_SETTID | VKI_CLONE_CHILD_CLEARTID)) { +- PRE_MEM_WRITE("clone(child_tidptr)", ARG5, sizeof(Int)); +- if (!VG_(am_is_valid_for_client)(ARG5, sizeof(Int), +- VKI_PROT_WRITE)) { +- SET_STATUS_Failure( VKI_EFAULT ); +- return; +- } +- } +- +- cloneflags = ARG1; +- +- if (!ML_(client_signal_OK)(ARG1 & VKI_CSIGNAL)) { +- SET_STATUS_Failure( VKI_EINVAL ); +- return; +- } +- +- /* Only look at the flags we really care about */ +- switch (cloneflags & (VKI_CLONE_VM | VKI_CLONE_FS +- | VKI_CLONE_FILES | VKI_CLONE_VFORK)) { +- case VKI_CLONE_VM | VKI_CLONE_FS | VKI_CLONE_FILES: +- /* thread creation */ +- SET_STATUS_from_SysRes( +- do_clone(tid, +- ARG1, /* flags */ +- (Addr)ARG2, /* child SP */ +- (Int*)ARG3, /* parent_tidptr */ +- (Int*)ARG5, /* child_tidptr */ +- (Addr)ARG4)); /* tls_val */ +- break; +- +- case VKI_CLONE_VFORK | VKI_CLONE_VM: /* vfork */ +- /* FALLTHROUGH - assume vfork == fork */ +- cloneflags &= ~(VKI_CLONE_VFORK | VKI_CLONE_VM); +- +- case 0: /* plain fork */ +- SET_STATUS_from_SysRes( +- ML_(do_fork_clone)(tid, +- cloneflags, /* flags */ +- (Int*)ARG3, /* parent_tidptr */ +- (Int*)ARG5)); /* child_tidptr */ +- break; +- +- default: +- /* should we just ENOSYS? */ +- VG_(message)(Vg_UserMsg, "Unsupported clone() flags: 0x%lx\n", ARG1); +- VG_(message)(Vg_UserMsg, "\n"); +- VG_(message)(Vg_UserMsg, "The only supported clone() uses are:\n"); +- VG_(message)(Vg_UserMsg, " - via a threads library (LinuxThreads or NPTL)\n"); +- VG_(message)(Vg_UserMsg, " - via the implementation of fork or vfork\n"); +- VG_(message)(Vg_UserMsg, " - for the Quadrics Elan3 user-space driver\n"); +- VG_(unimplemented) +- ("Valgrind does not support general clone()."); +- } +- +- if (SUCCESS) { +- if (ARG1 & VKI_CLONE_PARENT_SETTID) +- POST_MEM_WRITE(ARG3, sizeof(Int)); +- if (ARG1 & (VKI_CLONE_CHILD_SETTID | VKI_CLONE_CHILD_CLEARTID)) +- POST_MEM_WRITE(ARG5, sizeof(Int)); +- +- /* Thread creation was successful; let the child have the chance +- to run */ +- *flags |= SfYieldAfter; +- } +-} +- + //ZZ PRE(sys_sigreturn) + //ZZ { + //ZZ /* See comments on PRE(sys_rt_sigreturn) in syswrap-amd64-linux.c for +@@ -1072,7 +845,7 @@ static SyscallTableEntry syscall_main_table[] = { + LINX_(__NR_add_key, sys_add_key), // 217 + + LINXY(__NR_keyctl, sys_keyctl), // 219 +- PLAX_(__NR_clone, sys_clone), // 220 ++ LINX_(__NR_clone, sys_clone), // 220 + GENX_(__NR_execve, sys_execve), // 221 + PLAX_(__NR_mmap, sys_mmap), // 222 + PLAX_(__NR_fadvise64, sys_fadvise64), // 223 +diff --git a/coregrind/m_syswrap/syswrap-linux.c b/coregrind/m_syswrap/syswrap-linux.c +index b3ffdb1..aa00a5f 100644 +--- a/coregrind/m_syswrap/syswrap-linux.c ++++ b/coregrind/m_syswrap/syswrap-linux.c +@@ -93,9 +93,8 @@ static VgSchedReturnCode thread_wrapper(Word /*ThreadId*/ tidW) + VG_TRACK(pre_thread_first_insn, tid); + + tst->os_state.lwpid = VG_(gettid)(); +- /* Set the threadgroup for real. This overwrites the provisional +- value set in do_clone() syswrap-*-linux.c. See comments in +- do_clone for background, also #226116. */ ++ /* Set the threadgroup for real. This overwrites the provisional value set ++ in do_clone(). See comments in do_clone for background, also #226116. */ + tst->os_state.threadgroup = VG_(getpid)(); + + /* Thread created with all signals blocked; scheduler will set the +@@ -430,17 +429,327 @@ void VG_(main_thread_wrapper_NORETURN)(ThreadId tid) + vg_assert(0); + } + ++/* Clone a new thread. Note that in the clone syscalls, we hard-code ++ tlsaddr argument as NULL : the guest TLS is emulated via guest ++ registers, and Valgrind itself has no thread local storage. */ ++static SysRes clone_new_thread ( Word (*fn)(void *), ++ void* stack, ++ Word flags, ++ ThreadState* ctst, ++ Int* child_tidptr, ++ Int* parent_tidptr) ++{ ++ SysRes res; ++ /* Note that in all the below, we make sys_clone appear to have returned ++ Success(0) in the child, by assigning the relevant child guest ++ register(s) just before the clone syscall. */ ++#if defined(VGP_x86_linux) ++ Int eax; ++ ctst->arch.vex.guest_EAX = 0; ++ eax = do_syscall_clone_x86_linux ++ (ML_(start_thread_NORETURN), stack, flags, ctst, ++ child_tidptr, parent_tidptr, NULL); ++ res = VG_(mk_SysRes_x86_linux)( eax ); ++#elif defined(VGP_amd64_linux) ++ Long rax; ++ ctst->arch.vex.guest_RAX = 0; ++ rax = do_syscall_clone_amd64_linux ++ (ML_(start_thread_NORETURN), stack, flags, ctst, ++ child_tidptr, parent_tidptr, NULL); ++ res = VG_(mk_SysRes_amd64_linux)( rax ); ++#elif defined(VGP_ppc32_linux) ++ ULong word64; ++ UInt old_cr = LibVEX_GuestPPC32_get_CR( &ctst->arch.vex ); ++ /* %r3 = 0 */ ++ ctst->arch.vex.guest_GPR3 = 0; ++ /* %cr0.so = 0 */ ++ LibVEX_GuestPPC32_put_CR( old_cr & ~(1<<28), &ctst->arch.vex ); ++ word64 = do_syscall_clone_ppc32_linux ++ (ML_(start_thread_NORETURN), stack, flags, ctst, ++ child_tidptr, parent_tidptr, NULL); ++ /* High half word64 is syscall return value. Low half is ++ the entire CR, from which we need to extract CR0.SO. */ ++ /* VG_(printf)("word64 = 0x%llx\n", word64); */ ++ res = VG_(mk_SysRes_ppc32_linux)(/*val*/(UInt)(word64 >> 32), ++ /*errflag*/ (((UInt)word64) >> 28) & 1); ++#elif defined(VGP_ppc64be_linux) || defined(VGP_ppc64le_linux) ++ ULong word64; ++ UInt old_cr = LibVEX_GuestPPC64_get_CR( &ctst->arch.vex ); ++ /* %r3 = 0 */ ++ ctst->arch.vex.guest_GPR3 = 0; ++ /* %cr0.so = 0 */ ++ LibVEX_GuestPPC64_put_CR( old_cr & ~(1<<28), &ctst->arch.vex ); ++ word64 = do_syscall_clone_ppc64_linux ++ (ML_(start_thread_NORETURN), stack, flags, ctst, ++ child_tidptr, parent_tidptr, NULL); ++ /* Low half word64 is syscall return value. Hi half is ++ the entire CR, from which we need to extract CR0.SO. */ ++ /* VG_(printf)("word64 = 0x%llx\n", word64); */ ++ res = VG_(mk_SysRes_ppc64_linux) ++ (/*val*/(UInt)(word64 & 0xFFFFFFFFULL), ++ /*errflag*/ (UInt)((word64 >> (32+28)) & 1)); ++#elif defined(VGP_s390x_linux) ++ ULong r2; ++ ctst->arch.vex.guest_r2 = 0; ++ r2 = do_syscall_clone_s390x_linux ++ (stack, flags, parent_tidptr, child_tidptr, NULL, ++ ML_(start_thread_NORETURN), ctst); ++ res = VG_(mk_SysRes_s390x_linux)( r2 ); ++#elif defined(VGP_arm64_linux) ++ ULong x0; ++ ctst->arch.vex.guest_X0 = 0; ++ x0 = do_syscall_clone_arm64_linux ++ (ML_(start_thread_NORETURN), stack, flags, ctst, ++ child_tidptr, parent_tidptr, NULL); ++ res = VG_(mk_SysRes_arm64_linux)( x0 ); ++#elif defined(VGP_arm_linux) ++ UInt r0; ++ ctst->arch.vex.guest_R0 = 0; ++ r0 = do_syscall_clone_arm_linux ++ (ML_(start_thread_NORETURN), stack, flags, ctst, ++ child_tidptr, parent_tidptr, NULL); ++ res = VG_(mk_SysRes_arm_linux)( r0 ); ++#elif defined(VGP_mips64_linux) ++ UInt ret = 0; ++ ctst->arch.vex.guest_r2 = 0; ++ ctst->arch.vex.guest_r7 = 0; ++ ret = do_syscall_clone_mips64_linux ++ (ML_(start_thread_NORETURN), stack, flags, ctst, ++ parent_tidptr, NULL, child_tidptr); ++ res = VG_(mk_SysRes_mips64_linux)( /* val */ ret, 0, /* errflag */ 0); ++#elif defined(VGP_mips32_linux) ++ UInt ret = 0; ++ ctst->arch.vex.guest_r2 = 0; ++ ctst->arch.vex.guest_r7 = 0; ++ ret = do_syscall_clone_mips_linux ++ (ML_(start_thread_NORETURN), stack, flags, ctst, ++ child_tidptr, parent_tidptr, NULL); ++ /* High half word64 is syscall return value. Low half is ++ the entire CR, from which we need to extract CR0.SO. */ ++ res = VG_ (mk_SysRes_mips32_linux) (/*val */ ret, 0, /*errflag */ 0); ++#elif defined(VGP_tilegx_linux) ++ Long ret = 0; ++ ctst->arch.vex.guest_r0 = 0; ++ ctst->arch.vex.guest_r3 = 0; ++ ret = do_syscall_clone_tilegx_linux ++ (ML_ (start_thread_NORETURN), stack, flags, ctst, ++ child_tidptr, parent_tidptr, NULL); ++ /* High half word64 is syscall return value. */ ++ res = VG_(mk_SysRes_tilegx_linux) (/*val */ ret); ++#else ++# error Unknown platform ++#endif ++ return res; ++} ++ ++static void setup_child ( /*OUT*/ ThreadArchState *child, ++ /*IN*/ ThreadArchState *parent ) ++{ ++ /* We inherit our parent's guest state. */ ++ child->vex = parent->vex; ++ child->vex_shadow1 = parent->vex_shadow1; ++ child->vex_shadow2 = parent->vex_shadow2; + +-/* Do a clone which is really a fork() */ +-SysRes ML_(do_fork_clone) ( ThreadId tid, UInt flags, +- Int* parent_tidptr, Int* child_tidptr ) ++#if defined(VGP_x86_linux) ++ extern void ML_(x86_setup_LDT_GDT) ( /*OUT*/ ThreadArchState *child, ++ /*IN*/ ThreadArchState *parent ); ++ ML_(x86_setup_LDT_GDT)(child, parent); ++#endif ++} ++ ++static SysRes setup_child_tls (ThreadId ctid, Addr tlsaddr) ++{ ++ static const Bool debug = False; ++ ThreadState* ctst = VG_(get_ThreadState)(ctid); ++ // res is succesful by default, overriden if a real syscall is needed/done. ++ SysRes res = VG_(mk_SysRes_Success)(0); ++ ++ if (debug) ++ VG_(printf)("clone child has SETTLS: tls at %#lx\n", tlsaddr); ++ ++#if defined(VGP_x86_linux) ++ vki_modify_ldt_t* tlsinfo = (vki_modify_ldt_t*)tlsaddr; ++ if (debug) ++ VG_(printf)("clone child has SETTLS: tls info at %p: idx=%u " ++ "base=%#lx limit=%x; esp=%#x fs=%x gs=%x\n", ++ tlsinfo, tlsinfo->entry_number, ++ tlsinfo->base_addr, tlsinfo->limit, ++ ctst->arch.vex.guest_ESP, ++ ctst->arch.vex.guest_FS, ctst->arch.vex.guest_GS); ++ res = ML_(x86_sys_set_thread_area)(ctid, tlsinfo); ++#elif defined(VGP_amd64_linux) ++ ctst->arch.vex.guest_FS_CONST = tlsaddr; ++#elif defined(VGP_ppc32_linux) ++ ctst->arch.vex.guest_GPR2 = tlsaddr; ++#elif defined(VGP_ppc64be_linux) || defined(VGP_ppc64le_linux) ++ ctst->arch.vex.guest_GPR13 = tlsaddr; ++#elif defined(VGP_s390x_linux) ++ ctst->arch.vex.guest_a0 = (UInt) (tlsaddr >> 32); ++ ctst->arch.vex.guest_a1 = (UInt) tlsaddr; ++#elif defined(VGP_arm64_linux) ++ /* Just assign the tls pointer in the guest TPIDR_EL0. */ ++ ctst->arch.vex.guest_TPIDR_EL0 = tlsaddr; ++#elif defined(VGP_arm_linux) ++ /* Just assign the tls pointer in the guest TPIDRURO. */ ++ ctst->arch.vex.guest_TPIDRURO = tlsaddr; ++#elif defined(VGP_mips64_linux) ++ ctst->arch.vex.guest_ULR = tlsaddr; ++ ctst->arch.vex.guest_r27 = tlsaddr; ++#elif defined(VGP_mips32_linux) ++ ctst->arch.vex.guest_ULR = tlsaddr; ++ ctst->arch.vex.guest_r27 = tlsaddr; ++#elif defined(VGP_tilegx_linux) ++ ctst->arch.vex.guest_r53 = tlsaddr; ++#else ++# error Unknown platform ++#endif ++ return res; ++} ++ ++/* ++ When a client clones, we need to keep track of the new thread. This means: ++ 1. allocate a ThreadId+ThreadState+stack for the thread ++ ++ 2. initialize the thread's new VCPU state ++ ++ 3. create the thread using the same args as the client requested, ++ but using the scheduler entrypoint for EIP, and a separate stack ++ for ESP. ++ */ ++static SysRes do_clone ( ThreadId ptid, ++ UWord flags, Addr sp, ++ Int* parent_tidptr, ++ Int* child_tidptr, ++ Addr tlsaddr) ++{ ++ ThreadId ctid = VG_(alloc_ThreadState)(); ++ ThreadState* ptst = VG_(get_ThreadState)(ptid); ++ ThreadState* ctst = VG_(get_ThreadState)(ctid); ++ UWord* stack; ++ SysRes res; ++ vki_sigset_t blockall, savedmask; ++ ++ VG_(sigfillset)(&blockall); ++ ++ vg_assert(VG_(is_running_thread)(ptid)); ++ vg_assert(VG_(is_valid_tid)(ctid)); ++ ++ stack = (UWord*)ML_(allocstack)(ctid); ++ if (stack == NULL) { ++ res = VG_(mk_SysRes_Error)( VKI_ENOMEM ); ++ goto out; ++ } ++ ++ /* Copy register state ++ ++ Both parent and child return to the same place, and the code ++ following the clone syscall works out which is which, so we ++ don't need to worry about it. ++ ++ The parent gets the child's new tid returned from clone, but the ++ child gets 0. ++ ++ If the clone call specifies a NULL sp for the new thread, then ++ it actually gets a copy of the parent's sp. ++ */ ++ setup_child( &ctst->arch, &ptst->arch ); ++ ++ if (sp != 0) ++ VG_(set_SP)(ctid, sp); ++ ++ ctst->os_state.parent = ptid; ++ ++ /* inherit signal mask */ ++ ctst->sig_mask = ptst->sig_mask; ++ ctst->tmp_sig_mask = ptst->sig_mask; ++ ++ /* Start the child with its threadgroup being the same as the ++ parent's. This is so that any exit_group calls that happen ++ after the child is created but before it sets its ++ os_state.threadgroup field for real (in thread_wrapper in ++ syswrap-linux.c), really kill the new thread. a.k.a this avoids ++ a race condition in which the thread is unkillable (via ++ exit_group) because its threadgroup is not set. The race window ++ is probably only a few hundred or a few thousand cycles long. ++ See #226116. */ ++ ctst->os_state.threadgroup = ptst->os_state.threadgroup; ++ ++ ML_(guess_and_register_stack) (sp, ctst); ++ ++ /* Assume the clone will succeed, and tell any tool that wants to ++ know that this thread has come into existence. We cannot defer ++ it beyond this point because setup_tls, just below, ++ causes checks to assert by making references to the new ThreadId ++ if we don't state the new thread exists prior to that point. ++ If the clone fails, we'll send out a ll_exit notification for it ++ at the out: label below, to clean up. */ ++ vg_assert(VG_(owns_BigLock_LL)(ptid)); ++ VG_TRACK ( pre_thread_ll_create, ptid, ctid ); ++ ++ if (flags & VKI_CLONE_SETTLS) { ++ res = setup_child_tls(ctid, tlsaddr); ++ if (sr_isError(res)) ++ goto out; ++ } ++ flags &= ~VKI_CLONE_SETTLS; ++ ++ /* start the thread with everything blocked */ ++ VG_(sigprocmask)(VKI_SIG_SETMASK, &blockall, &savedmask); ++ ++ /* Create the new thread */ ++ res = clone_new_thread ( ML_(start_thread_NORETURN), stack, flags, ctst, ++ child_tidptr, parent_tidptr); ++ ++ VG_(sigprocmask)(VKI_SIG_SETMASK, &savedmask, NULL); ++ ++ out: ++ if (sr_isError(res)) { ++ /* clone failed */ ++ VG_(cleanup_thread)(&ctst->arch); ++ ctst->status = VgTs_Empty; ++ /* oops. Better tell the tool the thread exited in a hurry :-) */ ++ VG_TRACK( pre_thread_ll_exit, ctid ); ++ } ++ ++#if defined(VGP_mips64_linux) || defined(VGP_mips32_linux) ++ // ??? why do we set unconditionally r2 to 0, even when error out ??? ++ ptst->arch.vex.guest_r2 = 0; ++#elif defined(VGP_tilegx_linux) ++ // ??? why do we set unconditionally r0 to 0, even when error out ??? ++ ptst->arch.vex.guest_r0 = 0; ++#endif ++ ++ return res; ++} ++ ++/* Do a clone which is really a fork(). ++ ML_(do_fork_clone) uses the clone syscall to fork a child process. ++ Note that this should not be called for a thread creation. ++ Also, some flags combinations are not supported, and such combinations ++ are handled either by masking the non supported flags or by asserting. ++ ++ The CLONE_VFORK flag is accepted, as this just tells that the parent is ++ suspended till the child exits or calls execve. We better keep this flag, ++ just in case the guests parent/client code depends on this synchronisation. ++ ++ We cannot keep the flag CLONE_VM, as Valgrind will do whatever host ++ instructions in the child process, that will mess up the parent host ++ memory. So, we hope for the best and assumes that the guest application does ++ not (really) depends on sharing the memory between parent and child in the ++ interval between clone and exits/execve. ++ ++ If child_sp != 0, the child (guest) sp will be set to child_sp just after the ++ clone syscall, before child guest instructions are executed. */ ++static SysRes ML_(do_fork_clone) ( ThreadId tid, UInt flags, ++ Int* parent_tidptr, Int* child_tidptr, ++ Addr child_sp) + { + vki_sigset_t fork_saved_mask; + vki_sigset_t mask; + SysRes res; + + if (flags & (VKI_CLONE_SETTLS | VKI_CLONE_FS | VKI_CLONE_VM +- | VKI_CLONE_FILES | VKI_CLONE_VFORK)) ++ | VKI_CLONE_FILES)) + return VG_(mk_SysRes_Error)( VKI_EINVAL ); + + /* Block all signals during fork, so that we can fix things up in +@@ -476,6 +785,8 @@ SysRes ML_(do_fork_clone) ( ThreadId tid, UInt flags, + + if (!sr_isError(res) && sr_Res(res) == 0) { + /* child */ ++ if (child_sp != 0) ++ VG_(set_SP)(tid, child_sp); + VG_(do_atfork_child)(tid); + + /* restore signal mask */ +@@ -508,7 +819,6 @@ SysRes ML_(do_fork_clone) ( ThreadId tid, UInt flags, + return res; + } + +- + /* --------------------------------------------------------------------- + PRE/POST wrappers for arch-generic, Linux-specific syscalls + ------------------------------------------------------------------ */ +@@ -519,6 +829,157 @@ SysRes ML_(do_fork_clone) ( ThreadId tid, UInt flags, + #error Unknown endianness + #endif + ++PRE(sys_clone) ++{ ++ UInt cloneflags; ++ Bool badarg = False; ++ ++ PRINT("sys_clone ( %lx, %#lx, %#lx, %#lx, %#lx )",ARG1,ARG2,ARG3,ARG4,ARG5); ++ ++// Order of arguments differs between platforms. ++#if defined(VGP_x86_linux) \ ++ || defined(VGP_ppc32_linux) \ ++ || defined(VGP_ppc64be_linux) || defined(VGP_ppc64le_linux) \ ++ || defined(VGP_arm_linux) || defined(VGP_mips32_linux) \ ++ || defined(VGP_mips64_linux) || defined(VGP_arm64_linux) ++#define ARG_CHILD_TIDPTR ARG5 ++#define PRA_CHILD_TIDPTR PRA5 ++#define ARG_TLS ARG4 ++#define PRA_TLS PRA4 ++#elif defined(VGP_amd64_linux) || defined(VGP_tilegx_linux) \ ++ || defined(VGP_s390x_linux) ++#define ARG_CHILD_TIDPTR ARG4 ++#define PRA_CHILD_TIDPTR PRA4 ++#define ARG_TLS ARG5 ++#define PRA_TLS PRA5 ++#else ++# error Unknown platform ++#endif ++// And s390x is even more special, and inverts flags and child stack args ++#if defined(VGP_s390x_linux) ++#define ARG_FLAGS ARG2 ++#define PRA_FLAGS PRA2 ++#define ARG_CHILD_STACK ARG1 ++#define PRA_CHILD_STACK PRA1 ++#else ++#define ARG_FLAGS ARG1 ++#define PRA_FLAGS PRA1 ++#define ARG_CHILD_STACK ARG2 ++#define PRA_CHILD_STACK PRA2 ++#endif ++ ++ if (VG_(tdict).track_pre_reg_read) { ++ PRA_FLAGS("clone", unsigned long, flags); ++ PRA_CHILD_STACK("clone", void *, child_stack); ++ } ++ ++ if (ARG_FLAGS & VKI_CLONE_PARENT_SETTID) { ++ if (VG_(tdict).track_pre_reg_read) { ++ PRA3("clone", int *, parent_tidptr); ++ } ++ PRE_MEM_WRITE("clone(parent_tidptr)", ARG3, sizeof(Int)); ++ if (!VG_(am_is_valid_for_client)(ARG3, sizeof(Int), ++ VKI_PROT_WRITE)) { ++ badarg = True; ++ } ++ } ++ if (ARG_FLAGS & VKI_CLONE_SETTLS) { ++ if (VG_(tdict).track_pre_reg_read) { ++ PRA_TLS("clone", vki_modify_ldt_t *, tlsinfo); ++ } ++ /* Not very clear what is vki_modify_ldt_t: for many platforms, it is a ++ dummy type (that we define as a char). We only dereference/check the ++ ARG_TLS pointer if the type looks like a real type, i.e. sizeof > 1. */ ++ if (sizeof(vki_modify_ldt_t) > 1) { ++ PRE_MEM_READ("clone(tlsinfo)", ARG_TLS, sizeof(vki_modify_ldt_t)); ++ if (!VG_(am_is_valid_for_client)(ARG_TLS, sizeof(vki_modify_ldt_t), ++ VKI_PROT_READ)) { ++ badarg = True; ++ } ++ } ++ } ++ if (ARG_FLAGS & (VKI_CLONE_CHILD_SETTID | VKI_CLONE_CHILD_CLEARTID)) { ++ if (VG_(tdict).track_pre_reg_read) { ++ PRA_CHILD_TIDPTR("clone", int *, child_tidptr); ++ } ++ PRE_MEM_WRITE("clone(child_tidptr)", ARG_CHILD_TIDPTR, sizeof(Int)); ++ if (!VG_(am_is_valid_for_client)(ARG_CHILD_TIDPTR, sizeof(Int), ++ VKI_PROT_WRITE)) { ++ badarg = True; ++ } ++ } ++ ++ if (badarg) { ++ SET_STATUS_Failure( VKI_EFAULT ); ++ return; ++ } ++ ++ cloneflags = ARG_FLAGS; ++ ++ if (!ML_(client_signal_OK)(ARG_FLAGS & VKI_CSIGNAL)) { ++ SET_STATUS_Failure( VKI_EINVAL ); ++ return; ++ } ++ ++ /* Only look at the flags we really care about */ ++ switch (cloneflags & (VKI_CLONE_VM | VKI_CLONE_FS ++ | VKI_CLONE_FILES | VKI_CLONE_VFORK)) { ++ case VKI_CLONE_VM | VKI_CLONE_FS | VKI_CLONE_FILES: ++ /* thread creation */ ++ SET_STATUS_from_SysRes( ++ do_clone(tid, ++ ARG_FLAGS, /* flags */ ++ (Addr)ARG_CHILD_STACK, /* child ESP */ ++ (Int*)ARG3, /* parent_tidptr */ ++ (Int*)ARG_CHILD_TIDPTR, /* child_tidptr */ ++ (Addr)ARG_TLS)); /* set_tls */ ++ break; ++ ++ case VKI_CLONE_VFORK | VKI_CLONE_VM: /* vfork */ ++ // FALLTHROUGH - assume vfork (somewhat) == fork, see ML_(do_fork_clone). ++ cloneflags &= ~VKI_CLONE_VM; ++ ++ case 0: /* plain fork */ ++ SET_STATUS_from_SysRes( ++ ML_(do_fork_clone)(tid, ++ cloneflags, /* flags */ ++ (Int*)ARG3, /* parent_tidptr */ ++ (Int*)ARG_CHILD_TIDPTR, /* child_tidptr */ ++ (Addr)ARG_CHILD_STACK)); ++ break; ++ ++ default: ++ /* should we just ENOSYS? */ ++ VG_(message)(Vg_UserMsg, "Unsupported clone() flags: 0x%lx\n", ARG_FLAGS); ++ VG_(message)(Vg_UserMsg, "\n"); ++ VG_(message)(Vg_UserMsg, "The only supported clone() uses are:\n"); ++ VG_(message)(Vg_UserMsg, " - via a threads library (LinuxThreads or NPTL)\n"); ++ VG_(message)(Vg_UserMsg, " - via the implementation of fork or vfork\n"); ++ VG_(unimplemented) ++ ("Valgrind does not support general clone()."); ++ } ++ ++ if (SUCCESS) { ++ if (ARG_FLAGS & VKI_CLONE_PARENT_SETTID) ++ POST_MEM_WRITE(ARG3, sizeof(Int)); ++ if (ARG_FLAGS & (VKI_CLONE_CHILD_SETTID | VKI_CLONE_CHILD_CLEARTID)) ++ POST_MEM_WRITE(ARG_CHILD_TIDPTR, sizeof(Int)); ++ ++ /* Thread creation was successful; let the child have the chance ++ to run */ ++ *flags |= SfYieldAfter; ++ } ++ ++#undef ARG_CHILD_TIDPTR ++#undef PRA_CHILD_TIDPTR ++#undef ARG_TLS ++#undef PRA_TLS ++#undef ARG_FLAGS ++#undef PRA_FLAGS ++#undef ARG_CHILD_STACK ++#undef PRA_CHILD_STACK ++} ++ + /* --------------------------------------------------------------------- + *mount wrappers + ------------------------------------------------------------------ */ +diff --git a/coregrind/m_syswrap/syswrap-mips64-linux.c b/coregrind/m_syswrap/syswrap-mips64-linux.c +index 6e3db74..d3d70c5 100644 +--- a/coregrind/m_syswrap/syswrap-mips64-linux.c ++++ b/coregrind/m_syswrap/syswrap-mips64-linux.c +@@ -136,14 +136,7 @@ asm ( + #define __NR_CLONE __NR_clone + #define __NR_EXIT __NR_exit + +-ULong do_syscall_clone_mips64_linux ( Word (*fn) (void *), /* a0 - 4 */ +- void* stack, /* a1 - 5 */ +- Int flags, /* a2 - 6 */ +- void* arg, /* a3 - 7 */ +- Int* parent_tid, /* a4 - 8 */ +- void* /* Int tls */, /* a5 - 9 */ +- Int* child_tid ); /* a6 - 10 */ +- ++// See priv_syswrap-linux.h for arg profile. + asm( + ".text\n" + ".set noreorder\n" +@@ -199,104 +192,13 @@ asm( + #undef __NR_EXIT + + /* forward declarations */ +-static void setup_child ( ThreadArchState *, ThreadArchState *); + static SysRes sys_set_tls ( ThreadId tid, Addr tlsptr); + +-/* When a client clones, we need to keep track of the new thread. This means: +- 1. allocate a ThreadId+ThreadState+stack for the thread +- +- 2. initialize the thread's new VCPU state +- +- 3. create the thread using the same args as the client requested, but using +- the scheduler entrypoint for IP, and a separate stack for SP. */ +-static SysRes do_clone ( ThreadId ptid, +- UInt flags, Addr sp, +- Int* parent_tidptr, +- Int* child_tidptr, +- Addr child_tls ) +-{ +- const Bool debug = False; +- ThreadId ctid = VG_ (alloc_ThreadState) (); +- ThreadState * ptst = VG_ (get_ThreadState) (ptid); +- ThreadState * ctst = VG_ (get_ThreadState) (ctid); +- UInt ret = 0; +- UWord * stack; +- SysRes res; +- vki_sigset_t blockall, savedmask; +- +- VG_(sigfillset)(&blockall); +- vg_assert(VG_(is_running_thread)(ptid)); +- vg_assert(VG_(is_valid_tid)(ctid)); +- stack = (UWord *)ML_(allocstack)(ctid); +- if (stack == NULL) { +- res = VG_(mk_SysRes_Error)(VKI_ENOMEM); +- goto out; +- } +- setup_child(&ctst->arch, &ptst->arch); +- +- /* on MIPS we need to set V0 and A3 to zero */ +- ctst->arch.vex.guest_r2 = 0; +- ctst->arch.vex.guest_r7 = 0; +- if (sp != 0) +- ctst->arch.vex.guest_r29 = sp; +- +- ctst->os_state.parent = ptid; +- ctst->sig_mask = ptst->sig_mask; +- ctst->tmp_sig_mask = ptst->sig_mask; +- +- ctst->os_state.threadgroup = ptst->os_state.threadgroup; +- +- ML_(guess_and_register_stack) (sp, ctst); +- +- VG_TRACK(pre_thread_ll_create, ptid, ctid); +- if (flags & VKI_CLONE_SETTLS) { +- if (debug) +- VG_(printf)("clone child has SETTLS: tls at %#lx\n", child_tls); +- res = sys_set_tls(ctid, child_tls); +- if (sr_isError(res)) +- goto out; +- ctst->arch.vex.guest_r27 = child_tls; +- } +- +- flags &= ~VKI_CLONE_SETTLS; +- VG_ (sigprocmask) (VKI_SIG_SETMASK, &blockall, &savedmask); +- /* Create the new thread */ +- ret = do_syscall_clone_mips64_linux(ML_(start_thread_NORETURN), +- stack, flags, &VG_(threads)[ctid], +- parent_tidptr, NULL /*child_tls*/, +- child_tidptr); +- if (debug) +- VG_(printf)("ret: 0x%x\n", ret); +- +- res = VG_(mk_SysRes_mips64_linux)( /* val */ ret, 0, /* errflag */ 0); +- +- VG_(sigprocmask)(VKI_SIG_SETMASK, &savedmask, NULL); +- +- out: +- if (sr_isError (res)) { +- VG_ (cleanup_thread) (&ctst->arch); +- ctst->status = VgTs_Empty; +- VG_TRACK (pre_thread_ll_exit, ctid); +- } +- ptst->arch.vex.guest_r2 = 0; +- +- return res; +-} +- + /* --------------------------------------------------------------------- + More thread stuff + ------------------------------------------------------------------ */ + void VG_(cleanup_thread) ( ThreadArchState * arch ) { }; + +-void setup_child ( /* OUT */ ThreadArchState * child, +- /* IN */ ThreadArchState * parent ) +-{ +- /* We inherit our parent's guest state. */ +- child->vex = parent->vex; +- child->vex_shadow1 = parent->vex_shadow1; +- child->vex_shadow2 = parent->vex_shadow2; +-} +- + SysRes sys_set_tls ( ThreadId tid, Addr tlsptr ) + { + VG_(threads)[tid].arch.vex.guest_ULR = tlsptr; +@@ -316,7 +218,6 @@ SysRes sys_set_tls ( ThreadId tid, Addr tlsptr ) + file, but that requires even more macro magic. */ + + DECL_TEMPLATE (mips_linux, sys_set_thread_area); +-DECL_TEMPLATE (mips_linux, sys_clone); + DECL_TEMPLATE (mips_linux, sys_tee); + DECL_TEMPLATE (mips_linux, sys_splice); + DECL_TEMPLATE (mips_linux, sys_vmsplice); +@@ -494,84 +395,6 @@ PRE(sys_mmap) + (Off64T) ARG6); + SET_STATUS_from_SysRes(r); + } +- +-PRE(sys_clone) +-{ +- Bool badarg = False; +- UInt cloneflags; +- PRINT("sys_clone ( %lx, %#lx, %#lx, %#lx, %#lx )", ARG1, ARG2, ARG3, +- ARG4, ARG5); +- PRE_REG_READ2(int, "clone", unsigned long, flags, void *, child_stack); +- if (ARG1 & VKI_CLONE_PARENT_SETTID) { +- if (VG_(tdict).track_pre_reg_read) { +- PRA3("clone", int *, parent_tidptr); +- } +- PRE_MEM_WRITE("clone(parent_tidptr)", ARG3, sizeof(Int)); +- if (!VG_(am_is_valid_for_client)(ARG3, sizeof(Int), VKI_PROT_WRITE)) { +- badarg = True; +- } +- } +- if (ARG1 & (VKI_CLONE_CHILD_SETTID | VKI_CLONE_CHILD_CLEARTID)) { +- if (VG_(tdict).track_pre_reg_read) { +- PRA5("clone", int *, child_tidptr); +- } +- PRE_MEM_WRITE("clone(child_tidptr)", ARG5, sizeof (Int)); +- if (!VG_(am_is_valid_for_client)(ARG5, sizeof (Int), VKI_PROT_WRITE)) +- badarg = True; +- } +- if (badarg) { +- SET_STATUS_Failure(VKI_EFAULT); +- return; +- } +- cloneflags = ARG1; +- if (!ML_(client_signal_OK)(ARG1 & VKI_CSIGNAL)) { +- SET_STATUS_Failure(VKI_EINVAL); +- return; +- } +- /* Only look at the flags we really care about */ +- switch (cloneflags & (VKI_CLONE_VM | VKI_CLONE_FS +- |VKI_CLONE_FILES | VKI_CLONE_VFORK)) { +- case VKI_CLONE_VM | VKI_CLONE_FS | VKI_CLONE_FILES: +- /* thread creation */ +- SET_STATUS_from_SysRes(do_clone(tid, +- ARG1, /* flags */ +- (Addr)ARG2, /* child SP */ +- (Int *)ARG3, /* parent_tidptr */ +- (Int *)ARG5, /* child_tidptr */ +- (Addr)ARG4)); /* child_tls */ +- break; +- +- case VKI_CLONE_VFORK | VKI_CLONE_VM: /* vfork */ +- /* FALLTHROUGH - assume vfork == fork */ +- cloneflags &= ~(VKI_CLONE_VFORK | VKI_CLONE_VM); +- case 0: /* plain fork */ +- SET_STATUS_from_SysRes(ML_(do_fork_clone)(tid, +- cloneflags, /* flags */ +- (Int *)ARG3, /* parent_tidptr */ +- (Int *)ARG5)); /* child_tidptr */ +- break; +- +- default: +- /* should we just ENOSYS? */ +- VG_(message)(Vg_UserMsg, "Unsupported clone() flags: 0x%lx\n", ARG1); +- VG_(message)(Vg_UserMsg, "\n"); +- VG_(message)(Vg_UserMsg, "The only supported clone() uses are:\n"); +- VG_(message)(Vg_UserMsg, +- " - via a threads library (LinuxThreads or NPTL)\n"); +- VG_(message)(Vg_UserMsg, +- " - via the implementation of fork or vfork\n"); +- VG_(unimplemented)("Valgrind does not support general clone()."); +- } +- if (SUCCESS) { +- if (ARG1 & VKI_CLONE_PARENT_SETTID) +- POST_MEM_WRITE(ARG3, sizeof(Int)); +- if (ARG1 & (VKI_CLONE_CHILD_SETTID | VKI_CLONE_CHILD_CLEARTID)) +- POST_MEM_WRITE(ARG5, sizeof(Int)); +- /* Thread creation was successful; let the child have the chance to run */ +- *flags |= SfYieldAfter; +- } +-} +- + PRE(sys_rt_sigreturn) + { + /* See comments on PRE(sys_rt_sigreturn) in syswrap-s390x-linux.c for +@@ -766,7 +589,7 @@ static SyscallTableEntry syscall_main_table[] = { + LINXY (__NR_socketpair, sys_socketpair), + LINX_ (__NR_setsockopt, sys_setsockopt), + LINXY (__NR_getsockopt, sys_getsockopt), +- PLAX_ (__NR_clone, sys_clone), ++ LINX_ (__NR_clone, sys_clone), + GENX_ (__NR_fork, sys_fork), + GENX_ (__NR_execve, sys_execve), + GENX_ (__NR_exit, sys_exit), +diff --git a/coregrind/m_syswrap/syswrap-ppc32-linux.c b/coregrind/m_syswrap/syswrap-ppc32-linux.c +index 379fcb3..a654a90 100644 +--- a/coregrind/m_syswrap/syswrap-ppc32-linux.c ++++ b/coregrind/m_syswrap/syswrap-ppc32-linux.c +@@ -146,14 +146,7 @@ asm( + #define __NR_CLONE VG_STRINGIFY(__NR_clone) + #define __NR_EXIT VG_STRINGIFY(__NR_exit) + +-extern +-ULong do_syscall_clone_ppc32_linux ( Word (*fn)(void *), +- void* stack, +- Int flags, +- void* arg, +- Int* child_tid, +- Int* parent_tid, +- vki_modify_ldt_t * ); ++// See priv_syswrap-linux.h for arg profile. + asm( + ".text\n" + ".globl do_syscall_clone_ppc32_linux\n" +@@ -216,145 +209,6 @@ asm( + #undef __NR_CLONE + #undef __NR_EXIT + +-// forward declarations +-static void setup_child ( ThreadArchState*, ThreadArchState* ); +- +-/* +- When a client clones, we need to keep track of the new thread. This means: +- 1. allocate a ThreadId+ThreadState+stack for the thread +- +- 2. initialize the thread's new VCPU state +- +- 3. create the thread using the same args as the client requested, +- but using the scheduler entrypoint for IP, and a separate stack +- for SP. +- */ +-static SysRes do_clone ( ThreadId ptid, +- UInt flags, Addr sp, +- Int *parent_tidptr, +- Int *child_tidptr, +- Addr child_tls) +-{ +- const Bool debug = False; +- +- ThreadId ctid = VG_(alloc_ThreadState)(); +- ThreadState* ptst = VG_(get_ThreadState)(ptid); +- ThreadState* ctst = VG_(get_ThreadState)(ctid); +- ULong word64; +- UWord* stack; +- SysRes res; +- vki_sigset_t blockall, savedmask; +- +- VG_(sigfillset)(&blockall); +- +- vg_assert(VG_(is_running_thread)(ptid)); +- vg_assert(VG_(is_valid_tid)(ctid)); +- +- stack = (UWord*)ML_(allocstack)(ctid); +- if (stack == NULL) { +- res = VG_(mk_SysRes_Error)( VKI_ENOMEM ); +- goto out; +- } +- +-//? /* make a stack frame */ +-//? stack -= 16; +-//? *(UWord *)stack = 0; +- +- +- /* Copy register state +- +- Both parent and child return to the same place, and the code +- following the clone syscall works out which is which, so we +- don't need to worry about it. +- +- The parent gets the child's new tid returned from clone, but the +- child gets 0. +- +- If the clone call specifies a NULL SP for the new thread, then +- it actually gets a copy of the parent's SP. +- +- The child's TLS register (r2) gets set to the tlsaddr argument +- if the CLONE_SETTLS flag is set. +- */ +- setup_child( &ctst->arch, &ptst->arch ); +- +- /* Make sys_clone appear to have returned Success(0) in the +- child. */ +- { UInt old_cr = LibVEX_GuestPPC32_get_CR( &ctst->arch.vex ); +- /* %r3 = 0 */ +- ctst->arch.vex.guest_GPR3 = 0; +- /* %cr0.so = 0 */ +- LibVEX_GuestPPC32_put_CR( old_cr & ~(1<<28), &ctst->arch.vex ); +- } +- +- if (sp != 0) +- ctst->arch.vex.guest_GPR1 = sp; +- +- ctst->os_state.parent = ptid; +- +- /* inherit signal mask */ +- ctst->sig_mask = ptst->sig_mask; +- ctst->tmp_sig_mask = ptst->sig_mask; +- +- /* Start the child with its threadgroup being the same as the +- parent's. This is so that any exit_group calls that happen +- after the child is created but before it sets its +- os_state.threadgroup field for real (in thread_wrapper in +- syswrap-linux.c), really kill the new thread. a.k.a this avoids +- a race condition in which the thread is unkillable (via +- exit_group) because its threadgroup is not set. The race window +- is probably only a few hundred or a few thousand cycles long. +- See #226116. */ +- ctst->os_state.threadgroup = ptst->os_state.threadgroup; +- +- ML_(guess_and_register_stack) (sp, ctst); +- +- /* Assume the clone will succeed, and tell any tool that wants to +- know that this thread has come into existence. If the clone +- fails, we'll send out a ll_exit notification for it at the out: +- label below, to clean up. */ +- vg_assert(VG_(owns_BigLock_LL)(ptid)); +- VG_TRACK ( pre_thread_ll_create, ptid, ctid ); +- +- if (flags & VKI_CLONE_SETTLS) { +- if (debug) +- VG_(printf)("clone child has SETTLS: tls at %#lx\n", child_tls); +- ctst->arch.vex.guest_GPR2 = child_tls; +- } +- +- flags &= ~VKI_CLONE_SETTLS; +- +- /* start the thread with everything blocked */ +- VG_(sigprocmask)(VKI_SIG_SETMASK, &blockall, &savedmask); +- +- /* Create the new thread */ +- word64 = do_syscall_clone_ppc32_linux( +- ML_(start_thread_NORETURN), stack, flags, &VG_(threads)[ctid], +- child_tidptr, parent_tidptr, NULL +- ); +- /* High half word64 is syscall return value. Low half is +- the entire CR, from which we need to extract CR0.SO. */ +- /* VG_(printf)("word64 = 0x%llx\n", word64); */ +- res = VG_(mk_SysRes_ppc32_linux)( +- /*val*/(UInt)(word64 >> 32), +- /*errflag*/ (((UInt)word64) >> 28) & 1 +- ); +- +- VG_(sigprocmask)(VKI_SIG_SETMASK, &savedmask, NULL); +- +- out: +- if (sr_isError(res)) { +- /* clone failed */ +- VG_(cleanup_thread)(&ctst->arch); +- ctst->status = VgTs_Empty; +- /* oops. Better tell the tool the thread exited in a hurry :-) */ +- VG_TRACK( pre_thread_ll_exit, ctid ); +- } +- +- return res; +-} +- +- + + /* --------------------------------------------------------------------- + More thread stuff +@@ -364,16 +218,6 @@ void VG_(cleanup_thread) ( ThreadArchState* arch ) + { + } + +-void setup_child ( /*OUT*/ ThreadArchState *child, +- /*IN*/ ThreadArchState *parent ) +-{ +- /* We inherit our parent's guest state. */ +- child->vex = parent->vex; +- child->vex_shadow1 = parent->vex_shadow1; +- child->vex_shadow2 = parent->vex_shadow2; +-} +- +- + /* --------------------------------------------------------------------- + PRE/POST wrappers for ppc32/Linux-specific syscalls + ------------------------------------------------------------------ */ +@@ -393,7 +237,6 @@ DECL_TEMPLATE(ppc32_linux, sys_stat64); + DECL_TEMPLATE(ppc32_linux, sys_lstat64); + DECL_TEMPLATE(ppc32_linux, sys_fstatat64); + DECL_TEMPLATE(ppc32_linux, sys_fstat64); +-DECL_TEMPLATE(ppc32_linux, sys_clone); + DECL_TEMPLATE(ppc32_linux, sys_sigreturn); + DECL_TEMPLATE(ppc32_linux, sys_rt_sigreturn); + DECL_TEMPLATE(ppc32_linux, sys_sigsuspend); +@@ -530,91 +373,6 @@ POST(sys_fstat64) + //.. } + //.. } + +-PRE(sys_clone) +-{ +- UInt cloneflags; +- +- PRINT("sys_clone ( %lx, %#lx, %#lx, %#lx, %#lx )",ARG1,ARG2,ARG3,ARG4,ARG5); +- PRE_REG_READ5(int, "clone", +- unsigned long, flags, +- void *, child_stack, +- int *, parent_tidptr, +- void *, child_tls, +- int *, child_tidptr); +- +- if (ARG1 & VKI_CLONE_PARENT_SETTID) { +- PRE_MEM_WRITE("clone(parent_tidptr)", ARG3, sizeof(Int)); +- if (!VG_(am_is_valid_for_client)(ARG3, sizeof(Int), +- VKI_PROT_WRITE)) { +- SET_STATUS_Failure( VKI_EFAULT ); +- return; +- } +- } +- if (ARG1 & (VKI_CLONE_CHILD_SETTID | VKI_CLONE_CHILD_CLEARTID)) { +- PRE_MEM_WRITE("clone(child_tidptr)", ARG5, sizeof(Int)); +- if (!VG_(am_is_valid_for_client)(ARG5, sizeof(Int), +- VKI_PROT_WRITE)) { +- SET_STATUS_Failure( VKI_EFAULT ); +- return; +- } +- } +- +- cloneflags = ARG1; +- +- if (!ML_(client_signal_OK)(ARG1 & VKI_CSIGNAL)) { +- SET_STATUS_Failure( VKI_EINVAL ); +- return; +- } +- +- /* Only look at the flags we really care about */ +- switch (cloneflags & (VKI_CLONE_VM | VKI_CLONE_FS +- | VKI_CLONE_FILES | VKI_CLONE_VFORK)) { +- case VKI_CLONE_VM | VKI_CLONE_FS | VKI_CLONE_FILES: +- /* thread creation */ +- SET_STATUS_from_SysRes( +- do_clone(tid, +- ARG1, /* flags */ +- (Addr)ARG2, /* child SP */ +- (Int *)ARG3, /* parent_tidptr */ +- (Int *)ARG5, /* child_tidptr */ +- (Addr)ARG4)); /* child_tls */ +- break; +- +- case VKI_CLONE_VFORK | VKI_CLONE_VM: /* vfork */ +- /* FALLTHROUGH - assume vfork == fork */ +- cloneflags &= ~(VKI_CLONE_VFORK | VKI_CLONE_VM); +- +- case 0: /* plain fork */ +- SET_STATUS_from_SysRes( +- ML_(do_fork_clone)(tid, +- cloneflags, /* flags */ +- (Int *)ARG3, /* parent_tidptr */ +- (Int *)ARG5)); /* child_tidptr */ +- break; +- +- default: +- /* should we just ENOSYS? */ +- VG_(message)(Vg_UserMsg, "Unsupported clone() flags: 0x%lx\n", ARG1); +- VG_(message)(Vg_UserMsg, "\n"); +- VG_(message)(Vg_UserMsg, "The only supported clone() uses are:\n"); +- VG_(message)(Vg_UserMsg, " - via a threads library (LinuxThreads or NPTL)\n"); +- VG_(message)(Vg_UserMsg, " - via the implementation of fork or vfork\n"); +- VG_(unimplemented) +- ("Valgrind does not support general clone()."); +- } +- +- if (SUCCESS) { +- if (ARG1 & VKI_CLONE_PARENT_SETTID) +- POST_MEM_WRITE(ARG3, sizeof(Int)); +- if (ARG1 & (VKI_CLONE_CHILD_SETTID | VKI_CLONE_CHILD_CLEARTID)) +- POST_MEM_WRITE(ARG5, sizeof(Int)); +- +- /* Thread creation was successful; let the child have the chance +- to run */ +- *flags |= SfYieldAfter; +- } +-} +- + PRE(sys_sigreturn) + { + /* See comments on PRE(sys_rt_sigreturn) in syswrap-amd64-linux.c for +@@ -999,7 +757,7 @@ static SyscallTableEntry syscall_table[] = { + GENX_(__NR_fsync, sys_fsync), // 118 + PLAX_(__NR_sigreturn, sys_sigreturn), // 119 ?/Linux + //.. +- PLAX_(__NR_clone, sys_clone), // 120 ++ LINX_(__NR_clone, sys_clone), // 120 + //.. // (__NR_setdomainname, sys_setdomainname), // 121 */*(?) + GENXY(__NR_uname, sys_newuname), // 122 + //.. PLAX_(__NR_modify_ldt, sys_modify_ldt), // 123 +diff --git a/coregrind/m_syswrap/syswrap-ppc64-linux.c b/coregrind/m_syswrap/syswrap-ppc64-linux.c +index 1ae4454..f90140d 100644 +--- a/coregrind/m_syswrap/syswrap-ppc64-linux.c ++++ b/coregrind/m_syswrap/syswrap-ppc64-linux.c +@@ -209,14 +209,7 @@ asm( + #define __NR_CLONE VG_STRINGIFY(__NR_clone) + #define __NR_EXIT VG_STRINGIFY(__NR_exit) + +-extern +-ULong do_syscall_clone_ppc64_linux ( Word (*fn)(void *), +- void* stack, +- Int flags, +- void* arg, +- Int* child_tid, +- Int* parent_tid, +- void/*vki_modify_ldt_t*/ * ); ++// See priv_syswrap-linux.h for arg profile. + asm( + #if defined(VGP_ppc64be_linux) + " .align 2\n" +@@ -366,148 +359,6 @@ asm( + #undef __NR_CLONE + #undef __NR_EXIT + +-// forward declarations +-static void setup_child ( ThreadArchState*, ThreadArchState* ); +- +-/* +- When a client clones, we need to keep track of the new thread. This means: +- 1. allocate a ThreadId+ThreadState+stack for the thread +- +- 2. initialize the thread's new VCPU state +- +- 3. create the thread using the same args as the client requested, +- but using the scheduler entrypoint for IP, and a separate stack +- for SP. +- */ +-static SysRes do_clone ( ThreadId ptid, +- UInt flags, Addr sp, +- Int *parent_tidptr, +- Int *child_tidptr, +- Addr child_tls) +-{ +- const Bool debug = False; +- +- ThreadId ctid = VG_(alloc_ThreadState)(); +- ThreadState* ptst = VG_(get_ThreadState)(ptid); +- ThreadState* ctst = VG_(get_ThreadState)(ctid); +- ULong word64; +- UWord* stack; +- SysRes res; +- vki_sigset_t blockall, savedmask; +- +- VG_(sigfillset)(&blockall); +- +- vg_assert(VG_(is_running_thread)(ptid)); +- vg_assert(VG_(is_valid_tid)(ctid)); +- +- stack = (UWord*)ML_(allocstack)(ctid); +- if (stack == NULL) { +- res = VG_(mk_SysRes_Error)( VKI_ENOMEM ); +- goto out; +- } +- +-//? /* make a stack frame */ +-//? stack -= 16; +-//? *(UWord *)stack = 0; +- +- +- /* Copy register state +- +- Both parent and child return to the same place, and the code +- following the clone syscall works out which is which, so we +- don't need to worry about it. +- +- The parent gets the child's new tid returned from clone, but the +- child gets 0. +- +- If the clone call specifies a NULL SP for the new thread, then +- it actually gets a copy of the parent's SP. +- +- The child's TLS register (r2) gets set to the tlsaddr argument +- if the CLONE_SETTLS flag is set. +- */ +- setup_child( &ctst->arch, &ptst->arch ); +- +- /* Make sys_clone appear to have returned Success(0) in the +- child. */ +- { UInt old_cr = LibVEX_GuestPPC64_get_CR( &ctst->arch.vex ); +- /* %r3 = 0 */ +- ctst->arch.vex.guest_GPR3 = 0; +- /* %cr0.so = 0 */ +- LibVEX_GuestPPC64_put_CR( old_cr & ~(1<<28), &ctst->arch.vex ); +- } +- +- if (sp != 0) +- ctst->arch.vex.guest_GPR1 = sp; +- +- ctst->os_state.parent = ptid; +- +- /* inherit signal mask */ +- ctst->sig_mask = ptst->sig_mask; +- ctst->tmp_sig_mask = ptst->sig_mask; +- +- /* Start the child with its threadgroup being the same as the +- parent's. This is so that any exit_group calls that happen +- after the child is created but before it sets its +- os_state.threadgroup field for real (in thread_wrapper in +- syswrap-linux.c), really kill the new thread. a.k.a this avoids +- a race condition in which the thread is unkillable (via +- exit_group) because its threadgroup is not set. The race window +- is probably only a few hundred or a few thousand cycles long. +- See #226116. */ +- ctst->os_state.threadgroup = ptst->os_state.threadgroup; +- +- ML_(guess_and_register_stack) (sp, ctst); +- +- /* Assume the clone will succeed, and tell any tool that wants to +- know that this thread has come into existence. If the clone +- fails, we'll send out a ll_exit notification for it at the out: +- label below, to clean up. */ +- vg_assert(VG_(owns_BigLock_LL)(ptid)); +- VG_TRACK ( pre_thread_ll_create, ptid, ctid ); +- +- if (flags & VKI_CLONE_SETTLS) { +- if (debug) +- VG_(printf)("clone child has SETTLS: tls at %#lx\n", child_tls); +- ctst->arch.vex.guest_GPR13 = child_tls; +- } +- +- flags &= ~VKI_CLONE_SETTLS; +- +- /* start the thread with everything blocked */ +- VG_(sigprocmask)(VKI_SIG_SETMASK, &blockall, &savedmask); +- +- /* Create the new thread */ +- word64 = do_syscall_clone_ppc64_linux( +- ML_(start_thread_NORETURN), +- stack, flags, &VG_(threads)[ctid], +- child_tidptr, parent_tidptr, NULL +- ); +- +- /* Low half word64 is syscall return value. Hi half is +- the entire CR, from which we need to extract CR0.SO. */ +- /* VG_(printf)("word64 = 0x%llx\n", word64); */ +- res = VG_(mk_SysRes_ppc64_linux)( +- /*val*/(UInt)(word64 & 0xFFFFFFFFULL), +- /*errflag*/ (UInt)((word64 >> (32+28)) & 1) +- ); +- +- VG_(sigprocmask)(VKI_SIG_SETMASK, &savedmask, NULL); +- +- out: +- if (sr_isError(res)) { +- /* clone failed */ +- VG_(cleanup_thread)(&ctst->arch); +- ctst->status = VgTs_Empty; +- /* oops. Better tell the tool the thread exited in a hurry :-) */ +- VG_TRACK( pre_thread_ll_exit, ctid ); +- } +- +- return res; +-} +- +- +- + /* --------------------------------------------------------------------- + More thread stuff + ------------------------------------------------------------------ */ +@@ -516,16 +367,6 @@ void VG_(cleanup_thread) ( ThreadArchState* arch ) + { + } + +-void setup_child ( /*OUT*/ ThreadArchState *child, +- /*IN*/ ThreadArchState *parent ) +-{ +- /* We inherit our parent's guest state. */ +- child->vex = parent->vex; +- child->vex_shadow1 = parent->vex_shadow1; +- child->vex_shadow2 = parent->vex_shadow2; +-} +- +- + /* --------------------------------------------------------------------- + PRE/POST wrappers for ppc64/Linux-specific syscalls + ------------------------------------------------------------------ */ +@@ -544,7 +385,6 @@ DECL_TEMPLATE(ppc64_linux, sys_mmap); + //zz DECL_TEMPLATE(ppc64_linux, sys_stat64); + //zz DECL_TEMPLATE(ppc64_linux, sys_lstat64); + //zz DECL_TEMPLATE(ppc64_linux, sys_fstat64); +-DECL_TEMPLATE(ppc64_linux, sys_clone); + //zz DECL_TEMPLATE(ppc64_linux, sys_sigreturn); + DECL_TEMPLATE(ppc64_linux, sys_rt_sigreturn); + DECL_TEMPLATE(ppc64_linux, sys_fadvise64); +@@ -629,92 +469,6 @@ PRE(sys_mmap) + //zz POST_MEM_WRITE( ARG2, sizeof(struct vki_stat64) ); + //zz } + +- +-PRE(sys_clone) +-{ +- UInt cloneflags; +- +- PRINT("sys_clone ( %lx, %#lx, %#lx, %#lx, %#lx )",ARG1,ARG2,ARG3,ARG4,ARG5); +- PRE_REG_READ5(int, "clone", +- unsigned long, flags, +- void *, child_stack, +- int *, parent_tidptr, +- void *, child_tls, +- int *, child_tidptr); +- +- if (ARG1 & VKI_CLONE_PARENT_SETTID) { +- PRE_MEM_WRITE("clone(parent_tidptr)", ARG3, sizeof(Int)); +- if (!VG_(am_is_valid_for_client)(ARG3, sizeof(Int), +- VKI_PROT_WRITE)) { +- SET_STATUS_Failure( VKI_EFAULT ); +- return; +- } +- } +- if (ARG1 & (VKI_CLONE_CHILD_SETTID | VKI_CLONE_CHILD_CLEARTID)) { +- PRE_MEM_WRITE("clone(child_tidptr)", ARG5, sizeof(Int)); +- if (!VG_(am_is_valid_for_client)(ARG5, sizeof(Int), +- VKI_PROT_WRITE)) { +- SET_STATUS_Failure( VKI_EFAULT ); +- return; +- } +- } +- +- cloneflags = ARG1; +- +- if (!ML_(client_signal_OK)(ARG1 & VKI_CSIGNAL)) { +- SET_STATUS_Failure( VKI_EINVAL ); +- return; +- } +- +- /* Only look at the flags we really care about */ +- switch (cloneflags & (VKI_CLONE_VM | VKI_CLONE_FS +- | VKI_CLONE_FILES | VKI_CLONE_VFORK)) { +- case VKI_CLONE_VM | VKI_CLONE_FS | VKI_CLONE_FILES: +- /* thread creation */ +- SET_STATUS_from_SysRes( +- do_clone(tid, +- ARG1, /* flags */ +- (Addr)ARG2, /* child SP */ +- (Int *)ARG3, /* parent_tidptr */ +- (Int *)ARG5, /* child_tidptr */ +- (Addr)ARG4)); /* child_tls */ +- break; +- +- case VKI_CLONE_VFORK | VKI_CLONE_VM: /* vfork */ +- /* FALLTHROUGH - assume vfork == fork */ +- cloneflags &= ~(VKI_CLONE_VFORK | VKI_CLONE_VM); +- +- case 0: /* plain fork */ +- SET_STATUS_from_SysRes( +- ML_(do_fork_clone)(tid, +- cloneflags, /* flags */ +- (Int *)ARG3, /* parent_tidptr */ +- (Int *)ARG5)); /* child_tidptr */ +- break; +- +- default: +- /* should we just ENOSYS? */ +- VG_(message)(Vg_UserMsg, "Unsupported clone() flags: 0x%lx\n", ARG1); +- VG_(message)(Vg_UserMsg, "\n"); +- VG_(message)(Vg_UserMsg, "The only supported clone() uses are:\n"); +- VG_(message)(Vg_UserMsg, " - via a threads library (LinuxThreads or NPTL)\n"); +- VG_(message)(Vg_UserMsg, " - via the implementation of fork or vfork\n"); +- VG_(unimplemented) +- ("Valgrind does not support general clone()."); +- } +- +- if (SUCCESS) { +- if (ARG1 & VKI_CLONE_PARENT_SETTID) +- POST_MEM_WRITE(ARG3, sizeof(Int)); +- if (ARG1 & (VKI_CLONE_CHILD_SETTID | VKI_CLONE_CHILD_CLEARTID)) +- POST_MEM_WRITE(ARG5, sizeof(Int)); +- +- /* Thread creation was successful; let the child have the chance +- to run */ +- *flags |= SfYieldAfter; +- } +-} +- + PRE(sys_fadvise64) + { + PRINT("sys_fadvise64 ( %ld, %ld, %lu, %ld )", SARG1, SARG2, SARG3, SARG4); +@@ -922,7 +676,7 @@ static SyscallTableEntry syscall_table[] = { + GENX_(__NR_fsync, sys_fsync), // 118 + // _____(__NR_sigreturn, sys_sigreturn), // 119 + +- PLAX_(__NR_clone, sys_clone), // 120 ++ LINX_(__NR_clone, sys_clone), // 120 + // _____(__NR_setdomainname, sys_setdomainname), // 121 + GENXY(__NR_uname, sys_newuname), // 122 + // _____(__NR_modify_ldt, sys_modify_ldt), // 123 +diff --git a/coregrind/m_syswrap/syswrap-s390x-linux.c b/coregrind/m_syswrap/syswrap-s390x-linux.c +index ebb8295..f596341 100644 +--- a/coregrind/m_syswrap/syswrap-s390x-linux.c ++++ b/coregrind/m_syswrap/syswrap-s390x-linux.c +@@ -138,14 +138,7 @@ asm( + #define __NR_CLONE VG_STRINGIFY(__NR_clone) + #define __NR_EXIT VG_STRINGIFY(__NR_exit) + +-extern +-ULong do_syscall_clone_s390x_linux ( void *stack, +- ULong flags, +- Int *parent_tid, +- Int *child_tid, +- Addr tlsaddr, +- Word (*fn)(void *), +- void *arg); ++// See priv_syswrap-linux.h for arg profile. + asm( + " .text\n" + " .align 4\n" +@@ -182,126 +175,6 @@ void VG_(cleanup_thread) ( ThreadArchState* arch ) + /* only used on x86 for descriptor tables */ + } + +-static void setup_child ( /*OUT*/ ThreadArchState *child, +- /*IN*/ ThreadArchState *parent ) +-{ +- /* We inherit our parent's guest state. */ +- child->vex = parent->vex; +- child->vex_shadow1 = parent->vex_shadow1; +- child->vex_shadow2 = parent->vex_shadow2; +-} +- +- +-/* +- When a client clones, we need to keep track of the new thread. This means: +- 1. allocate a ThreadId+ThreadState+stack for the thread +- +- 2. initialize the thread's new VCPU state +- +- 3. create the thread using the same args as the client requested, +- but using the scheduler entrypoint for IP, and a separate stack +- for SP. +- */ +-static SysRes do_clone ( ThreadId ptid, +- Addr sp, ULong flags, +- Int *parent_tidptr, +- Int *child_tidptr, +- Addr tlsaddr) +-{ +- static const Bool debug = False; +- +- ThreadId ctid = VG_(alloc_ThreadState)(); +- ThreadState* ptst = VG_(get_ThreadState)(ptid); +- ThreadState* ctst = VG_(get_ThreadState)(ctid); +- UWord* stack; +- SysRes res; +- ULong r2; +- vki_sigset_t blockall, savedmask; +- +- VG_(sigfillset)(&blockall); +- +- vg_assert(VG_(is_running_thread)(ptid)); +- vg_assert(VG_(is_valid_tid)(ctid)); +- +- stack = (UWord*)ML_(allocstack)(ctid); +- if (stack == NULL) { +- res = VG_(mk_SysRes_Error)( VKI_ENOMEM ); +- goto out; +- } +- +- /* Copy register state +- +- Both parent and child return to the same place, and the code +- following the clone syscall works out which is which, so we +- don't need to worry about it. +- +- The parent gets the child's new tid returned from clone, but the +- child gets 0. +- +- If the clone call specifies a NULL sp for the new thread, then +- it actually gets a copy of the parent's sp. +- */ +- setup_child( &ctst->arch, &ptst->arch ); +- +- /* Make sys_clone appear to have returned Success(0) in the +- child. */ +- ctst->arch.vex.guest_r2 = 0; +- +- if (sp != 0) +- ctst->arch.vex.guest_SP = sp; +- +- ctst->os_state.parent = ptid; +- +- /* inherit signal mask */ +- ctst->sig_mask = ptst->sig_mask; +- ctst->tmp_sig_mask = ptst->sig_mask; +- +- /* have the parents thread group */ +- ctst->os_state.threadgroup = ptst->os_state.threadgroup; +- +- ML_(guess_and_register_stack) (sp, ctst); +- +- /* Assume the clone will succeed, and tell any tool that wants to +- know that this thread has come into existence. If the clone +- fails, we'll send out a ll_exit notification for it at the out: +- label below, to clean up. */ +- vg_assert(VG_(owns_BigLock_LL)(ptid)); +- VG_TRACK ( pre_thread_ll_create, ptid, ctid ); +- +- if (flags & VKI_CLONE_SETTLS) { +- if (debug) +- VG_(printf)("clone child has SETTLS: tls at %#lx\n", tlsaddr); +- ctst->arch.vex.guest_a0 = (UInt) (tlsaddr >> 32); +- ctst->arch.vex.guest_a1 = (UInt) tlsaddr; +- } +- flags &= ~VKI_CLONE_SETTLS; +- +- /* start the thread with everything blocked */ +- VG_(sigprocmask)(VKI_SIG_SETMASK, &blockall, &savedmask); +- +- /* Create the new thread */ +- r2 = do_syscall_clone_s390x_linux( +- stack, flags, parent_tidptr, child_tidptr, tlsaddr, +- ML_(start_thread_NORETURN), &VG_(threads)[ctid]); +- +- res = VG_(mk_SysRes_s390x_linux)( r2 ); +- +- VG_(sigprocmask)(VKI_SIG_SETMASK, &savedmask, NULL); +- +- out: +- if (sr_isError(res)) { +- /* clone failed */ +- ctst->status = VgTs_Empty; +- /* oops. Better tell the tool the thread exited in a hurry :-) */ +- VG_TRACK( pre_thread_ll_exit, ctid ); +- } +- +- return res; +- +-} +- +- +- + /* --------------------------------------------------------------------- + PRE/POST wrappers for s390x/Linux-specific syscalls + ------------------------------------------------------------------ */ +@@ -317,7 +190,6 @@ static SysRes do_clone ( ThreadId ptid, + + DECL_TEMPLATE(s390x_linux, sys_ptrace); + DECL_TEMPLATE(s390x_linux, sys_mmap); +-DECL_TEMPLATE(s390x_linux, sys_clone); + DECL_TEMPLATE(s390x_linux, sys_sigreturn); + DECL_TEMPLATE(s390x_linux, sys_rt_sigreturn); + DECL_TEMPLATE(s390x_linux, sys_fadvise64); +@@ -452,99 +324,6 @@ PRE(sys_mmap) + SET_STATUS_from_SysRes(r); + } + +-PRE(sys_clone) +-{ +- UInt cloneflags; +- +- PRINT("sys_clone ( %lx, %#lx, %#lx, %#lx, %#lx )",ARG1,ARG2,ARG3,ARG4, ARG5); +- PRE_REG_READ2(int, "clone", +- void *, child_stack, +- unsigned long, flags); +- +- if (ARG2 & VKI_CLONE_PARENT_SETTID) { +- if (VG_(tdict).track_pre_reg_read) +- PRA3("clone(parent_tidptr)", int *, parent_tidptr); +- PRE_MEM_WRITE("clone(parent_tidptr)", ARG3, sizeof(Int)); +- if (!VG_(am_is_valid_for_client)(ARG3, sizeof(Int), +- VKI_PROT_WRITE)) { +- SET_STATUS_Failure( VKI_EFAULT ); +- return; +- } +- } +- if (ARG2 & (VKI_CLONE_CHILD_SETTID | VKI_CLONE_CHILD_CLEARTID)) { +- if (VG_(tdict).track_pre_reg_read) +- PRA4("clone(child_tidptr)", int *, child_tidptr); +- PRE_MEM_WRITE("clone(child_tidptr)", ARG4, sizeof(Int)); +- if (!VG_(am_is_valid_for_client)(ARG4, sizeof(Int), +- VKI_PROT_WRITE)) { +- SET_STATUS_Failure( VKI_EFAULT ); +- return; +- } +- } +- +- /* The kernel simply copies reg6 (ARG5) into AR0 and AR1, no checks */ +- if (ARG2 & VKI_CLONE_SETTLS) { +- if (VG_(tdict).track_pre_reg_read) { +- PRA5("clone", Addr, tlsinfo); +- } +- } +- +- cloneflags = ARG2; +- +- if (!ML_(client_signal_OK)(ARG2 & VKI_CSIGNAL)) { +- SET_STATUS_Failure( VKI_EINVAL ); +- return; +- } +- +- /* Only look at the flags we really care about */ +- switch (cloneflags & (VKI_CLONE_VM | VKI_CLONE_FS +- | VKI_CLONE_FILES | VKI_CLONE_VFORK)) { +- case VKI_CLONE_VM | VKI_CLONE_FS | VKI_CLONE_FILES: +- /* thread creation */ +- SET_STATUS_from_SysRes( +- do_clone(tid, +- (Addr)ARG1, /* child SP */ +- ARG2, /* flags */ +- (Int *)ARG3, /* parent_tidptr */ +- (Int *)ARG4, /* child_tidptr */ +- (Addr)ARG5)); /* tlsaddr */ +- break; +- +- case VKI_CLONE_VFORK | VKI_CLONE_VM: /* vfork */ +- /* FALLTHROUGH - assume vfork == fork */ +- cloneflags &= ~(VKI_CLONE_VFORK | VKI_CLONE_VM); +- +- case 0: /* plain fork */ +- SET_STATUS_from_SysRes( +- ML_(do_fork_clone)(tid, +- cloneflags, /* flags */ +- (Int *)ARG3, /* parent_tidptr */ +- (Int *)ARG4)); /* child_tidptr */ +- break; +- +- default: +- /* should we just ENOSYS? */ +- VG_(message)(Vg_UserMsg, "Unsupported clone() flags: 0x%lx\n", ARG2); +- VG_(message)(Vg_UserMsg, "\n"); +- VG_(message)(Vg_UserMsg, "The only supported clone() uses are:\n"); +- VG_(message)(Vg_UserMsg, " - via a threads library (NPTL)\n"); +- VG_(message)(Vg_UserMsg, " - via the implementation of fork or vfork\n"); +- VG_(unimplemented) +- ("Valgrind does not support general clone()."); +- } +- +- if (SUCCESS) { +- if (ARG2 & VKI_CLONE_PARENT_SETTID) +- POST_MEM_WRITE(ARG3, sizeof(Int)); +- if (ARG2 & (VKI_CLONE_CHILD_SETTID | VKI_CLONE_CHILD_CLEARTID)) +- POST_MEM_WRITE(ARG4, sizeof(Int)); +- +- /* Thread creation was successful; let the child have the chance +- to run */ +- *flags |= SfYieldAfter; +- } +-} +- + PRE(sys_sigreturn) + { + ThreadState* tst; +@@ -775,7 +554,7 @@ static SyscallTableEntry syscall_table[] = { + GENX_(__NR_fsync, sys_fsync), // 118 + PLAX_(__NR_sigreturn, sys_sigreturn), // 119 + +- PLAX_(__NR_clone, sys_clone), // 120 ++ LINX_(__NR_clone, sys_clone), // 120 + // ?????(__NR_setdomainname, ), // 121 + GENXY(__NR_uname, sys_newuname), // 122 + GENX_(123, sys_ni_syscall), /* unimplemented (by the kernel) */ // 123 +diff --git a/coregrind/m_syswrap/syswrap-tilegx-linux.c b/coregrind/m_syswrap/syswrap-tilegx-linux.c +index 7501b20..05d81e8 100644 +--- a/coregrind/m_syswrap/syswrap-tilegx-linux.c ++++ b/coregrind/m_syswrap/syswrap-tilegx-linux.c +@@ -224,14 +224,7 @@ void ML_(call_on_new_stack_0_1) (Addr stack, Addr retaddr, + #define __NR_CLONE VG_STRINGIFY(__NR_clone) + #define __NR_EXIT VG_STRINGIFY(__NR_exit) + +-Long do_syscall_clone_tilegx_linux ( Word (*fn) (void *), //r0 +- void *stack, //r1 +- Long flags, //r2 +- void *arg, //r3 +- Long * child_tid, //r4 +- Long * parent_tid, //r5 +- Long tls ); //r6 +- /* ++ /* + stack + high -> 4 r29 + 3 +@@ -239,6 +232,7 @@ Long do_syscall_clone_tilegx_linux ( Word (*fn) (void *), //r0 + 1 r10 + low -> 0 lr <- sp + */ ++// See priv_syswrap-linux.h for arg profile. + asm ( + ".text\n" + " .globl do_syscall_clone_tilegx_linux\n" +@@ -315,101 +309,6 @@ Long do_syscall_clone_tilegx_linux ( Word (*fn) (void *), //r0 + #undef __NR_EXIT + + // forward declarations +-static void setup_child ( ThreadArchState *, ThreadArchState * ); +-static SysRes sys_set_tls ( ThreadId tid, Addr tlsptr ); +- /* +- When a client clones, we need to keep track of the new thread. This means: +- 1. allocate a ThreadId+ThreadState+stack for the thread +- 2. initialize the thread's new VCPU state +- 3. create the thread using the same args as the client requested, +- but using the scheduler entrypoint for IP, and a separate stack +- for SP. +- */ +-static SysRes do_clone ( ThreadId ptid, +- Long flags, Addr sp, +- Long * parent_tidptr, +- Long * child_tidptr, +- Addr child_tls ) +-{ +- const Bool debug = False; +- ThreadId ctid = VG_ (alloc_ThreadState) (); +- ThreadState * ptst = VG_ (get_ThreadState) (ptid); +- ThreadState * ctst = VG_ (get_ThreadState) (ctid); +- Long ret = 0; +- Long * stack; +- SysRes res; +- vki_sigset_t blockall, savedmask; +- +- VG_ (sigfillset) (&blockall); +- vg_assert (VG_ (is_running_thread) (ptid)); +- vg_assert (VG_ (is_valid_tid) (ctid)); +- stack = (Long *) ML_ (allocstack) (ctid); +- if (stack == NULL) { +- res = VG_ (mk_SysRes_Error) (VKI_ENOMEM); +- goto out; +- } +- setup_child (&ctst->arch, &ptst->arch); +- +- /* On TILEGX we need to set r0 and r3 to zero */ +- ctst->arch.vex.guest_r0 = 0; +- ctst->arch.vex.guest_r3 = 0; +- if (sp != 0) +- ctst->arch.vex.guest_r54 = sp; +- +- ctst->os_state.parent = ptid; +- ctst->sig_mask = ptst->sig_mask; +- ctst->tmp_sig_mask = ptst->sig_mask; +- +- /* Start the child with its threadgroup being the same as the +- parent's. This is so that any exit_group calls that happen +- after the child is created but before it sets its +- os_state.threadgroup field for real (in thread_wrapper in +- syswrap-linux.c), really kill the new thread. a.k.a this avoids +- a race condition in which the thread is unkillable (via +- exit_group) because its threadgroup is not set. The race window +- is probably only a few hundred or a few thousand cycles long. +- See #226116. */ +- +- ctst->os_state.threadgroup = ptst->os_state.threadgroup; +- ML_(guess_and_register_stack) (sp, ctst); +- +- VG_TRACK (pre_thread_ll_create, ptid, ctid); +- if (flags & VKI_CLONE_SETTLS) { +- if (debug) +- VG_(printf)("clone child has SETTLS: tls at %#lx\n", child_tls); +- ctst->arch.vex.guest_r53 = child_tls; +- res = sys_set_tls(ctid, child_tls); +- if (sr_isError(res)) +- goto out; +- } +- +- flags &= ~VKI_CLONE_SETTLS; +- VG_ (sigprocmask) (VKI_SIG_SETMASK, &blockall, &savedmask); +- /* Create the new thread */ +- ret = do_syscall_clone_tilegx_linux (ML_ (start_thread_NORETURN), +- stack, flags, &VG_ (threads)[ctid], +- child_tidptr, parent_tidptr, +- (Long)NULL /*child_tls*/); +- +- /* High half word64 is syscall return value. */ +- if (debug) +- VG_(printf)("ret: 0x%llx\n", (ULong)ret); +- +- res = VG_(mk_SysRes_tilegx_linux) (/*val */ ret); +- +- VG_ (sigprocmask) (VKI_SIG_SETMASK, &savedmask, NULL); +- +- out: +- if (sr_isError (res)) { +- VG_(cleanup_thread) (&ctst->arch); +- ctst->status = VgTs_Empty; +- VG_TRACK (pre_thread_ll_exit, ctid); +- } +- ptst->arch.vex.guest_r0 = 0; +- +- return res; +-} +- + extern Addr do_brk ( Addr newbrk ); + + extern +@@ -428,23 +327,6 @@ extern Bool linux_kernel_2_6_22(void); + void + VG_ (cleanup_thread) ( ThreadArchState * arch ) { } + +-void +-setup_child ( /*OUT*/ ThreadArchState * child, +- /*IN*/ ThreadArchState * parent ) +-{ +- /* We inherit our parent's guest state. */ +- child->vex = parent->vex; +- child->vex_shadow1 = parent->vex_shadow1; +- child->vex_shadow2 = parent->vex_shadow2; +-} +- +-SysRes sys_set_tls ( ThreadId tid, Addr tlsptr ) +-{ +- VG_(threads)[tid].arch.vex.guest_r53 = tlsptr; +- return VG_(mk_SysRes_Success)( 0 ); +-} +- +- + /* --------------------------------------------------------------------- + PRE/POST wrappers for tilegx/Linux-specific syscalls + ------------------------------------------------------------------ */ +@@ -457,7 +339,6 @@ SysRes sys_set_tls ( ThreadId tid, Addr tlsptr ) + aren't visible outside this file, but that requires even more macro + magic. */ + +-DECL_TEMPLATE (tilegx_linux, sys_clone); + DECL_TEMPLATE (tilegx_linux, sys_rt_sigreturn); + DECL_TEMPLATE (tilegx_linux, sys_socket); + DECL_TEMPLATE (tilegx_linux, sys_setsockopt); +@@ -496,94 +377,6 @@ DECL_TEMPLATE (tilegx_linux, sys_syscall184); + DECL_TEMPLATE (tilegx_linux, sys_cacheflush); + DECL_TEMPLATE (tilegx_linux, sys_set_dataplane); + +-PRE(sys_clone) +-{ +- ULong cloneflags; +- +- PRINT("sys_clone ( %lx, %#lx, %#lx, %#lx, %#lx )",ARG1,ARG2,ARG3,ARG4,ARG5); +- PRE_REG_READ5(int, "clone", +- unsigned long, flags, +- void *, child_stack, +- int *, parent_tidptr, +- int *, child_tidptr, +- void *, tlsaddr); +- +- if (ARG1 & VKI_CLONE_PARENT_SETTID) { +- PRE_MEM_WRITE("clone(parent_tidptr)", ARG3, sizeof(Int)); +- if (!VG_(am_is_valid_for_client)(ARG3, sizeof(Int), VKI_PROT_WRITE)) { +- SET_STATUS_Failure( VKI_EFAULT ); +- return; +- } +- } +- if (ARG1 & (VKI_CLONE_CHILD_SETTID | VKI_CLONE_CHILD_CLEARTID)) { +- PRE_MEM_WRITE("clone(child_tidptr)", ARG4, sizeof(Int)); +- if (!VG_(am_is_valid_for_client)(ARG4, sizeof(Int), VKI_PROT_WRITE)) { +- SET_STATUS_Failure( VKI_EFAULT ); +- return; +- } +- } +- +- cloneflags = ARG1; +- +- if (!ML_(client_signal_OK)(ARG1 & VKI_CSIGNAL)) { +- SET_STATUS_Failure( VKI_EINVAL ); +- return; +- } +- +- /* Only look at the flags we really care about */ +- switch (cloneflags & (VKI_CLONE_VM | VKI_CLONE_FS +- | VKI_CLONE_FILES | VKI_CLONE_VFORK)) { +- case VKI_CLONE_VM | VKI_CLONE_FS | VKI_CLONE_FILES: +- /* thread creation */ +- SET_STATUS_from_SysRes( +- do_clone(tid, +- ARG1, /* flags */ +- (Addr)ARG2, /* child ESP */ +- (Long *)ARG3, /* parent_tidptr */ +- (Long *)ARG4, /* child_tidptr */ +- (Addr)ARG5)); /* set_tls */ +- break; +- +- case VKI_CLONE_VFORK | VKI_CLONE_VM: /* vfork */ +- /* FALLTHROUGH - assume vfork == fork */ +- cloneflags &= ~(VKI_CLONE_VFORK | VKI_CLONE_VM); +- +- case 0: /* plain fork */ +- SET_STATUS_from_SysRes( +- ML_(do_fork_clone)(tid, +- cloneflags, /* flags */ +- (Int *)ARG3, /* parent_tidptr */ +- (Int *)ARG4)); /* child_tidptr */ +- break; +- +- default: +- /* should we just ENOSYS? */ +- VG_(message)(Vg_UserMsg, +- "Unsupported clone() flags: 0x%lx\n", ARG1); +- VG_(message)(Vg_UserMsg, +- "\n"); +- VG_(message)(Vg_UserMsg, +- "The only supported clone() uses are:\n"); +- VG_(message)(Vg_UserMsg, +- " - via a threads library (LinuxThreads or NPTL)\n"); +- VG_(message)(Vg_UserMsg, +- " - via the implementation of fork or vfork\n"); +- VG_(unimplemented) +- ("Valgrind does not support general clone()."); +- } +- +- if (SUCCESS) { +- if (ARG1 & VKI_CLONE_PARENT_SETTID) +- POST_MEM_WRITE(ARG3, sizeof(Int)); +- if (ARG1 & (VKI_CLONE_CHILD_SETTID | VKI_CLONE_CHILD_CLEARTID)) +- POST_MEM_WRITE(ARG4, sizeof(Int)); +- +- /* Thread creation was successful; let the child have the chance +- to run */ +- *flags |= SfYieldAfter; +- } +-} +- + PRE(sys_rt_sigreturn) + { + /* This isn't really a syscall at all - it's a misuse of the +@@ -1344,7 +1137,7 @@ static SyscallTableEntry syscall_table[] = { + LINX_(__NR_add_key, sys_add_key), // 217 + LINX_(__NR_request_key, sys_request_key), // 218 + LINXY(__NR_keyctl, sys_keyctl), // 219 +- PLAX_(__NR_clone, sys_clone), // 220 ++ LINX_(__NR_clone, sys_clone), // 220 + GENX_(__NR_execve, sys_execve), // 221 + PLAX_(__NR_mmap, sys_mmap), // 222 + GENXY(__NR_mprotect, sys_mprotect), // 226 +diff --git a/coregrind/m_syswrap/syswrap-x86-linux.c b/coregrind/m_syswrap/syswrap-x86-linux.c +index 0e5af98..f8c4eb4 100644 +--- a/coregrind/m_syswrap/syswrap-x86-linux.c ++++ b/coregrind/m_syswrap/syswrap-x86-linux.c +@@ -131,14 +131,7 @@ asm( + #define __NR_CLONE VG_STRINGIFY(__NR_clone) + #define __NR_EXIT VG_STRINGIFY(__NR_exit) + +-extern +-Int do_syscall_clone_x86_linux ( Word (*fn)(void *), +- void* stack, +- Int flags, +- void* arg, +- Int* child_tid, +- Int* parent_tid, +- vki_modify_ldt_t * ); ++// See priv_syswrap-linux.h for arg profile. + asm( + ".text\n" + ".globl do_syscall_clone_x86_linux\n" +@@ -191,141 +184,6 @@ asm( + #undef __NR_EXIT + + +-// forward declarations +-static void setup_child ( ThreadArchState*, ThreadArchState*, Bool ); +-static SysRes sys_set_thread_area ( ThreadId, vki_modify_ldt_t* ); +- +-/* +- When a client clones, we need to keep track of the new thread. This means: +- 1. allocate a ThreadId+ThreadState+stack for the thread +- +- 2. initialize the thread's new VCPU state +- +- 3. create the thread using the same args as the client requested, +- but using the scheduler entrypoint for EIP, and a separate stack +- for ESP. +- */ +-static SysRes do_clone ( ThreadId ptid, +- UInt flags, Addr esp, +- Int* parent_tidptr, +- Int* child_tidptr, +- vki_modify_ldt_t *tlsinfo) +-{ +- static const Bool debug = False; +- +- ThreadId ctid = VG_(alloc_ThreadState)(); +- ThreadState* ptst = VG_(get_ThreadState)(ptid); +- ThreadState* ctst = VG_(get_ThreadState)(ctid); +- UWord* stack; +- SysRes res; +- Int eax; +- vki_sigset_t blockall, savedmask; +- +- VG_(sigfillset)(&blockall); +- +- vg_assert(VG_(is_running_thread)(ptid)); +- vg_assert(VG_(is_valid_tid)(ctid)); +- +- stack = (UWord*)ML_(allocstack)(ctid); +- if (stack == NULL) { +- res = VG_(mk_SysRes_Error)( VKI_ENOMEM ); +- goto out; +- } +- +- /* Copy register state +- +- Both parent and child return to the same place, and the code +- following the clone syscall works out which is which, so we +- don't need to worry about it. +- +- The parent gets the child's new tid returned from clone, but the +- child gets 0. +- +- If the clone call specifies a NULL esp for the new thread, then +- it actually gets a copy of the parent's esp. +- */ +- /* Note: the clone call done by the Quadrics Elan3 driver specifies +- clone flags of 0xF00, and it seems to rely on the assumption +- that the child inherits a copy of the parent's GDT. +- setup_child takes care of setting that up. */ +- setup_child( &ctst->arch, &ptst->arch, True ); +- +- /* Make sys_clone appear to have returned Success(0) in the +- child. */ +- ctst->arch.vex.guest_EAX = 0; +- +- if (esp != 0) +- ctst->arch.vex.guest_ESP = esp; +- +- ctst->os_state.parent = ptid; +- +- /* inherit signal mask */ +- ctst->sig_mask = ptst->sig_mask; +- ctst->tmp_sig_mask = ptst->sig_mask; +- +- /* Start the child with its threadgroup being the same as the +- parent's. This is so that any exit_group calls that happen +- after the child is created but before it sets its +- os_state.threadgroup field for real (in thread_wrapper in +- syswrap-linux.c), really kill the new thread. a.k.a this avoids +- a race condition in which the thread is unkillable (via +- exit_group) because its threadgroup is not set. The race window +- is probably only a few hundred or a few thousand cycles long. +- See #226116. */ +- ctst->os_state.threadgroup = ptst->os_state.threadgroup; +- +- ML_(guess_and_register_stack) (esp, ctst); +- +- /* Assume the clone will succeed, and tell any tool that wants to +- know that this thread has come into existence. We cannot defer +- it beyond this point because sys_set_thread_area, just below, +- causes tCheck to assert by making references to the new ThreadId +- if we don't state the new thread exists prior to that point. +- If the clone fails, we'll send out a ll_exit notification for it +- at the out: label below, to clean up. */ +- vg_assert(VG_(owns_BigLock_LL)(ptid)); +- VG_TRACK ( pre_thread_ll_create, ptid, ctid ); +- +- if (flags & VKI_CLONE_SETTLS) { +- if (debug) +- VG_(printf)("clone child has SETTLS: tls info at %p: idx=%u " +- "base=%#lx limit=%x; esp=%#x fs=%x gs=%x\n", +- tlsinfo, tlsinfo->entry_number, +- tlsinfo->base_addr, tlsinfo->limit, +- ptst->arch.vex.guest_ESP, +- ctst->arch.vex.guest_FS, ctst->arch.vex.guest_GS); +- res = sys_set_thread_area(ctid, tlsinfo); +- if (sr_isError(res)) +- goto out; +- } +- +- flags &= ~VKI_CLONE_SETTLS; +- +- /* start the thread with everything blocked */ +- VG_(sigprocmask)(VKI_SIG_SETMASK, &blockall, &savedmask); +- +- /* Create the new thread */ +- eax = do_syscall_clone_x86_linux( +- ML_(start_thread_NORETURN), stack, flags, &VG_(threads)[ctid], +- child_tidptr, parent_tidptr, NULL +- ); +- res = VG_(mk_SysRes_x86_linux)( eax ); +- +- VG_(sigprocmask)(VKI_SIG_SETMASK, &savedmask, NULL); +- +- out: +- if (sr_isError(res)) { +- /* clone failed */ +- VG_(cleanup_thread)(&ctst->arch); +- ctst->status = VgTs_Empty; +- /* oops. Better tell the tool the thread exited in a hurry :-) */ +- VG_TRACK( pre_thread_ll_exit, ctid ); +- } +- +- return res; +-} +- +- + /* --------------------------------------------------------------------- + LDT/GDT simulation + ------------------------------------------------------------------ */ +@@ -630,7 +488,7 @@ static SysRes sys_modify_ldt ( ThreadId tid, + } + + +-static SysRes sys_set_thread_area ( ThreadId tid, vki_modify_ldt_t* info ) ++SysRes ML_(x86_sys_set_thread_area) ( ThreadId tid, vki_modify_ldt_t* info ) + { + Int idx; + VexGuestX86SegDescr* gdt; +@@ -738,15 +596,9 @@ void VG_(cleanup_thread) ( ThreadArchState* arch ) + } + + +-static void setup_child ( /*OUT*/ ThreadArchState *child, +- /*IN*/ ThreadArchState *parent, +- Bool inherit_parents_GDT ) ++void ML_(x86_setup_LDT_GDT) ( /*OUT*/ ThreadArchState *child, ++ /*IN*/ ThreadArchState *parent ) + { +- /* We inherit our parent's guest state. */ +- child->vex = parent->vex; +- child->vex_shadow1 = parent->vex_shadow1; +- child->vex_shadow2 = parent->vex_shadow2; +- + /* We inherit our parent's LDT. */ + if (parent->vex.guest_LDT == (HWord)NULL) { + /* We hope this is the common case. */ +@@ -763,7 +615,7 @@ static void setup_child ( /*OUT*/ ThreadArchState *child, + only). */ + child->vex.guest_GDT = (HWord)NULL; + +- if (inherit_parents_GDT && parent->vex.guest_GDT != (HWord)NULL) { ++ if (parent->vex.guest_GDT != (HWord)NULL) { + child->vex.guest_GDT = (HWord)alloc_zeroed_x86_GDT(); + copy_GDT_from_to( (VexGuestX86SegDescr*)parent->vex.guest_GDT, + (VexGuestX86SegDescr*)child->vex.guest_GDT ); +@@ -787,7 +639,6 @@ DECL_TEMPLATE(x86_linux, sys_stat64); + DECL_TEMPLATE(x86_linux, sys_fstatat64); + DECL_TEMPLATE(x86_linux, sys_fstat64); + DECL_TEMPLATE(x86_linux, sys_lstat64); +-DECL_TEMPLATE(x86_linux, sys_clone); + DECL_TEMPLATE(x86_linux, old_mmap); + DECL_TEMPLATE(x86_linux, sys_mmap2); + DECL_TEMPLATE(x86_linux, sys_sigreturn); +@@ -835,137 +686,6 @@ PRE(old_select) + } + } + +-PRE(sys_clone) +-{ +- UInt cloneflags; +- Bool badarg = False; +- +- PRINT("sys_clone ( %lx, %#lx, %#lx, %#lx, %#lx )",ARG1,ARG2,ARG3,ARG4,ARG5); +- PRE_REG_READ2(int, "clone", +- unsigned long, flags, +- void *, child_stack); +- +- if (ARG1 & VKI_CLONE_PARENT_SETTID) { +- if (VG_(tdict).track_pre_reg_read) { +- PRA3("clone", int *, parent_tidptr); +- } +- PRE_MEM_WRITE("clone(parent_tidptr)", ARG3, sizeof(Int)); +- if (!VG_(am_is_valid_for_client)(ARG3, sizeof(Int), +- VKI_PROT_WRITE)) { +- badarg = True; +- } +- } +- if (ARG1 & VKI_CLONE_SETTLS) { +- if (VG_(tdict).track_pre_reg_read) { +- PRA4("clone", vki_modify_ldt_t *, tlsinfo); +- } +- PRE_MEM_READ("clone(tlsinfo)", ARG4, sizeof(vki_modify_ldt_t)); +- if (!VG_(am_is_valid_for_client)(ARG4, sizeof(vki_modify_ldt_t), +- VKI_PROT_READ)) { +- badarg = True; +- } +- } +- if (ARG1 & (VKI_CLONE_CHILD_SETTID | VKI_CLONE_CHILD_CLEARTID)) { +- if (VG_(tdict).track_pre_reg_read) { +- PRA5("clone", int *, child_tidptr); +- } +- PRE_MEM_WRITE("clone(child_tidptr)", ARG5, sizeof(Int)); +- if (!VG_(am_is_valid_for_client)(ARG5, sizeof(Int), +- VKI_PROT_WRITE)) { +- badarg = True; +- } +- } +- +- if (badarg) { +- SET_STATUS_Failure( VKI_EFAULT ); +- return; +- } +- +- cloneflags = ARG1; +- +- if (!ML_(client_signal_OK)(ARG1 & VKI_CSIGNAL)) { +- SET_STATUS_Failure( VKI_EINVAL ); +- return; +- } +- +- /* Be ultra-paranoid and filter out any clone-variants we don't understand: +- - ??? specifies clone flags of 0x100011 +- - ??? specifies clone flags of 0x1200011. +- - NPTL specifies clone flags of 0x7D0F00. +- - The Quadrics Elan3 driver specifies clone flags of 0xF00. +- - Newer Quadrics Elan3 drivers with NTPL support specify 0x410F00. +- Everything else is rejected. +- */ +- if ( +- 1 || +- /* 11 Nov 05: for the time being, disable this ultra-paranoia. +- The switch below probably does a good enough job. */ +- (cloneflags == 0x100011 || cloneflags == 0x1200011 +- || cloneflags == 0x7D0F00 +- || cloneflags == 0x790F00 +- || cloneflags == 0x3D0F00 +- || cloneflags == 0x410F00 +- || cloneflags == 0xF00 +- || cloneflags == 0xF21)) { +- /* OK */ +- } +- else { +- /* Nah. We don't like it. Go away. */ +- goto reject; +- } +- +- /* Only look at the flags we really care about */ +- switch (cloneflags & (VKI_CLONE_VM | VKI_CLONE_FS +- | VKI_CLONE_FILES | VKI_CLONE_VFORK)) { +- case VKI_CLONE_VM | VKI_CLONE_FS | VKI_CLONE_FILES: +- /* thread creation */ +- SET_STATUS_from_SysRes( +- do_clone(tid, +- ARG1, /* flags */ +- (Addr)ARG2, /* child ESP */ +- (Int *)ARG3, /* parent_tidptr */ +- (Int *)ARG5, /* child_tidptr */ +- (vki_modify_ldt_t *)ARG4)); /* set_tls */ +- break; +- +- case VKI_CLONE_VFORK | VKI_CLONE_VM: /* vfork */ +- /* FALLTHROUGH - assume vfork == fork */ +- cloneflags &= ~(VKI_CLONE_VFORK | VKI_CLONE_VM); +- +- case 0: /* plain fork */ +- SET_STATUS_from_SysRes( +- ML_(do_fork_clone)(tid, +- cloneflags, /* flags */ +- (Int *)ARG3, /* parent_tidptr */ +- (Int *)ARG5)); /* child_tidptr */ +- break; +- +- default: +- reject: +- /* should we just ENOSYS? */ +- VG_(message)(Vg_UserMsg, "\n"); +- VG_(message)(Vg_UserMsg, "Unsupported clone() flags: 0x%lx\n", ARG1); +- VG_(message)(Vg_UserMsg, "\n"); +- VG_(message)(Vg_UserMsg, "The only supported clone() uses are:\n"); +- VG_(message)(Vg_UserMsg, " - via a threads library (LinuxThreads or NPTL)\n"); +- VG_(message)(Vg_UserMsg, " - via the implementation of fork or vfork\n"); +- VG_(message)(Vg_UserMsg, " - for the Quadrics Elan3 user-space driver\n"); +- VG_(unimplemented) +- ("Valgrind does not support general clone()."); +- } +- +- if (SUCCESS) { +- if (ARG1 & VKI_CLONE_PARENT_SETTID) +- POST_MEM_WRITE(ARG3, sizeof(Int)); +- if (ARG1 & (VKI_CLONE_CHILD_SETTID | VKI_CLONE_CHILD_CLEARTID)) +- POST_MEM_WRITE(ARG5, sizeof(Int)); +- +- /* Thread creation was successful; let the child have the chance +- to run */ +- *flags |= SfYieldAfter; +- } +-} +- + PRE(sys_sigreturn) + { + /* See comments on PRE(sys_rt_sigreturn) in syswrap-amd64-linux.c for +@@ -1063,7 +783,7 @@ PRE(sys_set_thread_area) + PRE_MEM_READ( "set_thread_area(u_info)", ARG1, sizeof(vki_modify_ldt_t) ); + + /* "do" the syscall ourselves; the kernel never sees it */ +- SET_STATUS_from_SysRes( sys_set_thread_area( tid, (void *)ARG1 ) ); ++ SET_STATUS_from_SysRes( ML_(x86_sys_set_thread_area)( tid, (void *)ARG1 ) ); + } + + PRE(sys_get_thread_area) +@@ -1553,7 +1273,7 @@ static SyscallTableEntry syscall_table[] = { + GENX_(__NR_fsync, sys_fsync), // 118 + PLAX_(__NR_sigreturn, sys_sigreturn), // 119 ?/Linux + +- PLAX_(__NR_clone, sys_clone), // 120 ++ LINX_(__NR_clone, sys_clone), // 120 + //zz // (__NR_setdomainname, sys_setdomainname), // 121 */*(?) + GENXY(__NR_uname, sys_newuname), // 122 + PLAX_(__NR_modify_ldt, sys_modify_ldt), // 123 +diff --git a/include/vki/vki-arm64-linux.h b/include/vki/vki-arm64-linux.h +index df34dd6..5a3b08f 100644 +--- a/include/vki/vki-arm64-linux.h ++++ b/include/vki/vki-arm64-linux.h +@@ -586,7 +586,8 @@ struct vki_ucontext { + //ZZ }; + //ZZ + //ZZ // [[Nb: for our convenience within Valgrind, use a more specific name]] +-//ZZ typedef struct vki_user_desc vki_modify_ldt_t; ++ ++typedef char vki_modify_ldt_t; + + //---------------------------------------------------------------------- + // From linux-3.10.5/include/asm-generic/ipcbuf.h +diff --git a/include/vki/vki-mips32-linux.h b/include/vki/vki-mips32-linux.h +index 5be8e15..b6c9914 100644 +--- a/include/vki/vki-mips32-linux.h ++++ b/include/vki/vki-mips32-linux.h +@@ -679,7 +679,7 @@ struct vki_ucontext { + }; + + // CAB: TODO +-typedef void vki_modify_ldt_t; ++typedef char vki_modify_ldt_t; + + //---------------------------------------------------------------------- + // From linux-2.6.35.5/include/asm-mips/ipcbuf.h +diff --git a/include/vki/vki-mips64-linux.h b/include/vki/vki-mips64-linux.h +index 26b8e9f..ca49b10 100644 +--- a/include/vki/vki-mips64-linux.h ++++ b/include/vki/vki-mips64-linux.h +@@ -710,6 +710,7 @@ struct vki_ucontext { + vki_sigset_t uc_sigmask; /* mask last for extensibility */ + }; + ++typedef char vki_modify_ldt_t; + //---------------------------------------------------------------------- + // From linux-2.6.35.9/include/asm-mips/ipcbuf.h + //---------------------------------------------------------------------- +diff --git a/include/vki/vki-ppc32-linux.h b/include/vki/vki-ppc32-linux.h +index 70c2835..0fd3c79 100644 +--- a/include/vki/vki-ppc32-linux.h ++++ b/include/vki/vki-ppc32-linux.h +@@ -811,10 +811,9 @@ struct vki_ucontext { + //.. }; + //.. + //.. // [[Nb: for our convenience within Valgrind, use a more specific name]] +-//.. typedef struct vki_user_desc vki_modify_ldt_t; + + // CAB: TODO +-typedef void vki_modify_ldt_t; ++typedef char vki_modify_ldt_t; + + + //---------------------------------------------------------------------- +diff --git a/include/vki/vki-ppc64-linux.h b/include/vki/vki-ppc64-linux.h +index b410663..fd5cea6 100644 +--- a/include/vki/vki-ppc64-linux.h ++++ b/include/vki/vki-ppc64-linux.h +@@ -685,6 +685,9 @@ struct vki_ucontext { + struct vki_sigcontext uc_mcontext; /* last for extensibility */ + }; + ++// CAB: TODO ++typedef char vki_modify_ldt_t; ++ + //---------------------------------------------------------------------- + // From linux-2.6.13/include/asm-ppc64/ipcbuf.h + //---------------------------------------------------------------------- +diff --git a/include/vki/vki-s390x-linux.h b/include/vki/vki-s390x-linux.h +index c3f6d00..1ef5cf7 100644 +--- a/include/vki/vki-s390x-linux.h ++++ b/include/vki/vki-s390x-linux.h +@@ -822,6 +822,8 @@ struct vki_ucontext { + vki_sigset_t uc_sigmask; /* mask last for extensibility */ + }; + ++typedef char vki_modify_ldt_t; ++ + //---------------------------------------------------------------------- + // From linux-2.6.16.60/include/asm-s390/ipcbuf.h + //---------------------------------------------------------------------- diff --git a/SOURCES/valgrind-3.12.0-deregister-stack.patch b/SOURCES/valgrind-3.12.0-deregister-stack.patch new file mode 100644 index 0000000..5fe4a11 --- /dev/null +++ b/SOURCES/valgrind-3.12.0-deregister-stack.patch @@ -0,0 +1,111 @@ +commit 2b49317b4f237ea5f648d8b958f96cd03fcabc7d +Author: philippe +Date: Mon Nov 28 19:34:06 2016 +0000 + + Fix 373046 - Stacks registered by core are never deregistered + + + git-svn-id: svn://svn.valgrind.org/valgrind/trunk@16159 a5019735-40e9-0310-863c-91ae7b9d1cf9 + +diff --git a/coregrind/m_scheduler/scheduler.c b/coregrind/m_scheduler/scheduler.c +index 0363898..49f51d6 100644 +--- a/coregrind/m_scheduler/scheduler.c ++++ b/coregrind/m_scheduler/scheduler.c +@@ -488,6 +488,7 @@ static void os_state_clear(ThreadState *tst) + { + tst->os_state.lwpid = 0; + tst->os_state.threadgroup = 0; ++ tst->os_state.stk_id = NULL_STK_ID; + # if defined(VGO_linux) + /* no other fields to clear */ + # elif defined(VGO_darwin) +@@ -504,7 +505,6 @@ static void os_state_clear(ThreadState *tst) + # if defined(VGP_x86_solaris) + tst->os_state.thrptr = 0; + # endif +- tst->os_state.stk_id = (UWord)-1; + tst->os_state.ustack = NULL; + tst->os_state.in_door_return = False; + tst->os_state.door_return_procedure = 0; +diff --git a/coregrind/m_syswrap/syswrap-generic.c b/coregrind/m_syswrap/syswrap-generic.c +index 6ef6a90..28972ae 100644 +--- a/coregrind/m_syswrap/syswrap-generic.c ++++ b/coregrind/m_syswrap/syswrap-generic.c +@@ -84,11 +84,14 @@ void ML_(guess_and_register_stack) (Addr sp, ThreadState* tst) + tst->client_stack_highest_byte = (Addr)VG_PGROUNDUP(sp)-1; + tst->client_stack_szB = tst->client_stack_highest_byte - seg->start + 1; + +- VG_(register_stack)(seg->start, tst->client_stack_highest_byte); ++ tst->os_state.stk_id ++ = VG_(register_stack)(seg->start, tst->client_stack_highest_byte); + + if (debug) +- VG_(printf)("tid %u: guessed client stack range [%#lx-%#lx]\n", +- tst->tid, seg->start, tst->client_stack_highest_byte); ++ VG_(printf)("tid %u: guessed client stack range [%#lx-%#lx]" ++ " as stk_id %lu\n", ++ tst->tid, seg->start, tst->client_stack_highest_byte, ++ tst->os_state.stk_id); + } else { + VG_(message)(Vg_UserMsg, + "!? New thread %u starts with SP(%#lx) unmapped\n", +diff --git a/coregrind/m_syswrap/syswrap-linux.c b/coregrind/m_syswrap/syswrap-linux.c +index af10b92..725ad78 100644 +--- a/coregrind/m_syswrap/syswrap-linux.c ++++ b/coregrind/m_syswrap/syswrap-linux.c +@@ -52,6 +52,7 @@ + #include "pub_core_options.h" + #include "pub_core_scheduler.h" + #include "pub_core_signals.h" ++#include "pub_core_stacks.h" + #include "pub_core_syscall.h" + #include "pub_core_syswrap.h" + #include "pub_core_inner.h" +@@ -162,6 +163,10 @@ static void run_a_thread_NORETURN ( Word tidW ) + c = VG_(count_living_threads)(); + vg_assert(c >= 1); /* stay sane */ + ++ /* Deregister thread's stack. */ ++ if (tst->os_state.stk_id != NULL_STK_ID) ++ VG_(deregister_stack)(tst->os_state.stk_id); ++ + // Tell the tool this thread is exiting + VG_TRACK( pre_thread_ll_exit, tid ); + +diff --git a/coregrind/pub_core_threadstate.h b/coregrind/pub_core_threadstate.h +index f3d956c..3307e75 100644 +--- a/coregrind/pub_core_threadstate.h ++++ b/coregrind/pub_core_threadstate.h +@@ -114,6 +114,8 @@ typedef + ThreadArchState; + + ++#define NULL_STK_ID (~(UWord)0) ++ + /* OS-specific thread state. IMPORTANT: if you add fields to this, + you _must_ add code to os_state_clear() to initialise those + fields. */ +@@ -129,6 +131,12 @@ typedef + Addr valgrind_stack_base; // Valgrind's stack (VgStack*) + Addr valgrind_stack_init_SP; // starting value for SP + ++ /* Client stack is registered as stk_id (on linux/darwin, by ++ ML_(guess_and_register_stack)). ++ Stack id NULL_STK_ID means that the user stack is not (yet) ++ registered. */ ++ UWord stk_id; ++ + /* exit details */ + Word exitcode; // in the case of exitgroup, set by someone else + Int fatalsig; // fatal signal +@@ -281,10 +289,6 @@ typedef + the 64-bit offset associated with a %fs value of zero. */ + # endif + +- /* Stack id (value (UWord)(-1) means that there is no stack). This +- tracks a stack that is set in restore_stack(). */ +- UWord stk_id; +- + /* Simulation of the kernel's lwp->lwp_ustack. Set in the PRE wrapper + of the getsetcontext syscall, for SETUSTACK. Used in + VG_(save_context)(), VG_(restore_context)() and diff --git a/SOURCES/valgrind-3.12.0-exit_group.patch b/SOURCES/valgrind-3.12.0-exit_group.patch new file mode 100644 index 0000000..bd07d3f --- /dev/null +++ b/SOURCES/valgrind-3.12.0-exit_group.patch @@ -0,0 +1,52 @@ +commit 18b3ffc1a8dc951d8a8cdb076e7e30aafc216571 +Author: philippe +Date: Sat Nov 19 14:54:44 2016 +0000 + + Fix 372504 Hanging on exit_group + + Note that it is unclear if the PRE syscall for rt_sigsuspend + is properly setting up a temporary mask in the thread state + tmp_sig_mask: if an handler is called while a thread is + calling sigsuspend, the mask during the handler run must be + the temporary mask set by sigsuspend. + It is not clear if/where the valgrind sigframe builder/handler + sets the tmp_sig_mask to the value as expected by the user + (i.e. the value of the temporary mask which was given to + the sigsuspend syscall) + + + + git-svn-id: svn://svn.valgrind.org/valgrind/trunk@16141 a5019735-40e9-0310-863c-91ae7b9d1cf9 + +diff --git a/coregrind/m_syswrap/syswrap-linux.c b/coregrind/m_syswrap/syswrap-linux.c +index 1dcb95d..fda8dd1 100644 +--- a/coregrind/m_syswrap/syswrap-linux.c ++++ b/coregrind/m_syswrap/syswrap-linux.c +@@ -3558,6 +3558,12 @@ PRE(sys_rt_sigsuspend) + PRE_REG_READ2(int, "rt_sigsuspend", vki_sigset_t *, mask, vki_size_t, size) + if (ARG1 != (Addr)NULL) { + PRE_MEM_READ( "rt_sigsuspend(mask)", ARG1, sizeof(vki_sigset_t) ); ++ VG_(sigdelset)((vki_sigset_t*)ARG1, VG_SIGVGKILL); ++ /* We cannot mask VG_SIGVGKILL, as otherwise this thread would not ++ be killable by VG_(nuke_all_threads_except). ++ We thus silently ignore the user request to mask this signal. ++ Note that this is similar to what is done for e.g. ++ sigprocmask (see m_signals.c calculate_SKSS_from_SCSS). */ + } + } + +diff --git a/coregrind/pub_core_threadstate.h b/coregrind/pub_core_threadstate.h +index 861f233..f3d956c 100644 +--- a/coregrind/pub_core_threadstate.h ++++ b/coregrind/pub_core_threadstate.h +@@ -354,7 +354,9 @@ typedef struct { + different values is during the execution of a sigsuspend, where + tmp_sig_mask is the temporary mask which sigsuspend installs. + It is only consulted to compute the signal mask applied to a +- signal handler. */ ++ signal handler. ++ PW Nov 2016 : it is not clear if and where this tmp_sig_mask ++ is set when an handler runs "inside" a sigsuspend. */ + vki_sigset_t tmp_sig_mask; + + /* A little signal queue for signals we can't get the kernel to diff --git a/SOURCES/valgrind-3.12.0-helgrind-dl_allocate_tls-supp.patch b/SOURCES/valgrind-3.12.0-helgrind-dl_allocate_tls-supp.patch new file mode 100644 index 0000000..339a839 --- /dev/null +++ b/SOURCES/valgrind-3.12.0-helgrind-dl_allocate_tls-supp.patch @@ -0,0 +1,47 @@ +commit 4b00bfdd73a2cd56a4d9e8de0b249eed2a1b982f +Author: petarj +Date: Fri Feb 3 00:34:52 2017 +0000 + + add suppression for helgrind/tests/tc22_exit_w_lock + + Function pthread_create indirectly calls function memcpy. Helgrind + considers that memcpy is not thread safe function. For error reported + from pthread_create there is the suppression helgrind---_dl_allocate_tls + in the file glibc-2.34567-NPTL-helgrind.supp. + Since glibc version 2.23, memcpy is implemented by __mempcpy_inline. + This causes that call to memcpy from pthread_create is no longer + recognized by the suppression. + In test helgrind/tests/tc22_exit_w_lock, pthread_create is called twice, + and second call reports error, which causes failing of the test. + This patch adds suppression for glibc 2.23 and greater. + + Patch by Tamara Vlahovic. + + Related issue #375806. + + + git-svn-id: svn://svn.valgrind.org/valgrind/trunk@16219 a5019735-40e9-0310-863c-91ae7b9d1cf9 + +diff --git a/glibc-2.34567-NPTL-helgrind.supp b/glibc-2.34567-NPTL-helgrind.supp +index ed105b8..7ebd2c4 100644 +--- a/glibc-2.34567-NPTL-helgrind.supp ++++ b/glibc-2.34567-NPTL-helgrind.supp +@@ -267,6 +267,18 @@ + fun:pthread_create@* + } + ++{ ++ helgrind---_dl_allocate_tls2 ++ Helgrind:Race ++ fun:memcpy ++ fun:__mempcpy_inline ++ fun:_dl_allocate_tls_init ++ ... ++ fun:pthread_create@@GLIBC_2.2* ++ fun:pthread_create_WRK ++ fun:pthread_create@* ++} ++ + #################################################### + # To do with GNU libgomp + # diff --git a/SOURCES/valgrind-3.12.0-nocwd-cleanup.patch b/SOURCES/valgrind-3.12.0-nocwd-cleanup.patch new file mode 100644 index 0000000..fdb736d --- /dev/null +++ b/SOURCES/valgrind-3.12.0-nocwd-cleanup.patch @@ -0,0 +1,23 @@ +commit b02baf74e6c14cc6fcf1e4fa94f1a6734c9cffbe +Author: mjw +Date: Sat Nov 12 19:51:51 2016 +0000 + + Cleanup none/tests/nocwd.vgtest tmp dirs. + + The none/tests/nocwd creates a really deep temporary directory structure + that is also inaccessible after the test. This causes issues with some + build wrappers like koji which fail to cleanup such deep subdirectories. + So explicitly cleanup the directory after the test. + + https://bugzilla.redhat.com/show_bug.cgi?id=1390282 + + git-svn-id: svn://svn.valgrind.org/valgrind/trunk@16134 a5019735-40e9-0310-863c-91ae7b9d1cf9 + +diff --git a/none/tests/nocwd.vgtest b/none/tests/nocwd.vgtest +index 74e2b4a..f8d4c3b 100644 +--- a/none/tests/nocwd.vgtest ++++ b/none/tests/nocwd.vgtest +@@ -1,2 +1,3 @@ + prog: nocwd + vgopts: -q --trace-children=yes ++cleanup: chmod u+rwx /tmp/wd_test_*; rm -rf /tmp/wd_test_* diff --git a/SOURCES/valgrind-3.12.0-powerpc-register-pair.patch b/SOURCES/valgrind-3.12.0-powerpc-register-pair.patch new file mode 100644 index 0000000..7830863 --- /dev/null +++ b/SOURCES/valgrind-3.12.0-powerpc-register-pair.patch @@ -0,0 +1,73 @@ +commit 3f055b64899cc4b7c34f9ebdc4beb418a8bced07 +Author: carll +Date: Fri Mar 10 20:07:09 2017 +0000 + + PowerPC: Fix incorrect register pair check for lxv, stxv, stxsd, stxssp, lxsd, + lxssp instructions + + The lfdpx, stdpx, lfdp and stfdp instructions work on a register pair. The + register pair test must only be applied to these instructions in the + dis_fp_pair() function. + + bugzilla 377427 + + + + git-svn-id: svn://svn.valgrind.org/vex/trunk@3308 8f6e269a-dfd6-0310-a8e1-e2731360e62c + +diff --git a/VEX/priv/guest_ppc_toIR.c b/VEX/priv/guest_ppc_toIR.c +index b19dcbc..0d27389 100644 +--- a/VEX/priv/guest_ppc_toIR.c ++++ b/VEX/priv/guest_ppc_toIR.c +@@ -11310,13 +11310,16 @@ static Bool dis_fp_pair ( UInt theInstr ) + UChar b0 = ifieldBIT0(theInstr); + Bool is_load = 0; + +- if ((frT_hi_addr %2) != 0) { +- vex_printf("dis_fp_pair(ppc) : odd frT register\n"); +- return False; +- } +- + switch (opc1) { + case 0x1F: // register offset ++ /* These instructions work on a pair of registers. The specified ++ * register must be even. ++ */ ++ if ((frT_hi_addr %2) != 0) { ++ vex_printf("dis_fp_pair(ppc) ldpx or stdpx: odd frT register\n"); ++ return False; ++ } ++ + switch(opc2) { + case 0x317: // lfdpx (FP Load Double Pair X-form, ISA 2.05 p125) + DIP("ldpx fr%u,r%u,r%u\n", frT_hi_addr, rA_addr, rB_addr); +@@ -11346,6 +11349,14 @@ static Bool dis_fp_pair ( UInt theInstr ) + + switch(opc2) { + case 0x0: // lfdp (FP Load Double Pair DS-form, ISA 2.05 p125) ++ /* This instruction works on a pair of registers. The specified ++ * register must be even. ++ */ ++ if ((frT_hi_addr %2) != 0) { ++ vex_printf("dis_fp_pair(ppc) lfdp : odd frT register\n"); ++ return False; ++ } ++ + DIP("lfdp fr%u,%d(r%u)\n", frT_hi_addr, simm16, rA_addr); + assign( EA_hi, ea_rAor0_simm( rA_addr, simm16 ) ); + is_load = 1; +@@ -11390,6 +11401,14 @@ static Bool dis_fp_pair ( UInt theInstr ) + switch(opc2) { + case 0x0: + // stfdp (FP Store Double Pair DS-form, ISA 2.05 p125) ++ /* This instruction works on a pair of registers. The specified ++ * register must be even. ++ */ ++ if ((frT_hi_addr %2) != 0) { ++ vex_printf("dis_fp_pair(ppc) stfdp : odd frT register\n"); ++ return False; ++ } ++ + DIP("stfdp fr%u,%d(r%u)\n", frT_hi_addr, simm16, rA_addr); + assign( EA_hi, ea_rAor0_simm( rA_addr, simm16 ) ); + break; diff --git a/SOURCES/valgrind-3.12.0-ppc-xxsel.patch b/SOURCES/valgrind-3.12.0-ppc-xxsel.patch new file mode 100644 index 0000000..e27b8b6 --- /dev/null +++ b/SOURCES/valgrind-3.12.0-ppc-xxsel.patch @@ -0,0 +1,505 @@ +commit b8fbe1485567fb240404344533c16a82d53b868e +Author: carll +Date: Mon Nov 7 19:41:30 2016 +0000 + + Fix xxsel parsing error. + + The xxsel instruction uses part of the standard opc2 field to specify + a additional operand or other values. A subset of the field is used for + the actual opcode. The masking and array lookup was getting confused by + bits in the the additional operand field. The arrays were split so only + the opcodes that should be found for a given mask is in the array. This + also speeds up the search as you are not searching through values that + cannot match. The small groups of opcodes for a couple of the masks are + now done in a case statement as that is probably faster then doing an array + look up. + + Bugzilla 148000 + + + git-svn-id: svn://svn.valgrind.org/vex/trunk@3284 8f6e269a-dfd6-0310-a8e1-e2731360e62c + +diff --git a/VEX/priv/guest_ppc_toIR.c b/VEX/priv/guest_ppc_toIR.c +index c393740..c265645 100644 +--- a/VEX/priv/guest_ppc_toIR.c ++++ b/VEX/priv/guest_ppc_toIR.c +@@ -18146,7 +18146,7 @@ dis_vvec_cmp( UInt theInstr, UInt opc2 ) + assign( vB, getVSReg( XB ) ); + + switch (opc2) { +- case 0x18C: case 0x38C: // xvcmpeqdp[.] (VSX Vector Compare Equal To Double-Precision [ & Record ]) ++ case 0x18C: // xvcmpeqdp[.] (VSX Vector Compare Equal To Double-Precision [ & Record ]) + { + DIP("xvcmpeqdp%s crf%d,fr%u,fr%u\n", (flag_rC ? ".":""), + XT, XA, XB); +@@ -18154,7 +18154,7 @@ dis_vvec_cmp( UInt theInstr, UInt opc2 ) + break; + } + +- case 0x1CC: case 0x3CC: // xvcmpgedp[.] (VSX Vector Compare Greater Than or Equal To Double-Precision [ & Record ]) ++ case 0x1CC: // xvcmpgedp[.] (VSX Vector Compare Greater Than or Equal To Double-Precision [ & Record ]) + { + DIP("xvcmpgedp%s crf%d,fr%u,fr%u\n", (flag_rC ? ".":""), + XT, XA, XB); +@@ -18162,7 +18162,7 @@ dis_vvec_cmp( UInt theInstr, UInt opc2 ) + break; + } + +- case 0x1AC: case 0x3AC: // xvcmpgtdp[.] (VSX Vector Compare Greater Than Double-Precision [ & Record ]) ++ case 0x1AC: // xvcmpgtdp[.] (VSX Vector Compare Greater Than Double-Precision [ & Record ]) + { + DIP("xvcmpgtdp%s crf%d,fr%u,fr%u\n", (flag_rC ? ".":""), + XT, XA, XB); +@@ -18170,7 +18170,7 @@ dis_vvec_cmp( UInt theInstr, UInt opc2 ) + break; + } + +- case 0x10C: case 0x30C: // xvcmpeqsp[.] (VSX Vector Compare Equal To Single-Precision [ & Record ]) ++ case 0x10C: // xvcmpeqsp[.] (VSX Vector Compare Equal To Single-Precision [ & Record ]) + { + IRTemp vD = newTemp(Ity_V128); + +@@ -18184,7 +18184,7 @@ dis_vvec_cmp( UInt theInstr, UInt opc2 ) + break; + } + +- case 0x14C: case 0x34C: // xvcmpgesp[.] (VSX Vector Compare Greater Than or Equal To Single-Precision [ & Record ]) ++ case 0x14C: // xvcmpgesp[.] (VSX Vector Compare Greater Than or Equal To Single-Precision [ & Record ]) + { + IRTemp vD = newTemp(Ity_V128); + +@@ -18198,7 +18198,7 @@ dis_vvec_cmp( UInt theInstr, UInt opc2 ) + break; + } + +- case 0x12C: case 0x32C: //xvcmpgtsp[.] (VSX Vector Compare Greater Than Single-Precision [ & Record ]) ++ case 0x12C: //xvcmpgtsp[.] (VSX Vector Compare Greater Than Single-Precision [ & Record ]) + { + IRTemp vD = newTemp(Ity_V128); + +@@ -27043,17 +27043,93 @@ struct vsx_insn { + }; + + // ATTENTION: Keep this array sorted on the opcocde!!! +-static struct vsx_insn vsx_all[] = { +- { 0x0, "xsaddsp" }, +- { 0x4, "xsmaddasp" }, +- { 0x8, "xxsldwi" }, ++static struct vsx_insn vsx_xx2[] = { + { 0x14, "xsrsqrtesp" }, + { 0x16, "xssqrtsp" }, + { 0x18, "xxsel" }, ++ { 0x34, "xsresp" }, ++ { 0x90, "xscvdpuxws" }, ++ { 0x92, "xsrdpi" }, ++ { 0x94, "xsrsqrtedp" }, ++ { 0x96, "xssqrtdp" }, ++ { 0xb0, "xscvdpsxws" }, ++ { 0xb2, "xsrdpiz" }, ++ { 0xb4, "xsredp" }, ++ { 0xd2, "xsrdpip" }, ++ { 0xd4, "xstsqrtdp" }, ++ { 0xd6, "xsrdpic" }, ++ { 0xf2, "xsrdpim" }, ++ { 0x112, "xvrspi" }, ++ { 0x116, "xvsqrtsp" }, ++ { 0x130, "xvcvspsxws" }, ++ { 0x132, "xvrspiz" }, ++ { 0x134, "xvresp" }, ++ { 0x148, "xxspltw" }, ++ { 0x14A, "xxextractuw" }, ++ { 0x150, "xvcvuxwsp" }, ++ { 0x152, "xvrspip" }, ++ { 0x154, "xvtsqrtsp" }, ++ { 0x156, "xvrspic" }, ++ { 0x16A, "xxinsertw" }, ++ { 0x170, "xvcvsxwsp" }, ++ { 0x172, "xvrspim" }, ++ { 0x190, "xvcvdpuxws" }, ++ { 0x192, "xvrdpi" }, ++ { 0x194, "xvrsqrtedp" }, ++ { 0x196, "xvsqrtdp" }, ++ { 0x1b0, "xvcvdpsxws" }, ++ { 0x1b2, "xvrdpiz" }, ++ { 0x1b4, "xvredp" }, ++ { 0x1d0, "xvcvuxwdp" }, ++ { 0x1d2, "xvrdpip" }, ++ { 0x1d4, "xvtsqrtdp" }, ++ { 0x1d6, "xvrdpic" }, ++ { 0x1f0, "xvcvsxwdp" }, ++ { 0x1f2, "xvrdpim" }, ++ { 0x212, "xscvdpsp" }, ++ { 0x216, "xscvdpspn" }, ++ { 0x232, "xxrsp" }, ++ { 0x250, "xscvuxdsp" }, ++ { 0x254, "xststdcsp" }, ++ { 0x270, "xscvsxdsp" }, ++ { 0x290, "xscvdpuxds" }, ++ { 0x292, "xscvspdp" }, ++ { 0x296, "xscvspdpn" }, ++ { 0x2b0, "xscvdpsxds" }, ++ { 0x2b2, "xsabsdp" }, ++ { 0x2b6, "xsxexpdp_xsxigdp" }, ++ { 0x2d0, "xscvuxddp" }, ++ { 0x2d2, "xsnabsdp" }, ++ { 0x2d4, "xststdcdp" }, ++ { 0x2e4, "xsnmsubmdp" }, ++ { 0x2f0, "xscvsxddp" }, ++ { 0x2f2, "xsnegdp" }, ++ { 0x310, "xvcvspuxds" }, ++ { 0x312, "xvcvdpsp" }, ++ { 0x330, "xvcvspsxds" }, ++ { 0x332, "xvabssp" }, ++ { 0x350, "xvcvuxdsp" }, ++ { 0x352, "xvnabssp" }, ++ { 0x370, "xvcvsxdsp" }, ++ { 0x372, "xvnegsp" }, ++ { 0x390, "xvcvdpuxds" }, ++ { 0x392, "xvcvspdp" }, ++ { 0x3b0, "xvcvdpsxds" }, ++ { 0x3b2, "xvabsdp" }, ++ { 0x3b6, "xxbr[h|w|d|q]|xvxexpdp|xvxexpsp|xvxsigdp|xvxsigsp|xvcvhpsp|xvcvsphp|xscvdphp|xscvhpdp" }, ++ { 0x3d0, "xvcvuxddp" }, ++ { 0x3d2, "xvnabsdp" }, ++ { 0x3f2, "xvnegdp" } ++}; ++#define VSX_XX2_LEN (sizeof vsx_xx2 / sizeof *vsx_xx2) ++ ++// ATTENTION: Keep this array sorted on the opcocde!!! ++static struct vsx_insn vsx_xx3[] = { ++ { 0x0, "xsaddsp" }, ++ { 0x4, "xsmaddasp" }, ++ { 0x9, "xsmaddmsp" }, + { 0x20, "xssubsp" }, + { 0x24, "xsmaddmsp" }, +- { 0x28, "xxpermdi" }, +- { 0x34, "xsresp" }, + { 0x3A, "xxpermr" }, + { 0x40, "xsmulsp" }, + { 0x44, "xsmsubasp" }, +@@ -27064,174 +27140,112 @@ static struct vsx_insn vsx_all[] = { + { 0x80, "xsadddp" }, + { 0x84, "xsmaddadp" }, + { 0x8c, "xscmpudp" }, +- { 0x90, "xscvdpuxws" }, +- { 0x92, "xsrdpi" }, +- { 0x94, "xsrsqrtedp" }, +- { 0x96, "xssqrtdp" }, + { 0xa0, "xssubdp" }, + { 0xa4, "xsmaddmdp" }, + { 0xac, "xscmpodp" }, +- { 0xb0, "xscvdpsxws" }, +- { 0xb2, "xsrdpiz" }, +- { 0xb4, "xsredp" }, + { 0xc0, "xsmuldp" }, + { 0xc4, "xsmsubadp" }, + { 0xc8, "xxmrglw" }, +- { 0xd2, "xsrdpip" }, + { 0xd4, "xstsqrtdp" }, +- { 0xd6, "xsrdpic" }, + { 0xe0, "xsdivdp" }, + { 0xe4, "xsmsubmdp" }, + { 0xe8, "xxpermr" }, + { 0xeC, "xscmpexpdp" }, +- { 0xf2, "xsrdpim" }, + { 0xf4, "xstdivdp" }, + { 0x100, "xvaddsp" }, + { 0x104, "xvmaddasp" }, +- { 0x10c, "xvcmpeqsp" }, ++ { 0x10C, "xvcmpeqsp" }, + { 0x110, "xvcvspuxws" }, +- { 0x112, "xvrspi" }, + { 0x114, "xvrsqrtesp" }, +- { 0x116, "xvsqrtsp" }, + { 0x120, "xvsubsp" }, + { 0x124, "xvmaddmsp" }, +- { 0x12c, "xvcmpgtsp" }, + { 0x130, "xvcvspsxws" }, +- { 0x132, "xvrspiz" }, +- { 0x134, "xvresp" }, + { 0x140, "xvmulsp" }, + { 0x144, "xvmsubasp" }, +- { 0x148, "xxspltw" }, +- { 0x14A, "xxextractuw" }, +- { 0x14c, "xvcmpgesp" }, +- { 0x150, "xvcvuxwsp" }, +- { 0x152, "xvrspip" }, +- { 0x154, "xvtsqrtsp" }, +- { 0x156, "xvrspic" }, ++ { 0x14C, "xvcmpgesp", }, + { 0x160, "xvdivsp" }, + { 0x164, "xvmsubmsp" }, +- { 0x16A, "xxinsertw" }, +- { 0x170, "xvcvsxwsp" }, +- { 0x172, "xvrspim" }, + { 0x174, "xvtdivsp" }, + { 0x180, "xvadddp" }, + { 0x184, "xvmaddadp" }, +- { 0x18c, "xvcmpeqdp" }, +- { 0x190, "xvcvdpuxws" }, +- { 0x192, "xvrdpi" }, +- { 0x194, "xvrsqrtedp" }, +- { 0x196, "xvsqrtdp" }, ++ { 0x18C, "xvcmpeqdp" }, + { 0x1a0, "xvsubdp" }, + { 0x1a4, "xvmaddmdp" }, +- { 0x1ac, "xvcmpgtdp" }, +- { 0x1b0, "xvcvdpsxws" }, +- { 0x1b2, "xvrdpiz" }, +- { 0x1b4, "xvredp" }, ++ { 0x1aC, "xvcmpgtdp" }, + { 0x1c0, "xvmuldp" }, + { 0x1c4, "xvmsubadp" }, + { 0x1cc, "xvcmpgedp" }, +- { 0x1d0, "xvcvuxwdp" }, +- { 0x1d2, "xvrdpip" }, +- { 0x1d4, "xvtsqrtdp" }, +- { 0x1d6, "xvrdpic" }, + { 0x1e0, "xvdivdp" }, + { 0x1e4, "xvmsubmdp" }, +- { 0x1f0, "xvcvsxwdp" }, +- { 0x1f2, "xvrdpim" }, + { 0x1f4, "xvtdivdp" }, + { 0x204, "xsnmaddasp" }, + { 0x208, "xxland" }, +- { 0x212, "xscvdpsp" }, +- { 0x216, "xscvdpspn" }, + { 0x224, "xsnmaddmsp" }, + { 0x228, "xxlandc" }, +- { 0x232, "xxrsp" }, + { 0x244, "xsnmsubasp" }, + { 0x248, "xxlor" }, +- { 0x250, "xscvuxdsp" }, +- { 0x254, "xststdcsp" }, + { 0x264, "xsnmsubmsp" }, + { 0x268, "xxlxor" }, +- { 0x270, "xscvsxdsp" }, + { 0x280, "xsmaxdp" }, + { 0x284, "xsnmaddadp" }, + { 0x288, "xxlnor" }, +- { 0x290, "xscvdpuxds" }, +- { 0x292, "xscvspdp" }, +- { 0x296, "xscvspdpn" }, + { 0x2a0, "xsmindp" }, + { 0x2a4, "xsnmaddmdp" }, + { 0x2a8, "xxlorc" }, +- { 0x2b0, "xscvdpsxds" }, +- { 0x2b2, "xsabsdp" }, +- { 0x2b6, "xsxexpdp_xsxigdp" }, + { 0x2c0, "xscpsgndp" }, + { 0x2c4, "xsnmsubadp" }, + { 0x2c8, "xxlnand" }, +- { 0x2d0, "xscvuxddp" }, +- { 0x2d2, "xsnabsdp" }, +- { 0x2d4, "xststdcdp" }, + { 0x2e4, "xsnmsubmdp" }, + { 0x2e8, "xxleqv" }, +- { 0x2f0, "xscvsxddp" }, +- { 0x2f2, "xsnegdp" }, + { 0x300, "xvmaxsp" }, + { 0x304, "xvnmaddasp" }, +- { 0x30c, "xvcmpeqsp." }, +- { 0x310, "xvcvspuxds" }, +- { 0x312, "xvcvdpsp" }, + { 0x320, "xvminsp" }, + { 0x324, "xvnmaddmsp" }, +- { 0x32c, "xvcmpgtsp." }, +- { 0x330, "xvcvspsxds" }, +- { 0x332, "xvabssp" }, + { 0x340, "xvcpsgnsp" }, + { 0x344, "xvnmsubasp" }, +- { 0x34c, "xvcmpgesp." }, +- { 0x350, "xvcvuxdsp" }, +- { 0x352, "xvnabssp" }, +- { 0x354, "xvtstdcsp" }, + { 0x360, "xviexpsp" }, + { 0x364, "xvnmsubmsp" }, +- { 0x370, "xvcvsxdsp" }, +- { 0x372, "xvnegsp" }, + { 0x380, "xvmaxdp" }, + { 0x384, "xvnmaddadp" }, +- { 0x38c, "xvcmpeqdp." }, +- { 0x390, "xvcvdpuxds" }, +- { 0x392, "xvcvspdp" }, +- { 0x396, "xsiexpdp" }, + { 0x3a0, "xvmindp" }, + { 0x3a4, "xvnmaddmdp" }, +- { 0x3ac, "xvcmpgtdp." }, +- { 0x3b0, "xvcvdpsxds" }, +- { 0x3b2, "xvabsdp" }, +- { 0x3b6, "xxbr[h|w|d|q]|xvxexpdp|xvxexpsp|xvxsigdp|xvxsigsp|xvcvhpsp|xvcvsphp|xscvdphp|xscvhpdp" }, + { 0x3c0, "xvcpsgndp" }, + { 0x3c4, "xvnmsubadp" }, +- { 0x3cc, "xvcmpgedp." }, +- { 0x3d0, "xvcvuxddp" }, +- { 0x3d2, "xvnabsdp" }, +- { 0x3d4, "xvtstdcdp" }, + { 0x3e0, "xviexpdp" }, + { 0x3e4, "xvnmsubmdp" }, + { 0x3f0, "xvcvsxddp" }, +- { 0x3f2, "xvnegdp" } + }; +-#define VSX_ALL_LEN (sizeof vsx_all / sizeof *vsx_all) ++#define VSX_XX3_LEN (sizeof vsx_xx3 / sizeof *vsx_xx3) + + +-// ATTENTION: This search function assumes vsx_all array is sorted. +-static Int findVSXextOpCode(UInt opcode) ++// ATTENTION: This search functions assumes vsx_all array is sorted. ++static Int findVSXextOpCode_xx2(UInt opcode) + { + Int low, mid, high; + low = 0; +- high = VSX_ALL_LEN - 1; ++ high = VSX_XX2_LEN - 1; + while (low <= high) { + mid = (low + high)/2; +- if (opcode < vsx_all[mid].opcode) ++ if (opcode < vsx_xx2[mid].opcode) + high = mid - 1; +- else if (opcode > vsx_all[mid].opcode) ++ else if (opcode > vsx_xx2[mid].opcode) ++ low = mid + 1; ++ else ++ return mid; ++ } ++ return -1; ++} ++ ++static Int findVSXextOpCode_xx3(UInt opcode) ++{ ++ Int low, mid, high; ++ low = 0; ++ high = VSX_XX3_LEN - 1; ++ while (low <= high) { ++ mid = (low + high)/2; ++ if (opcode < vsx_xx3[mid].opcode) ++ high = mid - 1; ++ else if (opcode > vsx_xx3[mid].opcode) + low = mid + 1; + else + return mid; +@@ -27244,31 +27258,68 @@ static Int findVSXextOpCode(UInt opcode) + * passed, and we then try to match it up with one of the VSX forms + * below. + */ +-static UInt get_VSX60_opc2(UInt opc2_full) ++static UInt get_VSX60_opc2(UInt opc2_full, UInt theInstr) + { +-#define XX2_MASK 0x000003FE ++#define XX2_1_MASK 0x000003FF // xsiexpdp specific ++#define XX2_2_MASK 0x000003FE + #define XX3_1_MASK 0x000003FC + #define XX3_2_MASK 0x000001FC +-#define XX3_3_MASK 0x0000007C +-#define XX4_MASK 0x00000018 +-#define VDCMX_MASK 0x000003B8 ++#define XX3_4_MASK 0x0000027C ++#define XX3_5_MASK 0x000003DC ++#define XX4_MASK 0x00000018 ++ + Int ret; + UInt vsxExtOpcode = 0; + +- if (( ret = findVSXextOpCode(opc2_full & XX2_MASK)) >= 0) +- vsxExtOpcode = vsx_all[ret].opcode; +- else if (( ret = findVSXextOpCode(opc2_full & XX3_1_MASK)) >= 0) +- vsxExtOpcode = vsx_all[ret].opcode; +- else if (( ret = findVSXextOpCode(opc2_full & VDCMX_MASK)) >= 0) +- vsxExtOpcode = vsx_all[ret].opcode; +- else if (( ret = findVSXextOpCode(opc2_full & XX3_2_MASK)) >= 0) +- vsxExtOpcode = vsx_all[ret].opcode; +- else if (( ret = findVSXextOpCode(opc2_full & XX3_3_MASK)) >= 0) +- vsxExtOpcode = vsx_all[ret].opcode; +- else if (( ret = findVSXextOpCode(opc2_full & XX4_MASK)) >= 0) +- vsxExtOpcode = vsx_all[ret].opcode; ++ if (( ret = findVSXextOpCode_xx2(opc2_full & XX2_2_MASK)) >= 0) ++ return vsx_xx2[ret].opcode; ++ else if ((opc2_full & XX2_1_MASK) == 0x396 ) // xsiexpdp ++ return 0x396; ++ else if (( ret = findVSXextOpCode_xx3(opc2_full & XX3_1_MASK)) >= 0) ++ return vsx_xx3[ret].opcode; ++ else { ++ ++ /* There are only a few codes in each of these cases it is ++ * probably faster to check for the codes then do the array lookups. ++ */ ++ vsxExtOpcode = opc2_full & XX3_2_MASK; ++ ++ switch (vsxExtOpcode) { ++ case 0x10C: return vsxExtOpcode; // xvcmpeqsp ++ case 0x12C: return vsxExtOpcode; // xvcmpgtsp, xvcmpgtsp. ++ case 0x14C: return vsxExtOpcode; // xvcmpgesp, xvcmpgesp. ++ case 0x18C: return vsxExtOpcode; // xvcmpeqdp, xvcmpeqdp. ++ case 0x1AC: return vsxExtOpcode; // xvcmpgtdp, xvcmpgtdp. ++ case 0x1CC: return vsxExtOpcode; // xvcmpgedp, xvcmpgedp. ++ default: break; ++ } + +- return vsxExtOpcode; ++ vsxExtOpcode = opc2_full & XX3_4_MASK; ++ ++ switch (vsxExtOpcode) { ++ case 0x8: return vsxExtOpcode; // xxsldwi ++ case 0x28: return vsxExtOpcode; // xxpermdi ++ default: break; ++ } ++ ++ vsxExtOpcode = opc2_full & XX3_5_MASK; ++ ++ switch (vsxExtOpcode) { ++ case 0x354: return vsxExtOpcode; // xvtstdcsp ++ case 0x3D4: return vsxExtOpcode; // xvtstdcdp ++ default: break; ++ } ++ ++ if (( opc2_full & XX4_MASK ) == XX4_MASK ) { // xxsel ++ vsxExtOpcode = 0x18; ++ return vsxExtOpcode; ++ } ++ } ++ ++ vex_printf( "Error: undefined opcode 0x %x, the instruction = 0x %x\n", ++ opc2_full, theInstr ); ++ vpanic( "ERROR: get_VSX60_opc2()\n" ); ++ return 0; + } + + /*------------------------------------------------------------*/ +@@ -27718,7 +27769,7 @@ DisResult disInstr_PPC_WRK ( + opc2 = ifieldOPClo10(theInstr); + UInt opc2hi = IFIELD(theInstr, 7, 4); + UInt opc2lo = IFIELD(theInstr, 3, 3); +- UInt vsxOpc2 = get_VSX60_opc2(opc2); ++ UInt vsxOpc2; + + if (( opc2hi == 13 ) && ( opc2lo == 5)) { //xvtstdcsp + if (dis_vxs_misc(theInstr, 0x354, allow_isa_3_0)) +@@ -27747,6 +27798,8 @@ DisResult disInstr_PPC_WRK ( + goto decode_failure; + } + ++ vsxOpc2 = get_VSX60_opc2(opc2, theInstr); ++ + switch (vsxOpc2) { + case 0x8: case 0x28: case 0x48: case 0xc8: // xxsldwi, xxpermdi, xxmrghw, xxmrglw + case 0x068: case 0xE8: // xxperm, xxpermr +@@ -27851,12 +27904,12 @@ DisResult disInstr_PPC_WRK ( + if (dis_vx_conv(theInstr, vsxOpc2)) goto decode_success; + goto decode_failure; + +- case 0x18C: case 0x38C: // xvcmpeqdp[.] +- case 0x10C: case 0x30C: // xvcmpeqsp[.] +- case 0x14C: case 0x34C: // xvcmpgesp[.] +- case 0x12C: case 0x32C: // xvcmpgtsp[.] +- case 0x1CC: case 0x3CC: // xvcmpgedp[.] +- case 0x1AC: case 0x3AC: // xvcmpgtdp[.] ++ case 0x18C: // xvcmpeqdp[.] ++ case 0x10C: // xvcmpeqsp[.] ++ case 0x14C: // xvcmpgesp[.] ++ case 0x12C: // xvcmpgtsp[.] ++ case 0x1CC: // xvcmpgedp[.] ++ case 0x1AC: // xvcmpgtdp[.] + if (dis_vvec_cmp(theInstr, vsxOpc2)) goto decode_success; + goto decode_failure; + diff --git a/SOURCES/valgrind-3.12.0-ppc64-isa-3_00.patch b/SOURCES/valgrind-3.12.0-ppc64-isa-3_00.patch new file mode 100644 index 0000000..b1e9ed4 --- /dev/null +++ b/SOURCES/valgrind-3.12.0-ppc64-isa-3_00.patch @@ -0,0 +1,54 @@ +PPC64: ISA 3.0 setup fixes. + +There is a typo in the configure.ac file that causes the HAS_ISA_3_00 +variable to not be set. + +The mask64 value is missing the HWCAPS bit for ISA3.0. +bugzilla +--- + VEX/priv/guest_ppc_toIR.c | 2 +- + configure.ac | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) + +diff --git a/VEX/priv/guest_ppc_toIR.c b/VEX/priv/guest_ppc_toIR.c +index 0d27389..6fede61 100644 +--- a/VEX/priv/guest_ppc_toIR.c ++++ b/VEX/priv/guest_ppc_toIR.c +@@ -29122,7 +29122,7 @@ DisResult disInstr_PPC ( IRSB* irsb_IN, + + mask64 = VEX_HWCAPS_PPC64_V | VEX_HWCAPS_PPC64_FX + | VEX_HWCAPS_PPC64_GX | VEX_HWCAPS_PPC64_VX | VEX_HWCAPS_PPC64_DFP +- | VEX_HWCAPS_PPC64_ISA2_07; ++ | VEX_HWCAPS_PPC64_ISA2_07 | VEX_HWCAPS_PPC64_ISA3_0; + + if (mode64) { + vassert((hwcaps_guest & mask32) == 0); +diff --git a/configure.ac b/configure.ac +index 587917b..4c3cc58 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -1537,7 +1537,7 @@ ac_asm_have_isa_3_00=no + AC_MSG_RESULT([no]) + ]) + +-AM_CONDITIONAL(HAS_ISA_3_00, test x$ac_asm_have_isa_3_00 = xyes \ ++AM_CONDITIONAL(HAS_ISA_3_00, [test x$ac_asm_have_isa_3_00 = xyes \ + -a x$HWCAP_HAS_ISA_3_00 = xyes]) + + # Check for pthread_create@GLIBC2.0 +-- +1.8.3.1 + +Only in valgrind-3.12.0: autom4te.cache +diff -ur valgrind-3.12.0.orig/configure valgrind-3.12.0/configure +--- valgrind-3.12.0.orig/configure 2016-12-16 16:52:17.101832444 +0100 ++++ valgrind-3.12.0/configure 2017-03-28 23:38:32.997776458 +0200 +@@ -8122,7 +8122,7 @@ + rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + + if test x$ac_asm_have_isa_3_00 = xyes \ +- -a x$HWCAP_HAS_ISA_3_00 = xyes]; then ++ -a x$HWCAP_HAS_ISA_3_00 = xyes; then + HAS_ISA_3_00_TRUE= + HAS_ISA_3_00_FALSE='#' + else diff --git a/SOURCES/valgrind-3.12.0-ppc64-r2.patch b/SOURCES/valgrind-3.12.0-ppc64-r2.patch new file mode 100644 index 0000000..f70043a --- /dev/null +++ b/SOURCES/valgrind-3.12.0-ppc64-r2.patch @@ -0,0 +1,52 @@ + + On ppc64*, R2 is the TOC pointer, should not be considered a + scratch register, and thus should not be in the clobber list. + This is called out in newer GCC releases and triggers a + compile time error. + + Thusly, remove R2 from the clobber list. + +diff --git a/coregrind/m_debuglog.c b/coregrind/m_debuglog.c +index dc6e26d..be77680 100644 +--- a/coregrind/m_debuglog.c ++++ b/coregrind/m_debuglog.c +@@ -215,7 +215,7 @@ static UInt local_sys_write_stderr ( const HChar* buf, Int n ) + : + : "b" (block) + : "cc","memory","cr0","ctr", +- "r0","r2","r3","r4","r5","r6","r7","r8","r9","r10","r11","r12" ++ "r0","r3","r4","r5","r6","r7","r8","r9","r10","r11","r12" + ); + if (block[0] < 0) + block[0] = -1; +@@ -231,7 +231,7 @@ static UInt local_sys_getpid ( void ) + : "=&r" (__res) + : "i" (__NR_getpid) + : "cc","memory","cr0","ctr", +- "r0","r2","r4","r5","r6","r7","r8","r9","r10","r11","r12" ++ "r0","r4","r5","r6","r7","r8","r9","r10","r11","r12" + ); + return (UInt)__res; + } +diff --git a/include/valgrind.h b/include/valgrind.h +index 6892007..d2e7c38 100644 +--- a/include/valgrind.h ++++ b/include/valgrind.h +@@ -2708,7 +2708,7 @@ typedef + #define __CALLER_SAVED_REGS \ + "lr", "ctr", "xer", \ + "cr0", "cr1", "cr2", "cr3", "cr4", "cr5", "cr6", "cr7", \ +- "r0", "r2", "r3", "r4", "r5", "r6", "r7", "r8", "r9", "r10", \ ++ "r0", "r3", "r4", "r5", "r6", "r7", "r8", "r9", "r10", \ + "r11", "r12", "r13" + + /* Macros to save and align the stack before making a function +@@ -3264,7 +3264,7 @@ typedef + #define __CALLER_SAVED_REGS \ + "lr", "ctr", "xer", \ + "cr0", "cr1", "cr2", "cr3", "cr4", "cr5", "cr6", "cr7", \ +- "r0", "r2", "r3", "r4", "r5", "r6", "r7", "r8", "r9", "r10", \ ++ "r0", "r3", "r4", "r5", "r6", "r7", "r8", "r9", "r10", \ + "r11", "r12", "r13" + + /* Macros to save and align the stack before making a function diff --git a/SOURCES/valgrind-3.12.0-quick-fatal-sigs.patch b/SOURCES/valgrind-3.12.0-quick-fatal-sigs.patch new file mode 100644 index 0000000..c9133fc --- /dev/null +++ b/SOURCES/valgrind-3.12.0-quick-fatal-sigs.patch @@ -0,0 +1,103 @@ +commit eee2c95b91b2fdcb36c0b1a2ab15df4a44ee2986 +Author: philippe +Date: Sat Nov 19 13:51:41 2016 +0000 + + Fix Bug 372600 - process loops forever when fatal signals are arriving quickly + + + + git-svn-id: svn://svn.valgrind.org/valgrind/trunk@16140 a5019735-40e9-0310-863c-91ae7b9d1cf9 + +diff --git a/coregrind/m_signals.c b/coregrind/m_signals.c +index 168b681..b398882 100644 +--- a/coregrind/m_signals.c ++++ b/coregrind/m_signals.c +@@ -2430,8 +2430,14 @@ void async_signalhandler ( Int sigNo, + info->si_code = sanitize_si_code(info->si_code); + + if (VG_(clo_trace_signals)) +- VG_(dmsg)("async signal handler: signal=%d, tid=%u, si_code=%d\n", +- sigNo, tid, info->si_code); ++ VG_(dmsg)("async signal handler: signal=%d, tid=%u, si_code=%d, " ++ "exitreason %s\n", ++ sigNo, tid, info->si_code, ++ VG_(name_of_VgSchedReturnCode)(tst->exitreason)); ++ ++ /* */ ++ if (tst->exitreason == VgSrc_FatalSig) ++ resume_scheduler(tid); + + /* Update thread state properly. The signal can only have been + delivered whilst we were in +@@ -2479,8 +2485,16 @@ void async_signalhandler ( Int sigNo, + ); + + /* (2) */ +- /* Set up the thread's state to deliver a signal */ +- if (!is_sig_ign(info, tid)) ++ /* Set up the thread's state to deliver a signal. ++ However, if exitreason is VgSrc_FatalSig, then thread tid was ++ taken out of a syscall by VG_(nuke_all_threads_except). ++ But after the emission of VKI_SIGKILL, another (fatal) async ++ signal might be sent. In such a case, we must not handle this ++ signal, as the thread is supposed to die first. ++ => resume the scheduler for such a thread, so that the scheduler ++ can let the thread die. */ ++ if (tst->exitreason != VgSrc_FatalSig ++ && !is_sig_ign(info, tid)) + deliver_signal(tid, info, uc); + + /* It's crucial that (1) and (2) happen in the order (1) then (2) +@@ -2946,6 +2960,20 @@ void VG_(poll_signals)(ThreadId tid) + ThreadState *tst = VG_(get_ThreadState)(tid); + vki_sigset_t saved_mask; + ++ if (tst->exitreason == VgSrc_FatalSig) { ++ /* This task has been requested to die due to a fatal signal ++ received by the process. So, we cannot poll new signals, ++ as we are supposed to die asap. If we would poll and deliver ++ a new (maybe fatal) signal, this could cause a deadlock, as ++ this thread would believe it has to terminate the other threads ++ and wait for them to die, while we already have a thread doing ++ that. */ ++ if (VG_(clo_trace_signals)) ++ VG_(dmsg)("poll_signals: not polling as thread %u is exitreason %s\n", ++ tid, VG_(name_of_VgSchedReturnCode)(tst->exitreason)); ++ return; ++ } ++ + /* look for all the signals this thread isn't blocking */ + /* pollset = ~tst->sig_mask */ + VG_(sigcomplementset)( &pollset, &tst->sig_mask ); +@@ -2961,15 +2989,18 @@ void VG_(poll_signals)(ThreadId tid) + /* If there was nothing queued, ask the kernel for a pending signal */ + if (sip == NULL && VG_(sigtimedwait_zero)(&pollset, &si) > 0) { + if (VG_(clo_trace_signals)) +- VG_(dmsg)("poll_signals: got signal %d for thread %u\n", +- si.si_signo, tid); ++ VG_(dmsg)("poll_signals: got signal %d for thread %u exitreason %s\n", ++ si.si_signo, tid, ++ VG_(name_of_VgSchedReturnCode)(tst->exitreason)); + sip = &si; + } + + if (sip != NULL) { + /* OK, something to do; deliver it */ + if (VG_(clo_trace_signals)) +- VG_(dmsg)("Polling found signal %d for tid %u\n", sip->si_signo, tid); ++ VG_(dmsg)("Polling found signal %d for tid %u exitreason %s\n", ++ sip->si_signo, tid, ++ VG_(name_of_VgSchedReturnCode)(tst->exitreason)); + if (!is_sig_ign(sip, tid)) + deliver_signal(tid, sip, NULL); + else if (VG_(clo_trace_signals)) +@@ -3073,7 +3104,8 @@ void VG_(sigstartup_actions) ( void ) + } + + if (VG_(clo_trace_signals)) +- VG_(dmsg)("Max kernel-supported signal is %d\n", VG_(max_signal)); ++ VG_(dmsg)("Max kernel-supported signal is %d, VG_SIGVGKILL is %d\n", ++ VG_(max_signal), VG_SIGVGKILL); + + /* Our private internal signals are treated as ignored */ + scss.scss_per_sig[VG_SIGVGKILL].scss_handler = VKI_SIG_IGN; diff --git a/SOURCES/valgrind-3.12.0-skip-cond-var.patch b/SOURCES/valgrind-3.12.0-skip-cond-var.patch new file mode 100644 index 0000000..ab15928 --- /dev/null +++ b/SOURCES/valgrind-3.12.0-skip-cond-var.patch @@ -0,0 +1,190 @@ +commit 88cf06207b074f387c04de4938a0bb20366616b0 +Author: mjw +Date: Fri Oct 21 00:02:10 2016 +0000 + + Add libc_test to workaround pth_cond_destroy_busy test hangs. + + This is a workaround for bug #371396. It adds a new test program + that can be used skip tests given a specific libc implementation + and optionally a specific minimum version. Currently only glibc + is recognized. This is used for the drd and helgrind tests + pth_cond_destroy_busy to be skipped on glibc 2.24.90+. + + git-svn-id: svn://svn.valgrind.org/valgrind/trunk@16097 a5019735-40e9-0310-863c-91ae7b9d1cf9 + +diff --git a/drd/tests/pth_cond_destroy_busy.vgtest b/drd/tests/pth_cond_destroy_busy.vgtest +index eafbd74..f3cf778 100644 +--- a/drd/tests/pth_cond_destroy_busy.vgtest ++++ b/drd/tests/pth_cond_destroy_busy.vgtest +@@ -1,2 +1,2 @@ +-prereq: ./supported_libpthread ++prereq: ./supported_libpthread && ! ../../tests/libc_test glibc 2.24.90 + prog: pth_cond_destroy_busy +diff --git a/helgrind/tests/pth_cond_destroy_busy.vgtest b/helgrind/tests/pth_cond_destroy_busy.vgtest +index 45d7853..2957cc3 100644 +--- a/helgrind/tests/pth_cond_destroy_busy.vgtest ++++ b/helgrind/tests/pth_cond_destroy_busy.vgtest +@@ -1,2 +1,2 @@ +-prereq: ! ../../tests/os_test darwin ++prereq: ! ../../tests/os_test darwin && ! ../../tests/libc_test glibc 2.24.90 + prog: ../../drd/tests/pth_cond_destroy_busy +diff --git a/tests/Makefile.am b/tests/Makefile.am +index 9c0cc3a..7233626 100644 +--- a/tests/Makefile.am ++++ b/tests/Makefile.am +@@ -44,6 +44,7 @@ noinst_HEADERS = \ + check_PROGRAMS = \ + arch_test \ + os_test \ ++ libc_test \ + true \ + x86_amd64_features \ + s390x_features \ +diff --git a/tests/libc_test.c b/tests/libc_test.c +new file mode 100644 +index 0000000..0de3d5d +--- /dev/null ++++ b/tests/libc_test.c +@@ -0,0 +1,78 @@ ++// Compare given libc name and version number to system name and version. ++ ++// Returns ++// - 0 if the libc name matches is at least the minimum version (if given). ++// - 1 if the libc name doesn't match or the version is lower than requested. ++// - 2 if the requested libc name isn't recognised. ++// - 3 if there was a usage error (it also prints an error message). ++ ++#include ++#include ++#include ++ ++#ifdef __GLIBC__ ++#include ++#endif ++ ++#define False 0 ++#define True 1 ++typedef int Bool; ++ ++/* Assumes the versions are x.y.z, with y and z optional. */ ++static Bool matches_version(char *min_version) { ++ int a1=0, a2=0, a3=0, g1=0, g2=0, g3=0; // 'a' = actual; 'g' = given ++ const char *aversion; ++ ++ if (min_version == NULL) return True; // no version specified ++ ++ // get actual version number ++#ifdef __GLIBC__ ++ aversion = gnu_get_libc_version(); ++#else ++ aversion = "unknown"; ++#endif ++ // We expect at least one number. ++ if (sscanf(aversion, "%d.%d.%d", &a1, &a2, &a3) < 1) return False; ++ ++ // parse given version number. ++ if (sscanf(min_version, "%d.%d.%d", &g1, &g2, &g3) < 1) return False; ++ ++ if (a1 > g1) return True; ++ if (a1 < g1) return False; ++ if (a2 > g2) return True; ++ if (a2 < g2) return False; ++ if (a3 >= g3) return True; ++ ++ return False; ++} ++ ++static Bool go(char* libc, char *min_version) ++{ ++#ifdef __GLIBC__ ++ if ( 0 == strcmp( libc, "glibc" ) ++ && matches_version( min_version )) ++ return True; ++#endif ++ ++ return False; ++} ++ ++//--------------------------------------------------------------------------- ++// main ++//--------------------------------------------------------------------------- ++int main(int argc, char **argv) ++{ ++ if ( argc < 2 ) { ++ fprintf( stderr, "usage: libc_test []\n" ); ++ exit(3); // Usage error. ++ } ++ if (go( argv[1], argv[2] )) { ++ return 0; // Matched. ++ } ++ ++ if ( 0 == strcmp ( argv[1], "glibc" ) ) { ++ return 1; // Requested libc name known, but this isn't it. ++ // Or it wasn't the minimum requested version. ++ } ++ return 2; // Didn't match any known libc name. ++} +Only in valgrind-3.12.0.RC2: autom4te.cache +diff -ur valgrind-3.12.0.RC2.orig/tests/Makefile.in valgrind-3.12.0.RC2/tests/Makefile.in +--- valgrind-3.12.0.RC2.orig/tests/Makefile.in 2016-10-21 02:10:24.283643034 +0200 ++++ valgrind-3.12.0.RC2/tests/Makefile.in 2016-10-21 02:11:09.668003685 +0200 +@@ -121,10 +121,11 @@ + @COMPILER_IS_CLANG_TRUE@ -Wno-uninitialized -Wno-unused-value # \ + @COMPILER_IS_CLANG_TRUE@ clang 3.0.0 + @COMPILER_IS_CLANG_TRUE@am__append_7 = -Wno-unused-private-field # drd/tests/tsan_unittest.cpp +-check_PROGRAMS = arch_test$(EXEEXT) os_test$(EXEEXT) true$(EXEEXT) \ +- x86_amd64_features$(EXEEXT) s390x_features$(EXEEXT) \ +- mips_features$(EXEEXT) power_insn_available$(EXEEXT) \ +- is_ppc64_BE$(EXEEXT) min_power_isa$(EXEEXT) ++check_PROGRAMS = arch_test$(EXEEXT) os_test$(EXEEXT) \ ++ libc_test$(EXEEXT) true$(EXEEXT) x86_amd64_features$(EXEEXT) \ ++ s390x_features$(EXEEXT) mips_features$(EXEEXT) \ ++ power_insn_available$(EXEEXT) is_ppc64_BE$(EXEEXT) \ ++ min_power_isa$(EXEEXT) + subdir = tests + ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 + am__aclocal_m4_deps = $(top_srcdir)/configure.ac +@@ -142,6 +143,9 @@ + is_ppc64_BE_SOURCES = is_ppc64_BE.c + is_ppc64_BE_OBJECTS = is_ppc64_BE.$(OBJEXT) + is_ppc64_BE_LDADD = $(LDADD) ++libc_test_SOURCES = libc_test.c ++libc_test_OBJECTS = libc_test.$(OBJEXT) ++libc_test_LDADD = $(LDADD) + min_power_isa_SOURCES = min_power_isa.c + min_power_isa_OBJECTS = min_power_isa-min_power_isa.$(OBJEXT) + min_power_isa_LDADD = $(LDADD) +@@ -201,10 +205,10 @@ + am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) + am__v_CCLD_0 = @echo " CCLD " $@; + am__v_CCLD_1 = +-SOURCES = arch_test.c is_ppc64_BE.c min_power_isa.c mips_features.c \ +- os_test.c power_insn_available.c s390x_features.c true.c \ +- x86_amd64_features.c +-DIST_SOURCES = arch_test.c is_ppc64_BE.c min_power_isa.c \ ++SOURCES = arch_test.c is_ppc64_BE.c libc_test.c min_power_isa.c \ ++ mips_features.c os_test.c power_insn_available.c \ ++ s390x_features.c true.c x86_amd64_features.c ++DIST_SOURCES = arch_test.c is_ppc64_BE.c libc_test.c min_power_isa.c \ + mips_features.c os_test.c power_insn_available.c \ + s390x_features.c true.c x86_amd64_features.c + am__can_run_installinfo = \ +@@ -681,6 +685,10 @@ + @rm -f is_ppc64_BE$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(is_ppc64_BE_OBJECTS) $(is_ppc64_BE_LDADD) $(LIBS) + ++libc_test$(EXEEXT): $(libc_test_OBJECTS) $(libc_test_DEPENDENCIES) $(EXTRA_libc_test_DEPENDENCIES) ++ @rm -f libc_test$(EXEEXT) ++ $(AM_V_CCLD)$(LINK) $(libc_test_OBJECTS) $(libc_test_LDADD) $(LIBS) ++ + min_power_isa$(EXEEXT): $(min_power_isa_OBJECTS) $(min_power_isa_DEPENDENCIES) $(EXTRA_min_power_isa_DEPENDENCIES) + @rm -f min_power_isa$(EXEEXT) + $(AM_V_CCLD)$(min_power_isa_LINK) $(min_power_isa_OBJECTS) $(min_power_isa_LDADD) $(LIBS) +@@ -717,6 +725,7 @@ + + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/arch_test.Po@am__quote@ + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/is_ppc64_BE.Po@am__quote@ ++@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libc_test.Po@am__quote@ + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/min_power_isa-min_power_isa.Po@am__quote@ + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mips_features.Po@am__quote@ + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/os_test.Po@am__quote@ diff --git a/SOURCES/valgrind-3.12.0-tests-cxx11_abi_0.patch b/SOURCES/valgrind-3.12.0-tests-cxx11_abi_0.patch new file mode 100644 index 0000000..271ed6b --- /dev/null +++ b/SOURCES/valgrind-3.12.0-tests-cxx11_abi_0.patch @@ -0,0 +1,85 @@ +commit 4e66d0f7ca6ef2cac6c303e761af605c82b78456 +Author: petarj +Date: Tue Jan 31 18:22:20 2017 +0000 + + force old implementation of std::string for leak_cpp_interior test + + This patch forces leak_cpp_interior to be compiled using old implementation + of std::string. + + Related issue #373069 + + Patch by Aleksandar Rikalo. + + + git-svn-id: svn://svn.valgrind.org/valgrind/trunk@16217 a5019735-40e9-0310-863c-91ae7b9d1cf9 + +diff --git a/memcheck/tests/leak_cpp_interior.cpp b/memcheck/tests/leak_cpp_interior.cpp +index f66fc89..a4b4824 100644 +--- a/memcheck/tests/leak_cpp_interior.cpp ++++ b/memcheck/tests/leak_cpp_interior.cpp +@@ -1,3 +1,4 @@ ++#define _GLIBCXX_USE_CXX11_ABI 0 + #define __STDC_FORMAT_MACROS + #include + #include +diff --git a/memcheck/tests/leak_cpp_interior.stderr.exp b/memcheck/tests/leak_cpp_interior.stderr.exp +index 3228f74..70e2764 100644 +--- a/memcheck/tests/leak_cpp_interior.stderr.exp ++++ b/memcheck/tests/leak_cpp_interior.stderr.exp +@@ -2,8 +2,8 @@ + valgrind output will go to log + VALGRIND_DO_LEAK_CHECK + 4 bytes in 1 blocks are definitely lost in loss record ... of ... +- by 0x........: doit() (leak_cpp_interior.cpp:115) +- by 0x........: main (leak_cpp_interior.cpp:130) ++ by 0x........: doit() (leak_cpp_interior.cpp:116) ++ by 0x........: main (leak_cpp_interior.cpp:131) + + LEAK SUMMARY: + definitely lost: 4 bytes in 1 blocks +diff --git a/memcheck/tests/leak_cpp_interior.stderr.exp-64bit b/memcheck/tests/leak_cpp_interior.stderr.exp-64bit +index 7a862a3..612fa3e 100644 +--- a/memcheck/tests/leak_cpp_interior.stderr.exp-64bit ++++ b/memcheck/tests/leak_cpp_interior.stderr.exp-64bit +@@ -2,8 +2,8 @@ + valgrind output will go to log + VALGRIND_DO_LEAK_CHECK + 8 bytes in 1 blocks are definitely lost in loss record ... of ... +- by 0x........: doit() (leak_cpp_interior.cpp:115) +- by 0x........: main (leak_cpp_interior.cpp:130) ++ by 0x........: doit() (leak_cpp_interior.cpp:116) ++ by 0x........: main (leak_cpp_interior.cpp:131) + + LEAK SUMMARY: + definitely lost: 8 bytes in 1 blocks +diff --git a/memcheck/tests/leak_cpp_interior.stderr.exp-64bit-solaris b/memcheck/tests/leak_cpp_interior.stderr.exp-64bit-solaris +index d53e4ce..f7e1a07 100644 +--- a/memcheck/tests/leak_cpp_interior.stderr.exp-64bit-solaris ++++ b/memcheck/tests/leak_cpp_interior.stderr.exp-64bit-solaris +@@ -2,8 +2,8 @@ + valgrind output will go to log + VALGRIND_DO_LEAK_CHECK + 8 bytes in 1 blocks are definitely lost in loss record ... of ... +- by 0x........: doit() (leak_cpp_interior.cpp:115) +- by 0x........: main (leak_cpp_interior.cpp:130) ++ by 0x........: doit() (leak_cpp_interior.cpp:116) ++ by 0x........: main (leak_cpp_interior.cpp:131) + + LEAK SUMMARY: + definitely lost: 8 bytes in 1 blocks +diff --git a/memcheck/tests/leak_cpp_interior.stderr.exp-solaris b/memcheck/tests/leak_cpp_interior.stderr.exp-solaris +index 80cd5c3..f9fc390 100644 +--- a/memcheck/tests/leak_cpp_interior.stderr.exp-solaris ++++ b/memcheck/tests/leak_cpp_interior.stderr.exp-solaris +@@ -2,8 +2,8 @@ + valgrind output will go to log + VALGRIND_DO_LEAK_CHECK + 4 bytes in 1 blocks are definitely lost in loss record ... of ... +- by 0x........: doit() (leak_cpp_interior.cpp:115) +- by 0x........: main (leak_cpp_interior.cpp:130) ++ by 0x........: doit() (leak_cpp_interior.cpp:116) ++ by 0x........: main (leak_cpp_interior.cpp:131) + + LEAK SUMMARY: + definitely lost: 4 bytes in 1 blocks diff --git a/SOURCES/valgrind-3.12.0-x86-gdt-and-ss.patch b/SOURCES/valgrind-3.12.0-x86-gdt-and-ss.patch new file mode 100644 index 0000000..fbaf984 --- /dev/null +++ b/SOURCES/valgrind-3.12.0-x86-gdt-and-ss.patch @@ -0,0 +1,139 @@ +commit c7bcd1f2ee2d466fb556bfc2b33c5ab039b0898d +Author: sewardj +Date: Fri Jan 20 09:58:15 2017 +0000 + + x86-linux: Initialize x86 system GDT on first use. Bug 344139 comment 3. + Patch from Sebastian Lackner, sebastian@fds-team.de. + + + git-svn-id: svn://svn.valgrind.org/valgrind/trunk@16204 a5019735-40e9-0310-863c-91ae7b9d1cf9 + +diff --git a/coregrind/m_syswrap/syswrap-x86-linux.c b/coregrind/m_syswrap/syswrap-x86-linux.c +index f8c4eb4..2f879d8 100644 +--- a/coregrind/m_syswrap/syswrap-x86-linux.c ++++ b/coregrind/m_syswrap/syswrap-x86-linux.c +@@ -294,11 +294,37 @@ void translate_to_hw_format ( /* IN */ vki_modify_ldt_t* inn, + out->LdtEnt.Words.word2 = entry_2; + } + +-/* Create a zeroed-out GDT. */ +-static VexGuestX86SegDescr* alloc_zeroed_x86_GDT ( void ) ++/* Create initial GDT. */ ++static VexGuestX86SegDescr* alloc_system_x86_GDT ( void ) + { + Int nbytes = VEX_GUEST_X86_GDT_NENT * sizeof(VexGuestX86SegDescr); +- return VG_(calloc)("di.syswrap-x86.azxG.1", nbytes, 1); ++ VexGuestX86SegDescr* gdt = VG_(calloc)("di.syswrap-x86.azxG.1", nbytes, 1); ++ vki_modify_ldt_t info; ++ UShort seg; ++ ++ VG_(memset)(&info, 0, sizeof(info)); ++ info.entry_number = 0; ++ info.base_addr = 0; ++ info.limit = 0xfffff; ++ info.seg_32bit = 1; ++ info.contents = 0; ++ info.read_exec_only = 0; ++ info.limit_in_pages = 1; ++ info.seg_not_present = 0; ++ info.useable = 0; ++ info.reserved = 0; ++ ++ asm volatile("movw %%ds, %0" : : "m" (seg)); ++ if (!(seg & 4)) translate_to_hw_format(&info, &gdt[seg >> 3], 0); ++ asm volatile("movw %%ss, %0" : : "m" (seg)); ++ if (!(seg & 4)) translate_to_hw_format(&info, &gdt[seg >> 3], 0); ++ ++ info.contents = 2; ++ ++ asm volatile("movw %%cs, %0" : : "m" (seg)); ++ if (!(seg & 4)) translate_to_hw_format(&info, &gdt[seg >> 3], 0); ++ ++ return gdt; + } + + /* Create a zeroed-out LDT. */ +@@ -505,7 +531,7 @@ SysRes ML_(x86_sys_set_thread_area) ( ThreadId tid, vki_modify_ldt_t* info ) + + /* If the thread doesn't have a GDT, allocate it now. */ + if (!gdt) { +- gdt = alloc_zeroed_x86_GDT(); ++ gdt = alloc_system_x86_GDT(); + VG_(threads)[tid].arch.vex.guest_GDT = (HWord)gdt; + } + +@@ -564,7 +590,7 @@ static SysRes sys_get_thread_area ( ThreadId tid, vki_modify_ldt_t* info ) + + /* If the thread doesn't have a GDT, allocate it now. */ + if (!gdt) { +- gdt = alloc_zeroed_x86_GDT(); ++ gdt = alloc_system_x86_GDT(); + VG_(threads)[tid].arch.vex.guest_GDT = (HWord)gdt; + } + +@@ -616,7 +642,7 @@ void ML_(x86_setup_LDT_GDT) ( /*OUT*/ ThreadArchState *child, + child->vex.guest_GDT = (HWord)NULL; + + if (parent->vex.guest_GDT != (HWord)NULL) { +- child->vex.guest_GDT = (HWord)alloc_zeroed_x86_GDT(); ++ child->vex.guest_GDT = (HWord)alloc_system_x86_GDT(); + copy_GDT_from_to( (VexGuestX86SegDescr*)parent->vex.guest_GDT, + (VexGuestX86SegDescr*)child->vex.guest_GDT ); + } +commit 5f4041b376f7465cd108ad4d1696b0b8a603a175 +Author: sewardj +Date: Fri Jan 20 10:01:42 2017 +0000 + + x86: Recognize the SS segment prefix on x86. Bug 344139 comment 4. + Patch from Sebastian Lackner, sebastian@fds-team.de. + + + git-svn-id: svn://svn.valgrind.org/vex/trunk@3299 8f6e269a-dfd6-0310-a8e1-e2731360e62c + +diff --git a/VEX/priv/guest_x86_toIR.c b/VEX/priv/guest_x86_toIR.c +index de09d3a..234d68e 100644 +--- a/VEX/priv/guest_x86_toIR.c ++++ b/VEX/priv/guest_x86_toIR.c +@@ -1409,6 +1409,7 @@ const HChar* sorbTxt ( UChar sorb ) + case 0x26: return "%es:"; + case 0x64: return "%fs:"; + case 0x65: return "%gs:"; ++ case 0x36: return "%ss:"; + default: vpanic("sorbTxt(x86,guest)"); + } + } +@@ -1433,6 +1434,7 @@ IRExpr* handleSegOverride ( UChar sorb, IRExpr* virtual ) + case 0x26: sreg = R_ES; break; + case 0x64: sreg = R_FS; break; + case 0x65: sreg = R_GS; break; ++ case 0x36: sreg = R_SS; break; + default: vpanic("handleSegOverride(x86,guest)"); + } + +@@ -8101,7 +8103,7 @@ DisResult disInstr_X86_WRK ( + Int sz = 4; + + /* sorb holds the segment-override-prefix byte, if any. Zero if no +- prefix has been seen, else one of {0x26, 0x3E, 0x64, 0x65} ++ prefix has been seen, else one of {0x26, 0x36, 0x3E, 0x64, 0x65} + indicating the prefix. */ + UChar sorb = 0; + +@@ -8255,6 +8257,7 @@ DisResult disInstr_X86_WRK ( + case 0x26: /* %ES: */ + case 0x64: /* %FS: */ + case 0x65: /* %GS: */ ++ case 0x36: /* %SS: */ + if (sorb != 0) + goto decode_failure; /* only one seg override allowed */ + sorb = pre; +@@ -8274,9 +8277,6 @@ DisResult disInstr_X86_WRK ( + } + break; + } +- case 0x36: /* %SS: */ +- /* SS override cases are not handled */ +- goto decode_failure; + default: + goto not_a_prefix; + } diff --git a/SPECS/valgrind.spec b/SPECS/valgrind.spec index 972a1ce..bb63bdb 100644 --- a/SPECS/valgrind.spec +++ b/SPECS/valgrind.spec @@ -2,8 +2,8 @@ Summary: Tool for finding memory management bugs in programs Name: %{?scl_prefix}valgrind -Version: 3.11.0 -Release: 24%{?dist} +Version: 3.12.0 +Release: 8%{?dist} Epoch: 1 License: GPLv2+ URL: http://www.valgrind.org/ @@ -12,10 +12,14 @@ Group: Development/Debuggers # Only necessary for RHEL, will be ignored on Fedora BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) +# Are we building for a Software Collection? +%{?scl:%global is_scl 1} +%{!?scl:%global is_scl 0} + # Only arches that are supported upstream as multilib and that the distro # has multilib builds for should set build_multilib 1. In practice that # is only x86_64 and ppc64 (but not in fedora 21 and later, and never -# for ppc64le). +# for ppc64le or when building for scl). %global build_multilib 0 %ifarch x86_64 @@ -23,19 +27,28 @@ BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) %endif %ifarch ppc64 - %if 0%{?rhel} - %global build_multilib 1 - %endif - %if 0%{?fedora} - %global build_multilib (%fedora < 21) + %if %{is_scl} + %global build_multilib 0 + %else + %if 0%{?rhel} + %global build_multilib 1 + %endif + %if 0%{?fedora} + %global build_multilib (%fedora < 21) + %endif %endif %endif # Note s390x doesn't have an openmpi port available. -%ifarch %{ix86} x86_64 ppc ppc64 ppc64le %{arm} aarch64 -%global build_openmpi 1 +# We never want the openmpi subpackage when building a software collecton +%if %{is_scl} + %global build_openmpi 0 %else -%global build_openmpi 0 + %ifarch %{ix86} x86_64 ppc ppc64 ppc64le %{arm} aarch64 + %global build_openmpi 1 + %else + %global build_openmpi 0 + %endif %endif # Generating minisymtabs doesn't really work for the staticly linked @@ -56,121 +69,69 @@ Patch2: valgrind-3.9.0-helgrind-race-supp.patch # Make ld.so supressions slightly less specific. Patch3: valgrind-3.9.0-ldso-supp.patch -# KDE#353083 arm64 doesn't implement various xattr system calls. -Patch4: valgrind-3.11.0-arm64-xattr.patch - -# KDE#353084 arm64 doesn't support sigpending system call. -Patch5: valgrind-3.11.0-arm64-sigpending.patch - -# KDE#353370 don't advertise RDRAND in cpuid for Core-i7-4910-like avx2 -Patch6: valgrind-3.11.0-no-rdrand.patch - -# KDE#278744 cvtps2pd with redundant RexW -Patch7: valgrind-3.11.0-rexw-cvtps2pd.patch - -# KDE#353680 Crash with certain glibc versions due to non-implemented TBEGIN -Patch8: valgrind-3.11.0-s390-hwcap.patch - -# KDE#355188 valgrind should intercept all malloc related global functions -Patch9: valgrind-3.11.0-wrapmalloc.patch - -# RHBZ#1283774 - Valgrind: FATAL: aspacem assertion failed -Patch10: valgrind-3.11.0-aspacemgr.patch - -# KDE#358213 - helgrind bar_bad testcase hangs with new glibc pthread barrier -Patch11: valgrind-3.11.0-pthread_barrier.patch - -# KDE#357833 - Valgrind is broken on recent linux kernel (RLIMIT_DATA) -Patch12: valgrind-3.11.0-rlimit_data.patch - -# KDE#357887 VG_(fclose) ought to close the file, you silly. -Patch13: valgrind-3.11.0-fclose.patch - -# KDE#357871 Fix helgrind wrapper of pthread_spin_destroy -Patch14: valgrind-3.11.0-pthread_spin_destroy.patch - -# KDE#358030 Support direct socket calls on x86 32bit (new in linux 4.3) -Patch15: valgrind-3.11.0-socketcall-x86-linux.patch - -# KDE#356044 Dwarf line info reader misinterprets is_stmt register -Patch16: valgrind-3.11.0-is_stmt.patch +# KDE#371396 - workaround helgrind and drd pth_cond_destroy_busy testcase hangs +Patch4: valgrind-3.12.0-skip-cond-var.patch -# Fix incorrect (or infinite loop) unwind on RHEL7 x86 32 bits. (svn r15729) -# Fix incorrect (or infinite loop) unwind on RHEL7 amd64 64 bits. (svn r15794) -Patch17: valgrind-3.11.0-x86_unwind.patch +# RHBZ#1390282 upstream svn r16134 +# Cleanup none/tests/nocwd.vgtest tmp dirs. +Patch5: valgrind-3.12.0-nocwd-cleanup.patch -# KDE#358478 drd/tests/std_thread.cpp doesn't build with GCC6 -Patch18: valgrind-3.11.0-drd_std_thread.patch +# RHBZ#1424367 +# GCC7 now diagnoses inline assembly that clobbers register r2. +# This has always been invalid code, and is no longer quietly tolerated. +Patch6: valgrind-3.12.0-ppc64-r2.patch -# KDE#359201 futex syscall skips argument 5 if op is FUTEX_WAIT_BITSET -Patch19: valgrind-3.11.0-futex.patch +# KDE#376611 ppc64 and arm64 don't know about prlimit64 syscall +Patch7: valgrind-3.12.0-arm64-ppc64-prlimit64.patch -# KDE#359289 s390: Implement popcnt insn. -Patch20: valgrind-3.11.0-s390x-popcnt.patch +# KDE#376279 Handle unknown HINT instructions on aarch64 by ignoring them. +Patch8: valgrind-3.12.0-arm64-hint.patch -# KDE#359703 s390: wire up separate socketcalls system calls -Patch21: valgrind-3.11.0-s390-separate-socketcalls.patch +# KDE#342040 Valgrind mishandles clone with CLONE_VFORK | CLONE_VM +# that clones to a different stack +# KDE#373192 Calling posix_spawn in glibc 2.24 completely broken +Patch9: valgrind-3.12.0-clone-spawn.patch -# KDE#359733 amd64 implement ld.so strchr/index override like x86 -Patch22: valgrind-3.11.0-amd64-ld-index.patch +# KDE#372600 process loops forever when fatal signals are arriving quickly +Patch10: valgrind-3.12.0-quick-fatal-sigs.patch -# KDE#359871 Incorrect mask handling in ppoll -Patch23: valgrind-3.11.0-ppoll-mask.patch +# KDE#372504 Hanging on exit_group +Patch11: valgrind-3.12.0-exit_group.patch -# KDE#359503 - Add missing syscalls for aarch64 (arm64) -Patch24: valgrind-3.11.0-arm64-more-syscalls.patch +# KDE#373046 Stacks registered by core are never deregistered +Patch12: valgrind-3.12.0-deregister-stack.patch -# Workaround for KDE#345307 - still reachable memory in libstdc++ from gcc 5 -Patch25: valgrind-3.11.0-libstdc++-supp.patch +# KDE#344139 +# Initialize x86 system GDT on first use. +# VEX: Recognize the SS segment prefix on x86. +Patch13: valgrind-3.12.0-x86-gdt-and-ss.patch -# KDE#360519 - none/tests/arm64/memory.vgtest might fail with newer gcc -Patch26: valgrind-3.11.0-arm64-ldr-literal-test.patch +# KDE#352767 - Wine/valgrind: noted but unhandled ioctl 0x5307 (CDROMSTOP) +# KDE#348616 - Wine/valgrind: noted but unhandled ioctl 0x5390 (DVD_READ_STRUCT) +Patch14: valgrind-3.12.0-cd-dvd-ioctl.patch -# KDE#360425 - arm64 unsupported instruction ldpsw -Patch27: valgrind-3.11.0-arm64-ldpsw.patch +# KDE#373069 force old implementation of std::string for leak_cpp_interior test +Patch15: valgrind-3.12.0-tests-cxx11_abi_0.patch -# KDE#345307 - still reachable memory in libstdc++ from gcc 6 -# Note that workaround (patch25) is still needed for gcc 5 -Patch28: valgrind-3.11.0-cxx-freeres.patch +# KDE#375806 add suppression for helgrind/tests/tc22_exit_w_lock +Patch16: valgrind-3.12.0-helgrind-dl_allocate_tls-supp.patch -# KDE#361354 - ppc64[le]: wire up separate socketcalls system calls -Patch29: valgrind-3.11.0-ppc64-separate-socketcalls.patch +# KDE#372195 Power PC, xxsel instruction is not always recognized. +Patch17: valgrind-3.12.0-ppc-xxsel.patch -# KDE#356393 - valgrind (vex) crashes because isZeroU happened -Patch30: valgrind-3.11.0-isZeroU.patch +# Combined valgrind svn r16229:r16248 patches. +# Enables pivot_root, sync_file_range, unshare, get_robust_list, +# delete_module, sched_rr_get_interval, tkill, request_key, move_pages, +# rt_tgsigqueueinfo, fanotify_init, fanotify_mark, clock_adjtime, kcmp, +# getcpu and sethostname syscalls on arm64. +Patch18: valgrind-3.12.0-aarch64-syscalls.patch -# KDE#359472 - PPC vsubuqm instruction doesn't always give the correct result -Patch31: valgrind-3.11.0-ppc64-128bit-mod-carry.patch +# KDE#377427 Fix incorrect register pair check for lxv, stxv, stxsd, +# stxssp, lxsd, lxssp instructions +Patch19: valgrind-3.12.0-powerpc-register-pair.patch -# KDE#212352 - vex amd64 unhandled opc_aux = 0x 2, first_opcode == 0xDC (FCOM) -Patch32: valgrind-3.11.0-amd64-fcom.patch - -# s390: Recognise machine model z13s (2965) -Patch33: valgrind-3.11.0-z13s.patch - -# Update gdbserver_tests filter for newer GDB version. -Patch34: valgrind-3.11.0-gdb-test-filters.patch - -# KDE#361226 s390x: risbgn (EC59) not implemented -Patch35: valgrind-3.11.0-s390x-risbgn.patch - -# KDE#359133 m_deduppoolalloc.c:258 (vgPlain_allocEltDedupPA): Assertion failed -Patch36: valgrind-3.11.0-deduppoolalloc.patch - -# KDE#360035 - POWER PC bcdadd and bcdsubtract generate non-zero shadow bits -Patch37: valgrind-3.11.0-ppc-bcd-addsub.patch - -# KDE#360008 - ppc64 vr registers not printed correctly with vgdb -Patch38: valgrind-3.11.0-ppc64-vgdb-vr-regs.patch - -# KDE#363705 arm64 missing syscall name_to_handle_at and open_by_handle_at -Patch39: valgrind-3.11.0-arm64-handle_at.patch - -# KDE#363714 ppc64 missing syscalls sync, waitid and name_to/open_by_handle_at -Patch40: valgrind-3.11.0-ppc64-syscalls.patch - -# KDE#359952 - Enable PCMPxSTRx cases 0x70 and 0x19. -Patch42: valgrind-3.11.0-pcmpxstrx-0x70-0x19.patch +# KDE#377478 PPC64: ISA 3.0 setup fixes +Patch20: valgrind-3.12.0-ppc64-isa-3_00.patch # RHEL7 specific patches. @@ -211,6 +172,9 @@ BuildRequires: procps BuildRequires: gcc-c++ # check_headers_and_includes uses Getopt::Long +%if 0%{?fedora} +BuildRequires: perl-generators +%endif BuildRequires: perl(Getopt::Long) %{?scl:Requires:%scl_runtime} @@ -271,6 +235,7 @@ Provides: %{name}-static = %{epoch}:%{version}-%{release} Header files and libraries for development of valgrind aware programs or valgrind plugins. +%if %{build_openmpi} %package openmpi Summary: OpenMPI support for valgrind Group: Development/Debuggers @@ -280,6 +245,7 @@ Requires: %{?scl_prefix}valgrind = %{epoch}:%{version}-%{release} A wrapper library for debugging OpenMPI parallel programs with valgrind. See the section on Debugging MPI Parallel Programs with Valgrind in the Valgrind User Manual for details. +%endif %prep %setup -q -n %{?scl:%{pkg_name}}%{!?scl:%{name}}-%{version} @@ -304,31 +270,6 @@ Valgrind User Manual for details. %patch18 -p1 %patch19 -p1 %patch20 -p1 -%patch21 -p1 -%patch22 -p1 -%patch23 -p1 -%patch24 -p1 - -# New filter (from patch24) needs to be executable. -chmod 755 memcheck/tests/arm64-linux/filter_stderr - -%patch25 -p1 -%patch26 -p1 -%patch27 -p1 -%patch28 -p1 -%patch29 -p1 -%patch30 -p1 -%patch31 -p1 -%patch32 -p1 -%patch33 -p1 -%patch34 -p1 -%patch35 -p1 -%patch36 -p1 -%patch37 -p1 -%patch38 -p1 -%patch39 -p1 -%patch40 -p1 -%patch42 -p1 # RHEL7 specific patches %patch7001 -p1 @@ -349,11 +290,13 @@ CC="gcc -B `pwd`/shared/libgcc/" %endif # Old openmpi-devel has version depended paths for mpicc. +%if %{build_openmpi} %if 0%{?fedora} >= 13 || 0%{?rhel} >= 6 %define mpiccpath %{!?scl:%{_libdir}}%{?scl:%{_root_libdir}}/openmpi/bin/mpicc %else %define mpiccpath %{!?scl:%{_libdir}}%{?scl:%{_root_libdir}}/openmpi/*/bin/mpicc %endif +%endif # Filter out some flags that cause lots of valgrind test failures. # Also filter away -O2, valgrind adds it wherever suitable, but @@ -451,9 +394,9 @@ cat /proc/cpuinfo # Build the test files with the software collection compiler if available. %{?scl:PATH=%{_bindir}${PATH:+:${PATH}}} -# Make sure no extra CFLAGS leak through, the testsuite sets all flags -# necessary. See also configure above. -make %{?_smp_mflags} CFLAGS="" check || : +# Make sure no extra CFLAGS, CXXFLAGS or LDFLAGS leak through, +# the testsuite sets all flags necessary. See also configure above. +make %{?_smp_mflags} CFLAGS="" CXXFLAGS="" LDFLAGS="" check echo ===============TESTING=================== # On arm the gdb integration tests hang for unknown reasons. @@ -524,6 +467,13 @@ echo ===============END TESTING=============== %endif %changelog +* Tue Mar 28 2017 Mark Wielaard +- Add valgrind-3.12.0-powerpc-register-pair.patch (#1437030) +- Add valgrind-3.12.0-ppc64-isa-3_00.patch (#1437032) + +* Sat Feb 18 2017 Mark Wielaard - 3.12.0-7 +- Rebase to 3.12.0 fedora backports (#1391217, #1385006, #1368706, #1270889) + * Thu Jul 21 2016 Mark Wielaard - 3.11.0-24 - Add valgrind-3.11.0-pcmpxstrx-0x70-0x19.patch (#1354557)