brintos

brintos / llvm-project-archived public Read only

0
0
Text · 3.7 KiB · 4dd07e9 Raw
107 lines · yaml
1## Test how obj2yaml emits relocation addend descriptions.2## We document that relocation addends are dumped as signed int64 decimal values.3 4## Case 1: Check a 64-bit object.5 6## Check how obj2yaml dumps an addend with an arbitrary positive value.7## We use 1 as it is the first possible positive value.8# RUN: yaml2obj --docnum=1 %s -o %t1 -D ADDEND=19# RUN: obj2yaml %t1 | FileCheck %s --check-prefix=ELF64 --match-full-lines -DADDEND=110 11# ELF64:      Relocations:12# ELF64-NEXT:  - Symbol: foo13# ELF64-NEXT:    Type:   R_X86_64_PC3214# ELF64-NEXT:    Addend: [[ADDEND]]15 16## Check how obj2yaml dumps an addend with an arbitrary negative value.17## We use -1 as it is the first possible negative value.18# RUN: yaml2obj --docnum=1 %s -o %t2 -D ADDEND=-119# RUN: obj2yaml %t2 | FileCheck %s --check-prefix=ELF64 --match-full-lines -DADDEND=-120 21## Check how obj2yaml dumps an addend with the value INT64_MAX.22# RUN: yaml2obj --docnum=1 %s -o %t3 -D ADDEND=922337203685477580723# RUN: obj2yaml %t3 | FileCheck %s --check-prefix=ELF64 --match-full-lines -DADDEND=922337203685477580724 25## Check how obj2yaml dumps an addend with the value INT64_MIN.26# RUN: yaml2obj --docnum=1 %s -o %t4 -D ADDEND=-922337203685477580827# RUN: obj2yaml %t4 | FileCheck %s --check-prefix=ELF64 --match-full-lines -DADDEND=-922337203685477580828 29--- !ELF30FileHeader:31  Class:   ELFCLASS6432  Data:    ELFDATA2LSB33  Type:    ET_REL34  Machine: EM_X86_6435Sections:36  - Name: .text37    Type: SHT_PROGBITS38  - Name: .rela.text39    Type: SHT_RELA40    Info: .text41    Link: .symtab42    Relocations:43      - Type:   R_X86_64_PC3244        Offset: 0x045        Symbol: foo46        Addend: [[ADDEND]]47Symbols:48  - Name: foo49 50## Check that obj2yaml omits zero addends.51# RUN: yaml2obj --docnum=1 %s -o %t5 -D ADDEND=052# RUN: obj2yaml %t5 | FileCheck %s --implicit-check-not="Addend:"53# RUN: yaml2obj --docnum=1 %s -o %t6 -D ADDEND=0x054# RUN: obj2yaml %t6 | FileCheck %s --implicit-check-not="Addend:"55 56## Case 2: Check a 32-bit object.57 58## Check how obj2yaml dumps an addend with an arbitrary positive value.59## We use 1 as it is the first possible positive value.60# RUN: yaml2obj --docnum=2 %s -o %t7 -D ADDEND=161# RUN: obj2yaml %t7 | FileCheck %s --check-prefix=ELF32 --match-full-lines -DADDEND=162 63# ELF32:      Relocations:64# ELF32-NEXT:  - Symbol: foo65# ELF32-NEXT:    Type:   R_386_PC3266# ELF32-NEXT:    Addend: [[ADDEND]]67 68## Check how obj2yaml dumps an addend with an arbitrary negative value.69## We use -1 as it is the first possible negative value.70# RUN: yaml2obj --docnum=2 %s -o %t8 -D ADDEND=-171# RUN: obj2yaml %t8 | FileCheck %s --check-prefix=ELF32 --match-full-lines -DADDEND=-172 73## Check how obj2yaml dumps an addend with the value INT32_MAX.74# RUN: yaml2obj --docnum=2 %s -o %t9 -D ADDEND=214748364775# RUN: obj2yaml %t9 | FileCheck %s --check-prefix=ELF32 --match-full-lines -DADDEND=214748364776 77## Check how obj2yaml dumps an addend with the value INT32_MIN.78# RUN: yaml2obj --docnum=2 %s -o %t10 -D ADDEND=-214748364879# RUN: obj2yaml %t10 | FileCheck %s --check-prefix=ELF32 --match-full-lines -DADDEND=-214748364880 81--- !ELF82FileHeader:83  Class:   ELFCLASS3284  Data:    ELFDATA2LSB85  Type:    ET_REL86  Machine: EM_38687Sections:88  - Name: .text89    Type: SHT_PROGBITS90  - Name: .rela.text91    Type: SHT_RELA92    Info: .text93    Link: .symtab94    Relocations:95      - Type:   R_386_PC3296        Offset: 0x097        Symbol: foo98        Addend: [[ADDEND]]99Symbols:100  - Name: foo101 102## Case 3: Check that obj2yaml omits zero addends.103# RUN: yaml2obj --docnum=1 %s -o %t11 -D ADDEND=0104# RUN: obj2yaml %t11 | FileCheck %s --implicit-check-not="Addend:"105# RUN: yaml2obj --docnum=1 %s -o %t12 -D ADDEND=0x0106# RUN: obj2yaml %t12 | FileCheck %s --implicit-check-not="Addend:"107