| ## Check that we can use the --elf-linker-options option |
| ## to dump SHT_LLVM_LINKER_OPTIONS sections. |
| |
| # RUN: yaml2obj --docnum=1 %s -o %t1 |
| # RUN: llvm-readobj --elf-linker-options %t1 2>&1 | FileCheck %s -DFILE=%t1 |
| |
| # CHECK: LinkerOptions [ |
| # CHECK: option 0: value 0 |
| # CHECK: option 1: value 1 |
| # CHECK-NEXT: warning: '[[FILE]]': SHT_LLVM_LINKER_OPTIONS section at index 2 is broken: an incomplete key-value pair was found. The last possible key was: "c" |
| # CHECK-NEXT: warning: '[[FILE]]': SHT_LLVM_LINKER_OPTIONS section at index 4 is broken: the content is not null-terminated |
| # CHECK-NEXT: warning: '[[FILE]]': unable to read the content of the SHT_LLVM_LINKER_OPTIONS section: section [index 5] has a sh_offset (0xffffffff) + sh_size (0x8) that is greater than the file size (0x370) |
| # CHECK-NEXT: option 3: value 3 |
| # CHECK-NEXT: ] |
| |
| --- !ELF |
| FileHeader: |
| Class: ELFCLASS64 |
| Data: ELFDATA2LSB |
| Type: ET_REL |
| Sections: |
| ## Case 1: a correct case. |
| - Name: .linker-options.valid1 |
| Type: SHT_LLVM_LINKER_OPTIONS |
| Options: |
| - Name: option 0 |
| Value: value 0 |
| - Name: option 1 |
| Value: value 1 |
| ## Case 2: check we do not attempt to dump data from outside the SHT_LLVM_LINKER_OPTIONS section |
| ## when it contains an incomplete key-value pair. |
| - Name: .linker-options.incomplete |
| Type: SHT_LLVM_LINKER_OPTIONS |
| Content: "610062006300" ## 'a', '\0', 'b', '\0', 'c', '\0' |
| - Type: Fill |
| Pattern: "FF" |
| Size: "1" |
| ## Case 3: in case of an empty section we dump nothing. |
| - Name: .linker-options.empty |
| Type: SHT_LLVM_LINKER_OPTIONS |
| Content: "" |
| ## Case 4: check we do not attempt to dump data from outside the SHT_LLVM_LINKER_OPTIONS section |
| ## when it is not null-terminated. |
| - Name: .linker-options.nonul |
| Type: SHT_LLVM_LINKER_OPTIONS |
| Content: "61" |
| ## Case 5: check we report a warning when it is not possible to read |
| ## the content of the SHT_LLVM_LINKER_OPTIONS section. |
| - Name: .linker-options.broken.content |
| Type: SHT_LLVM_LINKER_OPTIONS |
| ShOffset: 0xffffffff |
| Options: |
| - Name: foo |
| Value: bar |
| ## Case 6: another correct case to show we do not stop dumping after reporting a warning. |
| - Name: .linker-options.valid2 |
| Type: SHT_LLVM_LINKER_OPTIONS |
| Options: |
| - Name: option 3 |
| Value: value 3 |
| |
| ## llvm-readelf doesn't support --elf-linker-options yet. |
| # RUN: llvm-readelf --elf-linker-options %t1 2>&1 | FileCheck %s --check-prefix=READELF |
| |
| # READELF: printELFLinkerOptions not implemented! |