[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Bug ld/18692] New: AArch64: ld --emit-relocs corrupts section relative
From: |
ard.biesheuvel at linaro dot org |
Subject: |
[Bug ld/18692] New: AArch64: ld --emit-relocs corrupts section relative relocations |
Date: |
Sun, 19 Jul 2015 15:39:49 +0000 |
https://sourceware.org/bugzilla/show_bug.cgi?id=18692
Bug ID: 18692
Summary: AArch64: ld --emit-relocs corrupts section relative
relocations
Product: binutils
Version: 2.24
Status: NEW
Severity: normal
Priority: P2
Component: ld
Assignee: unassigned at sourceware dot org
Reporter: ard.biesheuvel at linaro dot org
Target Milestone: ---
When merging ELF sections together, section relative relocations emitted using
--emit-relocs do not have their addends recalculated, leading to corrupt
relocation data.
For instance, after assembling the following code:
.text
.skip 0x20
.quad sym1
.section ".rodata"
sym1:
.skip 0x38
.word 0x0
using "aarch64-linux-gnu-as -o /tmp/rela.o /tmp/rela.s", the resulting
rela.text section contains:
Relocation section '.rela.text' at offset 0x3f0 contains 1 entries:
Offset Info Type Sym. Value Sym. Name +
Addend
000000000020 000600000101 R_AARCH64_ABS64 0000000000000000 .rodata + 38
However, after linking it using the following script:
SECTIONS {
.text : { *(.text .rodata) }
}
using "aarch64-linux-gnu-ld -e 0x0 -o /tmp/rela /tmp/rela.o --emit-relocs -T
/tmp/rela.lds", the resulting rela.text section contains the following
relocation:
Relocation section '.rela.text' at offset 0x10298 contains 1 entries:
Offset Info Type Sym. Value Sym. Name +
Addend
000000000020 000100000101 R_AARCH64_ABS64 0000000000000000 .text + 38
Here, the RELA addend is unchanged, even though the original .rodata is placed
0x28 bytes into .text.
--
You are receiving this mail because:
You are on the CC list for the bug.
- [Bug ld/18692] New: AArch64: ld --emit-relocs corrupts section relative relocations,
ard.biesheuvel at linaro dot org <=