Skip to content

Commit

Permalink
[LLDB][ObjectFileELF] Correct the return type of RelocOffset64 and Re…
Browse files Browse the repository at this point in the history
…locAddend64

According to `/usr/include/elf.h` and `lldb/source/Plugins/ObjectFile/ELF/ELFHeader.h`.
For ELF64 relocation, types of `offset` and `addend` should be `elf_addr` and `elf_sxword`.

Reviewed By: DavidSpickett

Differential Revision: https://reviews.llvm.org/D145550
  • Loading branch information
SixWeining committed Mar 13, 2023
1 parent c2c9387 commit 174a38f
Show file tree
Hide file tree
Showing 2 changed files with 12 additions and 8 deletions.
8 changes: 4 additions & 4 deletions lldb/source/Plugins/ObjectFile/ELF/ObjectFileELF.cpp
Expand Up @@ -116,11 +116,11 @@ class ELFRelocation {

static unsigned RelocOffset32(const ELFRelocation &rel);

static unsigned RelocOffset64(const ELFRelocation &rel);
static elf_addr RelocOffset64(const ELFRelocation &rel);

static unsigned RelocAddend32(const ELFRelocation &rel);

static unsigned RelocAddend64(const ELFRelocation &rel);
static elf_sxword RelocAddend64(const ELFRelocation &rel);

bool IsRela() { return (reloc.is<ELFRela *>()); }

Expand Down Expand Up @@ -192,7 +192,7 @@ unsigned ELFRelocation::RelocOffset32(const ELFRelocation &rel) {
return rel.reloc.get<ELFRela *>()->r_offset;
}

unsigned ELFRelocation::RelocOffset64(const ELFRelocation &rel) {
elf_addr ELFRelocation::RelocOffset64(const ELFRelocation &rel) {
if (rel.reloc.is<ELFRel *>())
return rel.reloc.get<ELFRel *>()->r_offset;
else
Expand All @@ -206,7 +206,7 @@ unsigned ELFRelocation::RelocAddend32(const ELFRelocation &rel) {
return rel.reloc.get<ELFRela *>()->r_addend;
}

unsigned ELFRelocation::RelocAddend64(const ELFRelocation &rel) {
elf_sxword ELFRelocation::RelocAddend64(const ELFRelocation &rel) {
if (rel.reloc.is<ELFRel *>())
return 0;
else
Expand Down
12 changes: 8 additions & 4 deletions lldb/test/Shell/ObjectFile/ELF/loongarch64-relocations.yaml
Expand Up @@ -6,9 +6,9 @@
# CHECK: Name: .debug_info
# CHECK: Data: (
## Before relocation:
## 0000: 00000000 00000000 00000000
## 0000: 00000000 00000000 00000000 00000000 00000000
## After relocation:
# CHECK-NEXT: 0000: 34120000 78560000 00000000
# CHECK-NEXT: 0000: 34120000 88776655 44332211 8899AABB CCDDEEFF
# CHECK-NEXT: )

--- !ELF
Expand All @@ -22,7 +22,7 @@ Sections:
Type: SHT_PROGBITS
- Name: .debug_info
Type: SHT_PROGBITS
Content: 000000000000000000000000
Content: 0000000000000000000000000000000000000000
- Name: .rela.debug_info
Type: SHT_RELA
Info: .debug_info
Expand All @@ -34,7 +34,11 @@ Sections:
- Offset: 0x0000000000000004
Symbol: .debug_str
Type: R_LARCH_64
Addend: 0x5678
Addend: 0x1122334455667788
- Offset: 0x000000000000000C
Symbol: .debug_str
Type: R_LARCH_64
Addend: 0xFFEEDDCCBBAA9988
Symbols:
- Name: .debug_str
Type: STT_SECTION
Expand Down

0 comments on commit 174a38f

Please sign in to comment.