mirror of
https://github.com/ioacademy-jikim/debugging
synced 2025-06-10 01:16:12 +00:00
49 lines
1.1 KiB
ArmAsm
49 lines
1.1 KiB
ArmAsm
#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)"
|