memcheck/tests/sh-mem-random.c: Set huge_addr to 240GB
[valgrind.git] / memcheck / tests / x86 / tronical.S
blobe5bb4009e3d22f27bd81033da1447dc647474d20
1 /*
3 2006-05-21: vex r1619 finally causes the x86->IR front end to state
4 exactly the %eflags dataflow surrounding 'cmpb $0, ... ;  js ..'
5 and so memcheck no longer gives a false positive on this test.
6         
7 -----------     
9 (original comments)
10 Assembly derived from the following program compiled with -O2.
11 This fools Valgrind, causing it to give a false error.
13 #include <stdio.h>
15 struct Foo
17     int a1 : 1;
18     int a2 : 1;
19     int a3 : 1;
20     int a4 : 1;
21     int a5 : 1;
22     int a6 : 1;
23     int a7 : 1;
24     int bleh : 1;
27 struct Foo* foo;
29 void set()
31     foo->bleh = 1;
34 void get()
36     if ( foo->bleh == 0 )
37         printf( "blieb\n" );
40 int main()
42   foo = malloc(sizeof(struct Foo));
43     set();
45     get();
47     return 0;
52 #include "tests/asm.h"
54         .file   "tronical.c"
55 #if defined(VGO_linux) || defined(VGO_solaris)
56         .version        "01.01"
57 #endif
58 gcc2_compiled.:
59 .text
60         .align 4
61 .globl set
62 set:
63         pushl   %ebp
64         movl    foo, %eax
65         orb     $128, (%eax)
66         movl    %esp, %ebp
67         popl    %ebp
68         ret
69 .Lfe1:
70 .LC0:
71         .ascii  "blieb\n"
72 .text
73         .align 4
74 .globl get
75 get:
76         pushl   %ebp
77         movl    %esp, %ebp
78         subl    $8, %esp
79         movl    foo, %eax
80         cmpb    $0, (%eax)
81         js      .L4
82         subl    $12, %esp
83         pushl   $.LC0
84         call    VG_SYM_ASM(printf)
85         addl    $16, %esp
86 .L4:
87         leave
88         ret
89 .Lfe2:
90         .align 4
91 .globl VG_SYM_ASM(main)
92 VG_SYM_ASM(main):
93         pushl   %ebp
94         movl    %esp, %ebp
95         subl    $20, %esp
96         pushl   $4
97         call    VG_SYM_ASM(malloc)
98         movl    %eax, foo
99         call    set
100         call    get
101         xorl    %eax, %eax
102         leave
103         ret
104 .Lfe3:
105         .comm   foo,4,4
106         .ident  "GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)"