Index: llvm/trunk/test/tools/llvm-readobj/gnu-sections.test =================================================================== --- llvm/trunk/test/tools/llvm-readobj/gnu-sections.test +++ llvm/trunk/test/tools/llvm-readobj/gnu-sections.test @@ -1,43 +1,115 @@ -RUN: llvm-readelf -S %p/Inputs/relocs.obj.elf-i386 \ -RUN: | FileCheck %s -check-prefix ELF32 -RUN: llvm-readelf -S %p/Inputs/relocs.obj.elf-x86_64 \ -RUN: | FileCheck %s -check-prefix ELF64 -RUN: llvm-readobj --wide --sections \ -RUN: %p/Inputs/relocs.obj.elf-x86_64 --elf-output-style=GNU \ -RUN: | FileCheck %s -check-prefix ELF64 -RUN: llvm-readobj -W --sections \ -RUN: %p/Inputs/relocs.obj.elf-x86_64 --elf-output-style=GNU \ -RUN: | FileCheck %s -check-prefix ELF64 -RUN: llvm-readelf -W -S %p/Inputs/relocs.obj.elf-x86_64 \ -RUN: | FileCheck %s -check-prefix ELF64 - -ELF32: Section Headers: -ELF32-NEXT: [Nr] Name Type Address Off Size ES Flg Lk Inf Al -ELF32-NEXT: [ 0] NULL 00000000 000000 000000 00 0 0 0 -ELF32-NEXT: [ 1] .text PROGBITS 00000000 000034 0000f6 00 AX 0 0 4 -ELF32-NEXT: [ 2] .rel.text REL 00000000 000318 000148 08 6 1 4 -ELF32-NEXT: [ 3] .data PROGBITS 00000000 00012c 000000 00 WA 0 0 4 -ELF32-NEXT: [ 4] .bss NOBITS 00000000 00012c 000000 00 WA 0 0 4 -ELF32-NEXT: [ 5] .shstrtab STRTAB 00000000 00012c 000030 00 0 0 1 -ELF32-NEXT: [ 6] .symtab SYMTAB 00000000 00029c 000060 10 7 4 4 -ELF32-NEXT: [ 7] .strtab STRTAB 00000000 0002fc 00001b 00 0 0 1 -ELF32-NEXT: Key to Flags: -ELF32-NEXT: W (write), A (alloc), X (execute), M (merge), S (strings), l (large) -ELF32-NEXT: I (info), L (link order), G (group), T (TLS), E (exclude), x (unknown) -ELF32-NEXT: O (extra OS processing required) o (OS specific), p (processor specific) - -ELF64: There are 8 section headers, starting at offset 0x180: -ELF64: Section Headers: -ELF64-NEXT: [Nr] Name Type Address Off Size ES Flg Lk Inf Al -ELF64-NEXT: [ 0] NULL 0000000000000000 000000 000000 00 0 0 0 -ELF64-NEXT: [ 1] .text PROGBITS 0000000000000000 000040 00010a 00 AX 0 0 4 -ELF64-NEXT: [ 2] .rela.text RELA 0000000000000000 000430 000390 18 6 1 8 -ELF64-NEXT: [ 3] .data PROGBITS 0000000000000000 00014c 000000 00 WA 0 0 4 -ELF64-NEXT: [ 4] .bss NOBITS 0000000000000000 00014c 000000 00 WA 0 0 4 -ELF64-NEXT: [ 5] .shstrtab STRTAB 0000000000000000 00014c 000031 00 0 0 1 -ELF64-NEXT: [ 6] .symtab SYMTAB 0000000000000000 000380 000090 18 7 4 8 -ELF64-NEXT: [ 7] .strtab STRTAB 0000000000000000 000410 00001b 00 0 0 1 -ELF64-NEXT: Key to Flags: -ELF64-NEXT: W (write), A (alloc), X (execute), M (merge), S (strings), l (large) -ELF64-NEXT: I (info), L (link order), G (group), T (TLS), E (exclude), x (unknown) -ELF64-NEXT: O (extra OS processing required) o (OS specific), p (processor specific) +# RUN: yaml2obj --docnum=1 %s -o %t-i386.o +# RUN: llvm-readelf -S %t-i386.o | FileCheck %s -check-prefix ELF32 + +# ELF32: There are 8 section headers, starting at offset 0x34: +# ELF32-EMPTY: +# ELF32-NEXT: Section Headers: +# ELF32-NEXT: [Nr] Name Type Address Off Size ES Flg Lk Inf Al +# ELF32-NEXT: [ 0] NULL 00000000 000000 000000 00 0 0 0 +# ELF32-NEXT: [ 1] .text PROGBITS 00000000 000174 000001 00 AX 0 0 4 +# ELF32-NEXT: [ 2] .rel.text REL 00000000 000178 000000 08 5 1 4 +# ELF32-NEXT: [ 3] .data PROGBITS 00000000 000178 000000 00 WA 0 0 4 +# ELF32-NEXT: [ 4] .bss NOBITS 00000000 000178 000000 00 WA 0 0 4 +# ELF32-NEXT: [ 5] .symtab SYMTAB 00000000 000178 000020 10 6 2 8 +# ELF32-NEXT: [ 6] .strtab STRTAB 00000000 000198 000007 00 0 0 1 +# ELF32-NEXT: [ 7] .shstrtab STRTAB 00000000 00019f 000030 00 0 0 1 +# ELF32-NEXT: Key to Flags: +# ELF32-NEXT: W (write), A (alloc), X (execute), M (merge), S (strings), l (large) +# ELF32-NEXT: I (info), L (link order), G (group), T (TLS), E (exclude), x (unknown) +# ELF32-NEXT: O (extra OS processing required) o (OS specific), p (processor specific) + +--- !ELF +FileHeader: + Class: ELFCLASS32 + Data: ELFDATA2LSB + OSABI: ELFOSABI_GNU + Type: ET_REL + Machine: EM_386 +Sections: + - Name: .text + Type: SHT_PROGBITS + Flags: [ SHF_ALLOC, SHF_EXECINSTR ] + AddressAlign: 0x0000000000000004 + Content: 00 + - Name: .rel.text + Type: SHT_REL + Link: .symtab + AddressAlign: 0x0000000000000004 + EntSize: 0x0000000000000008 + Info: .text + Relocations: + - Name: .data + Type: SHT_PROGBITS + Flags: [ SHF_WRITE, SHF_ALLOC ] + AddressAlign: 0x0000000000000004 + Content: '' + - Name: .bss + Type: SHT_NOBITS + Flags: [ SHF_WRITE, SHF_ALLOC ] + AddressAlign: 0x0000000000000004 +Symbols: + - Name: .text + Type: STT_SECTION + Section: .text + +# RUN: yaml2obj --docnum=2 %s -o %t-x64.o +# RUN: llvm-readelf -S %t-x64.o | FileCheck %s -check-prefix ELF64 + +## Check that --wide is the same as -W and ignored and also +## that --section is the same as -S. +# RUN: llvm-readobj --wide --sections %t-x64.o --elf-output-style=GNU \ +# RUN: | FileCheck %s -check-prefix ELF64 +# RUN: llvm-readobj -W --sections %t-x64.o --elf-output-style=GNU \ +# RUN: | FileCheck %s -check-prefix ELF64 +# RUN: llvm-readelf -W -S %t-x64.o | FileCheck %s -check-prefix ELF64 + +# ELF64: There are 8 section headers, starting at offset 0x40: +# ELF64-EMPTY: +# ELF64-NEXT: Section Headers: +# ELF64-NEXT: [Nr] Name Type Address Off Size ES Flg Lk Inf Al +# ELF64-NEXT: [ 0] NULL 0000000000000000 000000 000000 00 0 0 0 +# ELF64-NEXT: [ 1] .text PROGBITS 0000000000000000 000240 000001 00 AX 0 0 4 +# ELF64-NEXT: [ 2] .rela.text RELA 0000000000000000 000248 000000 18 5 1 8 +# ELF64-NEXT: [ 3] .data PROGBITS 0000000000000000 000248 000000 00 WA 0 0 4 +# ELF64-NEXT: [ 4] .bss NOBITS 0000000000000000 000248 000000 00 WA 0 0 4 +# ELF64-NEXT: [ 5] .symtab SYMTAB 0000000000000000 000248 000030 18 6 2 8 +# ELF64-NEXT: [ 6] .strtab STRTAB 0000000000000000 000278 000007 00 0 0 1 +# ELF64-NEXT: [ 7] .shstrtab STRTAB 0000000000000000 00027f 000031 00 0 0 1 +# ELF64-NEXT: Key to Flags: +# ELF64-NEXT: W (write), A (alloc), X (execute), M (merge), S (strings), l (large) +# ELF64-NEXT: I (info), L (link order), G (group), T (TLS), E (exclude), x (unknown) +# ELF64-NEXT: O (extra OS processing required) o (OS specific), p (processor specific) + +--- !ELF +FileHeader: + Class: ELFCLASS64 + Data: ELFDATA2LSB + OSABI: ELFOSABI_GNU + Type: ET_REL + Machine: EM_X86_64 +Sections: + - Name: .text + Type: SHT_PROGBITS + Flags: [ SHF_ALLOC, SHF_EXECINSTR ] + AddressAlign: 0x0000000000000004 + Content: 00 + - Name: .rela.text + Type: SHT_RELA + Link: .symtab + AddressAlign: 0x0000000000000008 + EntSize: 0x0000000000000018 + Info: .text + Relocations: + - Name: .data + Type: SHT_PROGBITS + Flags: [ SHF_WRITE, SHF_ALLOC ] + AddressAlign: 0x0000000000000004 + Content: '' + - Name: .bss + Type: SHT_NOBITS + Flags: [ SHF_WRITE, SHF_ALLOC ] + AddressAlign: 0x0000000000000004 +Symbols: + - Name: .text + Type: STT_SECTION + Section: .text