n-i-bz Document brk segment limitation, reference manual in limit reached msg.
n-i-bz Fix clobber list in none/tests/amd64/xacq_xrel.c [valgrind r15737]
n-i-bz Bump allowed shift value for "add.w reg, sp, reg, lsl #N" [vex r3206]
-
+n-i-bz amd64: memcheck false positive with shr %edx
Release 3.11.0 (22 September 2015)
sh-mem-vec256-plo-yes.vgtest \
sh-mem-vec256-plo-yes.stderr.exp \
sh-mem-vec256-plo-yes.stdout.exp \
+ shr_edx.stderr.exp shr_edx.stdout.exp shr_edx.vgtest \
sse_memory.stderr.exp sse_memory.stdout.exp sse_memory.vgtest \
xor-undef-amd64.stderr.exp xor-undef-amd64.stdout.exp \
xor-undef-amd64.vgtest \
insn-bsfl \
insn-pmovmskb \
sh-mem-vec128 \
+ shr_edx \
sse_memory \
xor-undef-amd64
if BUILD_AVX_TESTS
--- /dev/null
+#include <stdio.h>
+#include <stdlib.h>
+typedef unsigned long long int ULong;
+
+ULong data;
+ULong result;
+
+
+extern void shrl32_with_0x10 ( void );
+asm("\n"
+"shrl32_with_0x10:\n"
+"\tpushq %rdx\n"
+"\tmovq data, %rdx\n"
+"\tshr $0x10, %edx\n"
+"\tjne shrl32_with_0x10_jump\n"
+"\tshrl32_with_0x10_cont:\n"
+"\tmovq %rdx, result\n"
+"\tpopq %rdx\n"
+"\tret\n"
+"\tshrl32_with_0x10_jump:\n"
+"\tmov $0xdeaddead, %edx\n"
+"\tjmp shrl32_with_0x10_cont\n"
+);
+
+
+int main ( void )
+{
+ char *p;
+
+ printf("\nshrl 0x10 with unitialised bits\n");
+ ULong *notinitialised = malloc(sizeof(ULong)); // Not initialised data.
+ data = *notinitialised;
+ p = (char*) &data;
+ p[0] = 0x11;
+ // p[1] = 0x22;
+ p[2] = 0x33;
+ p[3] = 0x44;
+
+ shrl32_with_0x10();
+
+ printf("non zero jump on p[2..3] 0x%016llx\n", result);
+
+ data = *notinitialised;
+ p = (char*) &data;
+ p[0] = 0x00;
+ // p[1] = 0x00;
+ p[2] = 0x00;
+ p[3] = 0x00;
+
+ shrl32_with_0x10();
+
+ printf("zero jump on p[2..3] 0x%016llx\n", result);
+ return 0;
+}
--- /dev/null
+
+shrl 0x10 with unitialised bits
+non zero jump on p[2..3] 0x00000000deaddead
+zero jump on p[2..3] 0x0000000000000000
--- /dev/null
+prog: shr_edx
+vgopts: -q