| ## Show that llvm-sizes works correctly on a typical ELF input for sysv |
| ## format. It also shows that the formatting is correct. |
| |
| ## FIXME: The rules demonstrated by this test are not quite what GNU size |
| ## follows. See https://bugs.llvm.org/show_bug.cgi?id=42934. |
| |
| # RUN: yaml2obj %s -o %t.o |
| # RUN: llvm-size --format=sysv %t.o \ |
| # RUN: | FileCheck %s --match-full-lines --strict-whitespace -DFILE=%t.o --implicit-check-not={{.}} |
| # RUN: llvm-size -A %t.o \ |
| # RUN: | FileCheck %s --match-full-lines --strict-whitespace -DFILE=%t.o --implicit-check-not={{.}} |
| |
| # CHECK:[[FILE]] : |
| # CHECK-NEXT:section size addr |
| # CHECK-NEXT:.progbits 1 2097152 |
| # CHECK-NEXT:.symtab_shndx 4 524288 |
| # CHECK-NEXT:.hash 64 65536 |
| # CHECK-NEXT:.dynamic 128 32768 |
| # CHECK-NEXT:.note 256 16384 |
| # CHECK-NEXT:.nobits 512 8192 |
| # CHECK-NEXT:.shlib 2048 2048 |
| # CHECK-NEXT:.dynsym 4096 1024 |
| # CHECK-NEXT:.init_array 8192 512 |
| # CHECK-NEXT:.fini_array 16384 256 |
| # CHECK-NEXT:.preinit_array 32768 128 |
| # CHECK-NEXT:.group 65536 64 |
| # CHECK-NEXT:.relr 131072 32 |
| # CHECK-NEXT:.os_specific 262144 16 |
| # CHECK-NEXT:.proc_specific 524288 8 |
| # CHECK-NEXT:.user_specific 1048576 4 |
| # CHECK-NEXT:Total 2096069 |
| |
| !ELF |
| FileHeader: |
| Class: ELFCLASS64 |
| Data: ELFDATA2LSB |
| Type: ET_REL |
| Machine: EM_X86_64 |
| Sections: |
| - Name: .progbits |
| Type: SHT_PROGBITS |
| ShSize: 0x1 |
| Address: 0x200000 |
| - Name: .strtab |
| Type: SHT_STRTAB |
| ShSize: 0x2 |
| Address: 0x100000 |
| - Name: .symtab_shndx |
| Link: .symtab |
| Type: SHT_SYMTAB_SHNDX |
| ShSize: 0x4 |
| Address: 0x80000 |
| Entries: |
| - Name: .symtab |
| Type: SHT_SYMTAB |
| ## .symtab's size has to be based on .symtab_shndx's size, hence the |
| ## size not following the pattern of the other sections. |
| ShSize: 0x18 |
| Address: 0x40000 |
| - Name: .rela |
| Type: SHT_RELA |
| ShSize: 0x20 |
| Address: 0x20000 |
| - Name: .hash |
| Type: SHT_HASH |
| Content: '' |
| ShSize: 0x40 |
| Address: 0x10000 |
| - Name: .dynamic |
| Type: SHT_DYNAMIC |
| ShSize: 0x80 |
| Address: 0x8000 |
| - Name: .note |
| Type: SHT_NOTE |
| ShSize: 0x100 |
| Address: 0x4000 |
| Notes: [] |
| - Name: .nobits |
| Type: SHT_NOBITS |
| ShSize: 0x200 |
| Address: 0x2000 |
| - Name: .rel |
| Type: SHT_REL |
| ShSize: 0x400 |
| Address: 0x1000 |
| - Name: .shlib |
| Type: SHT_SHLIB |
| ShSize: 0x800 |
| Address: 0x800 |
| - Name: .dynsym |
| Type: SHT_DYNSYM |
| ShSize: 0x1000 |
| Address: 0x400 |
| - Name: .init_array |
| Type: SHT_INIT_ARRAY |
| ShSize: 0x2000 |
| Address: 0x200 |
| - Name: .fini_array |
| Type: SHT_FINI_ARRAY |
| ShSize: 0x4000 |
| Address: 0x100 |
| - Name: .preinit_array |
| Type: SHT_PREINIT_ARRAY |
| ShSize: 0x8000 |
| Address: 0x80 |
| - Name: .group |
| Type: SHT_GROUP |
| ShSize: 0x10000 |
| Address: 0x40 |
| Info: 0 |
| Members: |
| - Name: .relr |
| Type: SHT_RELR |
| ShSize: 0x20000 |
| Address: 0x20 |
| - Name: .os_specific |
| Type: 0x61234567 |
| ShSize: 0x40000 |
| Address: 0x10 |
| - Name: .proc_specific |
| Type: 0x71234567 |
| ShSize: 0x80000 |
| Address: 0x8 |
| - Name: .user_specific |
| Type: 0x81234567 |
| ShSize: 0x100000 |
| Address: 0x4 |
| - Name: .null |
| Type: SHT_NULL |
| ShSize: 0x200000 |
| Address: 0x2 |