## 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 > %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 ShSize: 0x40 Address: 0x10000 - Name: .dynamic Type: SHT_DYNAMIC ShSize: 0x80 Address: 0x8000 - Name: .note Type: SHT_NOTE ShSize: 0x100 Address: 0x4000 - 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