| ## Check how llvm-readobj and llvm-readelf tools dump addends of relocations. |
| |
| # RUN: yaml2obj --docnum=1 -DENCODE=LSB -DTYPE=SHT_RELA %s -o %t.le64.rela |
| # RUN: llvm-readobj -r %t.le64.rela | FileCheck %s --check-prefix=LLVM-RELA64 |
| # RUN: llvm-readelf -r %t.le64.rela | FileCheck %s --check-prefix=GNU-RELA64 |
| |
| # LLVM-RELA64: R_X86_64_NONE - 0x0{{$}} |
| # LLVM-RELA64-NEXT: R_X86_64_NONE - 0x1{{$}} |
| # LLVM-RELA64-NEXT: R_X86_64_NONE - 0xFFFFFFFFFFFFFFFF{{$}} |
| # LLVM-RELA64-NEXT: R_X86_64_NONE - 0x7FFFFFFFFFFFFFFF{{$}} |
| # LLVM-RELA64-NEXT: R_X86_64_NONE - 0x8000000000000000{{$}} |
| # LLVM-RELA64-NEXT: R_X86_64_NONE - 0xFFFFFFFFFFFFCFC7{{$}} |
| # LLVM-RELA64-NEXT: R_X86_64_NONE - 0x12345{{$}} |
| |
| ## FIXME: GNU readelf prints addends differently. |
| ## See https://bugs.llvm.org/show_bug.cgi?id=45235. |
| # GNU-RELA64: Type Symbol's Value Symbol's Name + Addend |
| # GNU-RELA64-NEXT: R_X86_64_NONE 0{{$}} |
| # GNU-RELA64-NEXT: R_X86_64_NONE 1{{$}} |
| # GNU-RELA64-NEXT: R_X86_64_NONE ffffffffffffffff{{$}} |
| # GNU-RELA64-NEXT: R_X86_64_NONE 7fffffffffffffff{{$}} |
| # GNU-RELA64-NEXT: R_X86_64_NONE 8000000000000000{{$}} |
| # GNU-RELA64-NEXT: R_X86_64_NONE ffffffffffffcfc7{{$}} |
| # GNU-RELA64-NEXT: R_X86_64_NONE 12345{{$}} |
| |
| # RUN: yaml2obj --docnum=1 -DENCODE=MSB -DTYPE=SHT_RELA %s -o %t.be64.rela |
| # RUN: llvm-readobj -r %t.be64.rela | FileCheck %s --check-prefix=LLVM-RELA64 |
| # RUN: llvm-readelf -r %t.be64.rela | FileCheck %s --check-prefix=GNU-RELA64 |
| |
| # RUN: yaml2obj --docnum=1 -DENCODE=LSB -DTYPE=SHT_REL %s -o %t.le64.rel |
| # RUN: llvm-readobj -r %t.le64.rel | FileCheck %s --check-prefix=LLVM-REL64 |
| # RUN: llvm-readelf -r %t.le64.rel | FileCheck %s --check-prefix=GNU-REL64 |
| |
| # LLVM-REL64-COUNT-7: R_X86_64_NONE -{{$}} |
| # LLVM-REL64-NOT: R_ |
| |
| # GNU-REL64: Type Symbol's Value Symbol's Name{{$}} |
| # GNU-REL64-COUNT-7: R_X86_64_NONE {{$}} |
| # GNU-REL64-NOT: R_ |
| |
| # RUN: yaml2obj --docnum=1 -DENCODE=MSB -DTYPE=SHT_REL %s -o %t.be64.rel |
| # RUN: llvm-readobj -r %t.be64.rel | FileCheck %s --check-prefix=LLVM-REL64 |
| # RUN: llvm-readelf -r %t.be64.rel | FileCheck %s --check-prefix=GNU-REL64 |
| |
| --- !ELF |
| FileHeader: |
| Class: ELFCLASS64 |
| Data: ELFDATA2[[ENCODE]] |
| Type: ET_EXEC |
| Machine: EM_X86_64 |
| Sections: |
| - Name: .foo |
| Type: [[TYPE]] |
| Relocations: |
| ## Addend == 0. |
| - Addend: 0x0 |
| Type: R_X86_64_NONE |
| ## Addend == first positive int64/uint64 == 1. |
| - Addend: 0x1 |
| Type: R_X86_64_NONE |
| ## Addend == first negative int64 == -1. |
| - Addend: 0xffffffffffffffff |
| Type: R_X86_64_NONE |
| ## Addend == max possible int64 == 0x7FFFFFFFFFFFFFFF. |
| - Addend: 0x7FFFFFFFFFFFFFFF |
| Type: R_X86_64_NONE |
| ## Addend == min possible int64 == 0x8000000000000000. |
| - Addend: 0x8000000000000000 |
| Type: R_X86_64_NONE |
| ## Addend == an arbitrary negative number. |
| - Addend: 0xFFFFFFFFFFFFCFC7 ## -12345 |
| Type: R_X86_64_NONE |
| ## Addend == an arbitrary positive number. |
| - Addend: 0x12345 |
| Type: R_X86_64_NONE |
| |
| ## Starting from here we check ELFCLASS32 objects. |
| |
| # RUN: yaml2obj --docnum=2 -DENCODE=LSB -DTYPE=SHT_RELA %s -o %t.le32.rela |
| # RUN: llvm-readobj -r %t.le32.rela | FileCheck %s --check-prefix=LLVM-RELA32 |
| # RUN: llvm-readelf -r %t.le32.rela | FileCheck %s --check-prefix=GNU-RELA32 |
| |
| # LLVM-RELA32: R_386_NONE - 0x0{{$}} |
| # LLVM-RELA32-NEXT: R_386_NONE - 0x1{{$}} |
| # LLVM-RELA32-NEXT: R_386_NONE - 0xFFFFFFFF{{$}} |
| # LLVM-RELA32-NEXT: R_386_NONE - 0x7FFFFFFF{{$}} |
| # LLVM-RELA32-NEXT: R_386_NONE - 0x80000000{{$}} |
| # LLVM-RELA32-NEXT: R_386_NONE - 0xFFFFCFC7{{$}} |
| |
| ## FIXME: GNU readelf prints addends differently. |
| ## See https://bugs.llvm.org/show_bug.cgi?id=45235. |
| # GNU-RELA32: Type Sym. Value Symbol's Name + Addend |
| # GNU-RELA32-NEXT: R_386_NONE 0{{$}} |
| # GNU-RELA32-NEXT: R_386_NONE 1{{$}} |
| # GNU-RELA32-NEXT: R_386_NONE ffffffffffffffff{{$}} |
| # GNU-RELA32-NEXT: R_386_NONE 7fffffff{{$}} |
| # GNU-RELA32-NEXT: R_386_NONE ffffffff80000000{{$}} |
| # GNU-RELA32-NEXT: R_386_NONE ffffffffffffcfc7{{$}} |
| |
| # RUN: yaml2obj --docnum=2 -DENCODE=MSB -DTYPE=SHT_RELA %s -o %t.be32.rela |
| # RUN: llvm-readobj -r %t.be32.rela | FileCheck %s --check-prefix=LLVM-RELA32 |
| # RUN: llvm-readelf -r %t.be32.rela | FileCheck %s --check-prefix=GNU-RELA32 |
| |
| # RUN: yaml2obj --docnum=2 -DENCODE=LSB -DTYPE=SHT_REL %s -o %t.le32.rel |
| # RUN: llvm-readobj -r %t.le32.rel | FileCheck %s --check-prefix=LLVM-REL32 |
| # RUN: llvm-readelf -r %t.le32.rel | FileCheck %s --check-prefix=GNU-REL32 |
| |
| # LLVM-REL32-COUNT-7: R_386_NONE -{{$}} |
| # LLVM-REL32-NOT: R_ |
| |
| # GNU-REL32: Type |
| # GNU-REL32-COUNT-7: R_386_NONE {{$}} |
| # GNU-REL32-NOT: R_ |
| |
| # RUN: yaml2obj --docnum=2 -DENCODE=MSB -DTYPE=SHT_REL %s -o %t.be32.rel |
| # RUN: llvm-readobj -r %t.be32.rel | FileCheck %s --check-prefix=LLVM-REL32 |
| # RUN: llvm-readelf -r %t.be32.rel | FileCheck %s --check-prefix=GNU-REL32 |
| |
| --- !ELF |
| FileHeader: |
| Class: ELFCLASS32 |
| Data: ELFDATA2[[ENCODE]] |
| Type: ET_EXEC |
| Machine: EM_386 |
| Sections: |
| - Name: .foo |
| Type: [[TYPE]] |
| Relocations: |
| ## Addend == 0. |
| - Addend: 0x0 |
| Type: R_386_NONE |
| ## Addend == first positive int32/uint32 == 1. |
| - Addend: 0x1 |
| Type: R_386_NONE |
| ## Addend == first negative int32 == -1. |
| - Addend: 0xffffffff |
| Type: R_386_NONE |
| ## Addend == max possible int32 == 0x7FFFFFFF. |
| - Addend: 0x7FFFFFFF |
| Type: R_386_NONE |
| ## Addend == min possible int32 == 0x80000000. |
| - Addend: 0x80000000 |
| Type: R_386_NONE |
| ## Addend == an arbitrary negative number. |
| - Addend: 0xFFFFCFC7 ## -12345 |
| Type: R_386_NONE |
| ## Addend == an arbitrary positive number. |
| - Addend: 0x12345 |
| Type: R_386_NONE |