aboutsummaryrefslogtreecommitdiff
path: root/gas/write.h
diff options
context:
space:
mode:
authorTom de Vries <tdevries@suse.de>2022-05-24 22:41:45 +0200
committerTom de Vries <tdevries@suse.de>2022-05-24 22:41:45 +0200
commit9e9f0d02b43676c4873567bafd822d77006cb360 (patch)
tree8519b3af4acd11a3540dc19cb5b134d6853b459f /gas/write.h
parenta0ae328a266d2b01ff640be9277e01592b08971a (diff)
downloadbinutils-9e9f0d02b43676c4873567bafd822d77006cb360.zip
binutils-9e9f0d02b43676c4873567bafd822d77006cb360.tar.gz
binutils-9e9f0d02b43676c4873567bafd822d77006cb360.tar.bz2
[gdb/testsuite] Fix gdb.opt/clobbered-registers-O2.exp with clang
When running test-case gdb.opt/clobbered-registers-O2.exp with clang 12.0.1, I get: ... (gdb) run ^M Starting program: clobbered-registers-O2 ^M ^M Program received signal SIGSEGV, Segmentation fault.^M gen_movsd (operand0=<optimized out>, operand1=<optimized out>) at \ clobbered-registers-O2.c:31^M 31 return *start_sequence(operand0, operand1);^M (gdb) FAIL: gdb.opt/clobbered-registers-O2.exp: runto: run to start_sequence ... The problem is that the breakpoint in start_sequence doesn't trigger, because: - the call to start_sequence in gen_movsd is optimized away, despite the __attribute__((noinline)), so the actual function start_sequence doesn't get called, and - the debug info doesn't contain inlined function info, so there's only one breakpoint location. Adding noclone and noipa alongside the noinline attribute doesn't fix this. Adding the clang-specific attribute optnone in start_sequence does, but since it inhibits all optimization, that's not a preferred solution in a gdb.opt test-case, and it would work only for clang and not other compilers that possibly have the same issue. Fix this by moving functions start_sequence and gen_movsd into their own files, as a way of trying harder to enforce noinline/noipa/noclone. Tested on x86_64-linux.
Diffstat (limited to 'gas/write.h')
0 files changed, 0 insertions, 0 deletions