#include "tests/asm.h" #if defined(VGO_linux) || defined(VGO_solaris) .version "01.01" #endif gcc2_compiled.: .text .align 4 .globl VG_SYM_ASM(fooble) #if defined(VGO_linux) || defined(VGO_solaris) .type VG_SYM_ASM(fooble),@function #endif VG_SYM_ASM(fooble): pushl %ebp movl %esp, %ebp movl 8(%ebp), %eax subl 12(%ebp), %eax # flags are now undef if either operand is # save possibly undef flags on stack pushfl movl $0, %eax addl $0, %eax # flags are now definitely defined popfl # resulting flag definedness depends on outcome of sub above # should override that created by 0 + 0 above # because Vex does an emulation-warning check on the popfl, # an error should be reported for the popfl # now use the condition codes to generate a value # in a way which will cause undefinedness to get reported # (a second time) jz labelz movl $22, %eax jmp theend labelz: movl $33, %eax theend: popl %ebp ret .Lfe1: #if defined(VGO_linux) || defined(VGO_solaris) .size VG_SYM_ASM(fooble),.Lfe1-VG_SYM_ASM(fooble) #endif .ident "GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)"