From e40dbd6233bd8639af106a7d187f145a661436e8 Mon Sep 17 00:00:00 2001 From: Will Newton Date: Thu, 27 Nov 2014 17:20:48 +0000 Subject: [PATCH] Widen ELFYAML relocation type to 32 bits The current 8 bits is sufficient for ELF32 targets but ELF64 requires 32 bits. Add a test for AArch64 that exposes the issue. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@222898 91177308-0d34-0410-b5e6-96231b3b80d8 --- include/llvm/Object/ELFYAML.h | 2 +- test/Object/AArch64/yaml2obj-elf-aarch64-rel.yaml | 10 +++++++++- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/include/llvm/Object/ELFYAML.h b/include/llvm/Object/ELFYAML.h index 687611ddb58..b71946d98b5 100644 --- a/include/llvm/Object/ELFYAML.h +++ b/include/llvm/Object/ELFYAML.h @@ -40,7 +40,7 @@ LLVM_YAML_STRONG_TYPEDEF(uint8_t, ELF_ELFOSABI) // Just use 64, since it can hold 32-bit values too. LLVM_YAML_STRONG_TYPEDEF(uint64_t, ELF_EF) LLVM_YAML_STRONG_TYPEDEF(uint32_t, ELF_SHT) -LLVM_YAML_STRONG_TYPEDEF(uint8_t, ELF_REL) +LLVM_YAML_STRONG_TYPEDEF(uint32_t, ELF_REL) // Just use 64, since it can hold 32-bit values too. LLVM_YAML_STRONG_TYPEDEF(uint64_t, ELF_SHF) LLVM_YAML_STRONG_TYPEDEF(uint8_t, ELF_STT) diff --git a/test/Object/AArch64/yaml2obj-elf-aarch64-rel.yaml b/test/Object/AArch64/yaml2obj-elf-aarch64-rel.yaml index 61470250944..b8fb68113c7 100644 --- a/test/Object/AArch64/yaml2obj-elf-aarch64-rel.yaml +++ b/test/Object/AArch64/yaml2obj-elf-aarch64-rel.yaml @@ -11,6 +11,10 @@ # CHECK-NEXT: Symbol: main # CHECK-NEXT: Type: R_AARCH64_ABS64 # CHECK-NEXT: Addend: 0 +# CHECK-NEXT: - Offset: 0x0000000000000008 +# CHECK-NEXT: Symbol: main +# CHECK-NEXT: Type: R_AARCH64_TLSGD_ADR_PREL21 +# CHECK-NEXT: Addend: 0 FileHeader: Class: ELFCLASS64 @@ -22,7 +26,7 @@ Sections: Name: .text Flags: [ SHF_ALLOC, SHF_EXECINSTR ] AddressAlign: 0x04 - Content: 0000000000000000 + Content: 00000000000000000000000000000000 - Type: SHT_RELA Name: .rela.text Link: .symtab @@ -33,6 +37,10 @@ Sections: Symbol: main Type: R_AARCH64_ABS64 Addend: 0 + - Offset: 8 + Symbol: main + Type: R_AARCH64_TLSGD_ADR_PREL21 + Addend: 0 Symbols: Local: