[Lldb-commits] [PATCH] D145550: [LLDB][ObjectFileELF] Correct the return type of RelocOffset64 and RelocAddend64
Lu Weining via Phabricator via lldb-commits
lldb-commits at lists.llvm.org
Wed Mar 8 01:48:08 PST 2023
SixWeining added a comment.
In D145550#4177291 <https://reviews.llvm.org/D145550#4177291>, @DavidSpickett wrote:
> Seems to me that member functions of `ELFRelocation` should use the typedefs from `lldb/source/Plugins/ObjectFile/ELF/ELFHeader.h` where there is one. `elf_sxword` for example.
>
> If you want to do that in another patch, that's fine. Just in case some test case is relying on the uin64_t -> unsigned down cast unintentionally.
Yes, I agree. Let me do that in another patch. Thanks.
================
Comment at: lldb/test/Shell/ObjectFile/ELF/loongarch64-relocations.yaml:37
Type: R_LARCH_64
- Addend: 0x5678
+ Addend: 0x1122334455667788
Symbols:
----------------
DavidSpickett wrote:
> I'm not familiar with how these relocation are processed, would it be better to use something with the sign bit set here? Or does it not matter, the value is just copied into .debug_info verbatim anyway.
For this case, it is processed by below code:
```
2596 static void ApplyELF64ABS64Relocation(Symtab *symtab, ELFRelocation &rel,
2597 DataExtractor &debug_data,
2598 Section *rel_section) {
2599 Symbol *symbol = symtab->FindSymbolByID(ELFRelocation::RelocSymbol64(rel));
2600 if (symbol) {
2601 addr_t value = symbol->GetAddressRef().GetFileAddress();
2602 DataBufferSP &data_buffer_sp = debug_data.GetSharedDataBuffer();
2603 // ObjectFileELF creates a WritableDataBuffer in CreateInstance.
2604 WritableDataBuffer *data_buffer =
2605 llvm::cast<WritableDataBuffer>(data_buffer_sp.get());
2606 uint64_t *dst = reinterpret_cast<uint64_t *>(
2607 data_buffer->GetBytes() + rel_section->GetFileOffset() +
2608 ELFRelocation::RelocOffset64(rel));
2609 uint64_t val_offset = value + ELFRelocation::RelocAddend64(rel);
2610 memcpy(dst, &val_offset, sizeof(uint64_t));
2611 }
2612 }
```
Memcpy `S + A` to .debug_info.
I can add another relocation entry with the sign bit set.
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D145550/new/
https://reviews.llvm.org/D145550
More information about the lldb-commits
mailing list