aboutsummaryrefslogtreecommitdiff
path: root/llvm/docs/tutorial
diff options
context:
space:
mode:
authorVictor Campos <victor.campos@arm.com>2025-02-17 10:10:35 +0000
committerGitHub <noreply@github.com>2025-02-17 10:10:35 +0000
commit501c77da6024959438c92f33bd997fe6f39e6b6c (patch)
tree19c887aa6f2b981f9572e41f00d1dda357f9f891 /llvm/docs/tutorial
parentc1a229252617ed58f943bf3f4698bd8204ee0f04 (diff)
downloadllvm-501c77da6024959438c92f33bd997fe6f39e6b6c.zip
llvm-501c77da6024959438c92f33bd997fe6f39e6b6c.tar.gz
llvm-501c77da6024959438c92f33bd997fe6f39e6b6c.tar.bz2
[LLD][ELF][ARM] Fix resolution of R_ARM_THM_JUMP8 and R_ARM_THM_JUMP11 for big endian (#126933)
These relocations apply to 16-bit Thumb instructions, so reading 16 bits rather than 32 bits ensures the correct bits are masked and written back. This fixes the incorrect masking and aligns the relocation logic with the instruction encoding. Before this patch, 32 bits were read from the ELF object. This did not align with the instruction size of 16 bits, but the masking incidentally made it all work nonetheless. However, this was the case only in little endian. In big endian mode, the read 32-bit word had to have its bytes reversed. With this byte reordering, the masking would be applied to the wrong bits, hence causing the incorrect encoding to be produced as a result of the relocation resolution. The added test checks the result for both little and big endian modes.
Diffstat (limited to 'llvm/docs/tutorial')
0 files changed, 0 insertions, 0 deletions