aboutsummaryrefslogtreecommitdiff
path: root/gdb/rust-lang.c
diff options
context:
space:
mode:
authorRichard Earnshaw <rearnsha@arm.com>2024-12-20 18:28:05 +0000
committerRichard Earnshaw <rearnsha@arm.com>2024-12-20 18:41:36 +0000
commit9edd0af148442f6192529b6edc9017f95ab404d8 (patch)
tree25c78633ac876c57ec0dde9b807ab6f0b0a3f59d /gdb/rust-lang.c
parent602f66f5aba3b3871cef08306f9c3c2962992784 (diff)
downloadbinutils-9edd0af148442f6192529b6edc9017f95ab404d8.zip
binutils-9edd0af148442f6192529b6edc9017f95ab404d8.tar.gz
binutils-9edd0af148442f6192529b6edc9017f95ab404d8.tar.bz2
arm: fix incorrect assembly of stm{,ia} as push [PR32363]
PR/32363. Gas was incorrectly translating stm sp!, {regs} into push {regs} but this is invalid. Conversely, it was also failing to translate stmfd sp!, {lowregs[, lr]} into a 16-bit push instruction. Fortunately stmia SP! is unlikely to be a common idiom on a full-descending stack as it writes values to the stack, then immediately deallocates that bit of the stack. Fixed this and cleaned up the logic somewhat. While there, change some of the ordering so that "ldm base, {base}" is transformed preferentially to LDR. This is in keeping with the general preference in the Arm ARM for avoiding single register LDM instructions.
Diffstat (limited to 'gdb/rust-lang.c')
0 files changed, 0 insertions, 0 deletions