[llvm] r368821 - [llvm-size][test] Improve llvm-size testing
James Henderson via llvm-commits
llvm-commits at lists.llvm.org
Wed Aug 14 03:17:34 PDT 2019
Author: jhenderson
Date: Wed Aug 14 03:17:34 2019
New Revision: 368821
URL: http://llvm.org/viewvc/llvm-project?rev=368821&view=rev
Log:
[llvm-size][test] Improve llvm-size testing
This patch significantly improves the llvm-size testing. The changes
made are:
1) Change all tests to use yaml2obj instead of assembly or pre-canned
inputs.
2) Move the tests out of the X86 directory, since they don't need to be
there after 1).
3) Increased test coverage.
4) Added comments to explain purpose of tests.
I haven't attempted to add test coverage for all Mach-O related code, as
I am not familiar enough with that file format to be able to.
Reviewers: grimar, MaskRay
Differential Revision: https://reviews.llvm.org/D66134
Added:
llvm/trunk/test/tools/llvm-size/archive.test
llvm/trunk/test/tools/llvm-size/common.test
llvm/trunk/test/tools/llvm-size/elf-berkeley.test
llvm/trunk/test/tools/llvm-size/elf-m.test
llvm/trunk/test/tools/llvm-size/elf-sysv.test
llvm/trunk/test/tools/llvm-size/invalid-input.test
llvm/trunk/test/tools/llvm-size/long-format.test
llvm/trunk/test/tools/llvm-size/macho-berkeley.test
llvm/trunk/test/tools/llvm-size/macho-sysv.test
llvm/trunk/test/tools/llvm-size/multiple-inputs.test
llvm/trunk/test/tools/llvm-size/no-input.test
llvm/trunk/test/tools/llvm-size/radix.test
llvm/trunk/test/tools/llvm-size/response-file.test
llvm/trunk/test/tools/llvm-size/stdin.test
llvm/trunk/test/tools/llvm-size/totals.test
llvm/trunk/test/tools/llvm-size/unknown-format.test
llvm/trunk/test/tools/llvm-size/version.test
Removed:
llvm/trunk/test/tools/llvm-size/Inputs/
llvm/trunk/test/tools/llvm-size/X86/
llvm/trunk/test/tools/llvm-size/basic.test
Modified:
llvm/trunk/test/tools/llvm-size/darwin-m.test
llvm/trunk/test/tools/llvm-size/help.test
Added: llvm/trunk/test/tools/llvm-size/archive.test
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/tools/llvm-size/archive.test?rev=368821&view=auto
==============================================================================
--- llvm/trunk/test/tools/llvm-size/archive.test (added)
+++ llvm/trunk/test/tools/llvm-size/archive.test Wed Aug 14 03:17:34 2019
@@ -0,0 +1,125 @@
+## Show how llvm-size behaves when passed in an archive.
+
+# RUN: yaml2obj %s --docnum=1 -o %t1
+# RUN: yaml2obj %s --docnum=2 -o %t2
+
+## Case 1: Empty archive. No output expected.
+# RUN: rm -f %t1.a
+# RUN: llvm-ar rc %t1.a
+
+# RUN: llvm-size -B %t1.a | count 0
+## Sysv output prints a single blank line in this case.
+# RUN: llvm-size -A %t1.a | FileCheck %s --implicit-check-not={{.}}
+
+## Case 2: Single member.
+# RUN: rm -f %t2.a
+# RUN: llvm-ar rc %t2.a %t1
+
+# RUN: llvm-size -B %t2.a | FileCheck %s -DARCHIVE=%t2.a --check-prefix=BERKELEY-1
+# RUN: llvm-size -A %t2.a | FileCheck %s -DARCHIVE=%t2.a --check-prefix=SYSV-1
+
+## Case 3: Multiple members.
+# RUN: rm -f %t3.a
+# RUN: llvm-ar rc %t3.a %t1 %t2
+
+# RUN: llvm-size -B %t3.a | FileCheck %s -DARCHIVE=%t3.a --check-prefixes=BERKELEY-1,BERKELEY-2
+# RUN: llvm-size -A %t3.a | FileCheck %s -DARCHIVE=%t3.a --check-prefixes=SYSV-1,SYSV-2
+
+## Case 4: Mixing archives and non-archives produces sensible output:
+# RUN: llvm-size -B %t1 %t2.a %t2 %t3.a \
+# RUN: | FileCheck %s -DARCHIVE=%t3.a -DARCHIVE2=%t2.a -DFILE1=%t1 -DFILE2=%t2 \
+# RUN: --check-prefixes=BERKELEY-1,BERKELEY-2,BERKELEY-3
+# RUN: llvm-size -A %t1 %t2.a %t2 %t3.a \
+# RUN: | FileCheck %s -DARCHIVE=%t3.a -DARCHIVE2=%t2.a -DFILE1=%t1 -DFILE2=%t2 \
+# RUN: --check-prefixes=SYSV-1,SYSV-2,SYSV-3
+
+# BERKELEY-1: text data bss dec hex filename
+# BERKELEY-3-NEXT: 1 2 4 7 7 [[FILE1]]
+# BERKELEY-3-NEXT: 1 2 4 7 7 archive.test.tmp1 (ex [[ARCHIVE2]])
+# BERKELEY-3-NEXT: 8 16 32 56 38 [[FILE2]]
+# BERKELEY-1-NEXT: 1 2 4 7 7 archive.test.tmp1 (ex [[ARCHIVE]])
+# BERKELEY-2-NEXT: 8 16 32 56 38 archive.test.tmp2 (ex [[ARCHIVE]])
+# BERKELEY-1-NOT:{{.}}
+
+# SYSV-3: [[FILE1]] :
+# SYSV-3-NEXT: section size addr
+# SYSV-3-NEXT: .text 1 4
+# SYSV-3-NEXT: .data 2 2
+# SYSV-3-NEXT: .bss 4 1
+# SYSV-3-NEXT: Total 7
+# SYSV-3-EMPTY:
+# SYSV-3-NEXT: archive.test.tmp1 (ex [[ARCHIVE2]]):
+# SYSV-3-NEXT: section size addr
+# SYSV-3-NEXT: .text 1 4
+# SYSV-3-NEXT: .data 2 2
+# SYSV-3-NEXT: .bss 4 1
+# SYSV-3-NEXT: Total 7
+# SYSV-3-EMPTY:
+# SYSV-3-NEXT: [[FILE2]] :
+# SYSV-3-NEXT: section size addr
+# SYSV-3-NEXT: .text 8 32
+# SYSV-3-NEXT: .data 16 16
+# SYSV-3-NEXT: .bss 32 8
+# SYSV-3-NEXT: Total 56
+# SYSV-3-EMPTY:
+
+# SYSV-1: archive.test.tmp1 (ex [[ARCHIVE]]):
+# SYSV-1-NEXT: section size addr
+# SYSV-1-NEXT: .text 1 4
+# SYSV-1-NEXT: .data 2 2
+# SYSV-1-NEXT: .bss 4 1
+# SYSV-1-NEXT: Total 7
+
+# SYSV-2-NEXT: archive.test.tmp2 (ex [[ARCHIVE]]):
+# SYSV-2-NEXT: section size addr
+# SYSV-2-NEXT: .text 8 32
+# SYSV-2-NEXT: .data 16 16
+# SYSV-2-NEXT: .bss 32 8
+# SYSV-2-NEXT: Total 56
+# SYSV-1-NOT:{{.}}
+
+--- !ELF
+FileHeader:
+ Class: ELFCLASS64
+ Data: ELFDATA2LSB
+ Type: ET_REL
+ Machine: EM_X86_64
+Sections:
+ - Name: .text
+ Type: SHT_PROGBITS
+ Flags: [SHF_ALLOC, SHF_EXECINSTR]
+ Size: 1
+ Address: 4
+ - Name: .data
+ Type: SHT_PROGBITS
+ Flags: [SHF_ALLOC, SHF_WRITE]
+ Size: 2
+ Address: 2
+ - Name: .bss
+ Type: SHT_NOBITS
+ Flags: [SHF_ALLOC, SHF_WRITE]
+ Size: 4
+ Address: 1
+
+--- !ELF
+FileHeader:
+ Class: ELFCLASS64
+ Data: ELFDATA2LSB
+ Type: ET_REL
+ Machine: EM_X86_64
+Sections:
+ - Name: .text
+ Type: SHT_PROGBITS
+ Flags: [SHF_ALLOC, SHF_EXECINSTR]
+ Size: 8
+ Address: 32
+ - Name: .data
+ Type: SHT_PROGBITS
+ Flags: [SHF_ALLOC, SHF_WRITE]
+ Size: 16
+ Address: 16
+ - Name: .bss
+ Type: SHT_NOBITS
+ Flags: [SHF_ALLOC, SHF_WRITE]
+ Size: 32
+ Address: 8
Removed: llvm/trunk/test/tools/llvm-size/basic.test
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/tools/llvm-size/basic.test?rev=368820&view=auto
==============================================================================
--- llvm/trunk/test/tools/llvm-size/basic.test (original)
+++ llvm/trunk/test/tools/llvm-size/basic.test (removed)
@@ -1,2 +0,0 @@
-RUN: not llvm-size %t.blah 2>&1 | FileCheck --check-prefix=ENOENT %s
-ENOENT: {{.*}}llvm-size{{(\.EXE|\.exe)?}}: {{.*}}basic.test.tmp.blah {{[Nn]}}o such file or directory
Added: llvm/trunk/test/tools/llvm-size/common.test
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/tools/llvm-size/common.test?rev=368821&view=auto
==============================================================================
--- llvm/trunk/test/tools/llvm-size/common.test (added)
+++ llvm/trunk/test/tools/llvm-size/common.test Wed Aug 14 03:17:34 2019
@@ -0,0 +1,44 @@
+## Check that with the common switch common symbols are added to bss (Berkeley
+## output) or shown as *COM* (sysv output). Otherwise their size is ignored.
+
+# RUN: yaml2obj %s -o %t.o
+# RUN: llvm-size -A --common %t.o | FileCheck --check-prefix=SYSV %s
+# RUN: llvm-size -B --common %t.o | FileCheck --check-prefix=BSD %s
+# RUN: llvm-size -A %t.o | FileCheck --check-prefix=SYSVNOCOMM %s
+# RUN: llvm-size -B %t.o | FileCheck --check-prefix=BSDNOCOMM %s
+
+# SYSV: {{.*}}.o :
+# SYSV-NEXT: section size addr
+# SYSV-NEXT: .text 0 0
+# SYSV-NEXT: *COM* 8 0
+# SYSV-NEXT: Total 8
+
+# SYSVNOCOMM: {{.*}}.o :
+# SYSVNOCOMM-NEXT: section size addr
+# SYSVNOCOMM-NEXT: .text 0 0
+# SYSVNOCOMM-NEXT: Total 0
+
+# BSD: text data bss dec hex filename
+# BSD-NEXT: 0 0 8 8 8 {{.*}}.o
+
+# BSDNOCOMM: text data bss dec hex filename
+# BSDNOCOMM-NEXT: 0 0 0 0 0 {{.*}}.o
+
+--- !ELF
+FileHeader:
+ Class: ELFCLASS64
+ Data: ELFDATA2LSB
+ Type: ET_EXEC
+ Machine: EM_X86_64
+Sections:
+ - Name: .text
+ Type: SHT_PROGBITS
+Symbols:
+ - Name: y
+ Type: STT_OBJECT
+ Size: 4
+ Index: SHN_COMMON
+ - Name: z
+ Type: STT_OBJECT
+ Size: 4
+ Index: SHN_COMMON
Modified: llvm/trunk/test/tools/llvm-size/darwin-m.test
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/tools/llvm-size/darwin-m.test?rev=368821&r1=368820&r2=368821&view=diff
==============================================================================
--- llvm/trunk/test/tools/llvm-size/darwin-m.test (original)
+++ llvm/trunk/test/tools/llvm-size/darwin-m.test Wed Aug 14 03:17:34 2019
@@ -1,11 +1,123 @@
-RUN: llvm-size -m %p/Inputs/darwin-m.o | FileCheck --check-prefix="DARWIN" %s
-RUN: llvm-size -m %p/Inputs/darwin-m.o %p/Inputs/darwin-m1.o | FileCheck --check-prefix="DARWIN2" %s
+## Show that -m/--format=darwin produces darwin-style output.
-DARWIN: Segment : 8
-DARWIN-NEXT: Section (__TEXT, __text): 4
-DARWIN-NEXT: Section (__DATA, __data): 4
-DARWIN-NEXT: total 8
-DARWIN-NEXT: total 8
+# RUN: yaml2obj %s --docnum=1 -o %t
+# RUN: yaml2obj %s --docnum=2 -o %t2
+# RUN: llvm-size -m %t \
+# RUN: | FileCheck --check-prefix=DARWIN %s --implicit-check-not={{.}} \
+# RUN: --strict-whitespace --match-full-lines
+# RUN: llvm-size -m %t %t2 \
+# RUN: | FileCheck --check-prefixes=DARWIN,DARWIN2 %s --implicit-check-not={{.}} \
+# RUN: -DFILE1=%t -DFILE2=%t2 --strict-whitespace --match-full-lines
+# RUN: llvm-size --format=darwin %t \
+# RUN: | FileCheck --check-prefix=DARWIN %s --implicit-check-not={{.}} \
+# RUN: --strict-whitespace --match-full-lines
+# RUN: llvm-size --format=darwin %t %t2 \
+# RUN: | FileCheck --check-prefixes=DARWIN,DARWIN2 %s --implicit-check-not={{.}} \
+# RUN: -DFILE1=%t -DFILE2=%t2 --strict-whitespace --match-full-lines
-DARWIN2: Inputs/darwin-m.o:
-DARWIN2: Inputs/darwin-m1.o:
+# DARWIN2:[[FILE1]]:
+# DARWIN:Segment : 12
+# DARWIN-NEXT: Section (__TEXT, __text): 4
+# DARWIN-NEXT: Section (__DATA, __data): 8
+# DARWIN-NEXT: total 12
+# DARWIN-NEXT:total 12
+# DARWIN2:[[FILE2]]:
+# DARWIN2-NEXT:Segment : 48
+# DARWIN2-NEXT: Section (__TEXT, __text): 16
+# DARWIN2-NEXT: Section (__DATA, __data): 32
+# DARWIN2-NEXT: total 48
+# DARWIN2-NEXT:total 48
+
+--- !mach-o
+FileHeader:
+ magic: 0xFEEDFACE
+ cputype: 0x0000000C
+ cpusubtype: 0x00000009
+ filetype: 0x00000001
+ ncmds: 1
+ sizeofcmds: 192
+ flags: 0x00000000
+LoadCommands:
+ - cmd: LC_SEGMENT
+ cmdsize: 192
+ segname: ''
+ vmaddr: 0
+ vmsize: 12
+ fileoff: 220
+ filesize: 12
+ maxprot: 7
+ initprot: 7
+ nsects: 2
+ flags: 0
+ Sections:
+ - sectname: __text
+ segname: __TEXT
+ addr: 0x0000000000000000
+ size: 4
+ offset: 0x000000DC
+ align: 0
+ reloff: 0x00000000
+ nreloc: 0
+ flags: 0x80000000
+ reserved1: 0x00000000
+ reserved2: 0x00000000
+ reserved3: 0x00000000
+ - sectname: __data
+ segname: __DATA
+ addr: 0x0000000000000004
+ size: 8
+ offset: 0x000000E0
+ align: 0
+ reloff: 0x00000000
+ nreloc: 0
+ flags: 0x00000000
+ reserved1: 0x00000000
+ reserved2: 0x00000000
+ reserved3: 0x00000000
+
+--- !mach-o
+FileHeader:
+ magic: 0xFEEDFACE
+ cputype: 0x0000000C
+ cpusubtype: 0x00000009
+ filetype: 0x00000001
+ ncmds: 1
+ sizeofcmds: 192
+ flags: 0x00000000
+LoadCommands:
+ - cmd: LC_SEGMENT
+ cmdsize: 192
+ segname: ''
+ vmaddr: 0
+ vmsize: 48
+ fileoff: 220
+ filesize: 48
+ maxprot: 7
+ initprot: 7
+ nsects: 2
+ flags: 0
+ Sections:
+ - sectname: __text
+ segname: __TEXT
+ addr: 0x0000000000000000
+ size: 16
+ offset: 0x000000DC
+ align: 0
+ reloff: 0x00000000
+ nreloc: 0
+ flags: 0x80000000
+ reserved1: 0x00000000
+ reserved2: 0x00000000
+ reserved3: 0x00000000
+ - sectname: __data
+ segname: __DATA
+ addr: 0x0000000000000010
+ size: 32
+ offset: 0x000000EC
+ align: 0
+ reloff: 0x00000000
+ nreloc: 0
+ flags: 0x00000000
+ reserved1: 0x00000000
+ reserved2: 0x00000000
+ reserved3: 0x00000000
Added: llvm/trunk/test/tools/llvm-size/elf-berkeley.test
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/tools/llvm-size/elf-berkeley.test?rev=368821&view=auto
==============================================================================
--- llvm/trunk/test/tools/llvm-size/elf-berkeley.test (added)
+++ llvm/trunk/test/tools/llvm-size/elf-berkeley.test Wed Aug 14 03:17:34 2019
@@ -0,0 +1,66 @@
+## Show that llvm-sizes works correctly on a typical ELF input for Berkeley
+## format. It also shows that the formatting is correct (including using tabs as
+## field separators).
+
+# RUN: yaml2obj %s > %t.o
+
+# RUN: llvm-size -B %t.o \
+# RUN: | FileCheck %s --match-full-lines --strict-whitespace -DFILE=%t.o --implicit-check-not={{.}}
+# RUN: llvm-size --format=berkeley %t.o \
+# RUN: | FileCheck %s --match-full-lines --strict-whitespace -DFILE=%t.o --implicit-check-not={{.}}
+
+## Also show that the default output format is Berkeley.
+# RUN: llvm-size %t.o \
+# RUN: | FileCheck %s --match-full-lines --strict-whitespace -DFILE=%t.o --implicit-check-not={{.}}
+
+## text is .text, .eh_frame, .unusual_name_for_code: 2 + 4 + 64 = 70
+## data is .data, .init_array, .moar_stuff: 8 + 32 + 128 = 168
+## bss is .bss: 1
+## total: 239
+## unaccounted for (not affecting total) is .debug_info, .text.but_not_really
+# CHECK: text data bss dec hex filename
+# CHECK-NEXT: 70 168 1 239 ef [[FILE]]
+
+!ELF
+FileHeader:
+ Class: ELFCLASS64
+ Data: ELFDATA2LSB
+ Type: ET_EXEC
+ Machine: EM_X86_64
+Sections:
+ - Name: .bss
+ Type: SHT_NOBITS
+ Flags: [ SHF_ALLOC, SHF_WRITE ]
+ Size: 1
+ - Name: .text
+ Type: SHT_PROGBITS
+ Flags: [ SHF_ALLOC, SHF_EXECINSTR ]
+ Size: 2
+ - Name: .unusual_name_for_code
+ Type: SHT_PROGBITS
+ Flags: [ SHF_ALLOC, SHF_EXECINSTR ]
+ Size: 64
+ - Name: .eh_frame
+ Type: SHT_PROGBITS
+ Flags: [ SHF_ALLOC ]
+ Size: 4
+ - Name: .data
+ Type: SHT_PROGBITS
+ Flags: [ SHF_ALLOC, SHF_WRITE ]
+ Size: 8
+ - Name: .moar_stuff
+ Type: SHT_PROGBITS
+ Flags: [ SHF_ALLOC, SHF_WRITE ]
+ Size: 128
+ - Name: .text.but_not_really
+ Type: SHT_PROGBITS
+ Flags: [ ]
+ Size: 256
+ - Name: .debug_info
+ Type: SHT_PROGBITS
+ Flags: [ ]
+ Size: 16
+ - Name: .init_array
+ Type: SHT_INIT_ARRAY
+ Flags: [ SHF_ALLOC, SHF_WRITE ]
+ Size: 32
Added: llvm/trunk/test/tools/llvm-size/elf-m.test
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/tools/llvm-size/elf-m.test?rev=368821&view=auto
==============================================================================
--- llvm/trunk/test/tools/llvm-size/elf-m.test (added)
+++ llvm/trunk/test/tools/llvm-size/elf-m.test Wed Aug 14 03:17:34 2019
@@ -0,0 +1,18 @@
+## Show that llvm-size falls back to Berkeley output if --format=darwin is
+## specified and the input is not Mach-O.
+
+# RUN: yaml2obj %s -o %t
+# RUN: llvm-size -m %t | FileCheck %s
+# RUN: llvm-size --format=darwin %t | FileCheck %s
+
+## FIXME: The input filename should be printed but isn't currently due to
+## https://bugs.llvm.org/show_bug.cgi?id=42971.
+# CHECK: text data bss dec hex filename
+# CHECK-NEXT: 0 0 0 0 0
+
+--- !ELF
+FileHeader:
+ Class: ELFCLASS64
+ Data: ELFDATA2LSB
+ Type: ET_REL
+ Machine: EM_X86_64
Added: llvm/trunk/test/tools/llvm-size/elf-sysv.test
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/tools/llvm-size/elf-sysv.test?rev=368821&view=auto
==============================================================================
--- llvm/trunk/test/tools/llvm-size/elf-sysv.test (added)
+++ llvm/trunk/test/tools/llvm-size/elf-sysv.test Wed Aug 14 03:17:34 2019
@@ -0,0 +1,129 @@
+## 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
Modified: llvm/trunk/test/tools/llvm-size/help.test
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/tools/llvm-size/help.test?rev=368821&r1=368820&r2=368821&view=diff
==============================================================================
--- llvm/trunk/test/tools/llvm-size/help.test (original)
+++ llvm/trunk/test/tools/llvm-size/help.test Wed Aug 14 03:17:34 2019
@@ -1,7 +1,15 @@
-RUN: llvm-size -h | FileCheck %s
-RUN: llvm-size --help | FileCheck %s
+## Show that help text is printed correctly when requested.
+
+RUN: llvm-size -h | FileCheck %s --check-prefixes=CHECK,CATEG
+RUN: llvm-size --help | FileCheck %s --check-prefixes=CHECK,CATEG
+RUN: llvm-size --help-list \
+RUN: | FileCheck %s --check-prefixes=CHECK,LIST
CHECK: OVERVIEW: llvm object size dumper
CHECK: USAGE: llvm-size{{(.exe)?}} [options] <input files>{{$}}
CHECK: OPTIONS:
+CATEG: Generic Options:
+LIST-NOT: Generic Options:
+CATEG: llvm-size Options:
+LIST-NOT: llvm-size Options:
CHECK: @FILE
Added: llvm/trunk/test/tools/llvm-size/invalid-input.test
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/tools/llvm-size/invalid-input.test?rev=368821&view=auto
==============================================================================
--- llvm/trunk/test/tools/llvm-size/invalid-input.test (added)
+++ llvm/trunk/test/tools/llvm-size/invalid-input.test Wed Aug 14 03:17:34 2019
@@ -0,0 +1,22 @@
+## Show that llvm-size reports an error when passed an input file in an
+## unknown format.
+
+## FIXME: The error messages tested here are not consistently formatted, and the
+## second one doesn't even return with a non-zero exit code.
+## See https://bugs.llvm.org/show_bug.cgi?id=42970.
+
+# RUN: not llvm-size %s 2>&1 | FileCheck %s -DFILE=%s --check-prefix=UNRECOGNIZED
+# UNRECOGNIZED: {{.*}}llvm-size{{(.*)}}: [[FILE]] The file was not recognized as a valid object file
+
+## Show that llvm-size reports an error when passed an input file in an
+## unsupported format.
+
+# RUN: yaml2obj %s -o %t
+# RUN: llvm-size %t 2>&1 | FileCheck %s -DFILE=%t --check-prefix=NOTSUPPORTED
+# NOTSUPPORTED: {{.*}}llvm-size{{(.*)}}: [[FILE]]: Unrecognized file type.
+
+--- !minidump
+Streams:
+ - Type: LinuxAuxv
+ Size: 7
+ Content: 11223344556600
Added: llvm/trunk/test/tools/llvm-size/long-format.test
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/tools/llvm-size/long-format.test?rev=368821&view=auto
==============================================================================
--- llvm/trunk/test/tools/llvm-size/long-format.test (added)
+++ llvm/trunk/test/tools/llvm-size/long-format.test Wed Aug 14 03:17:34 2019
@@ -0,0 +1,58 @@
+## Show that the -l option produces more verbose address and offset information
+## for darwin format.
+
+# RUN: yaml2obj %s -o %t
+# RUN: llvm-size %t -m -l | FileCheck %s
+
+# CHECK: Segment : 12 (vmaddr 0x0 fileoff 220)
+# CHECK-NEXT: Section (__TEXT, __text): 4 (addr 0x0 offset 220)
+# CHECK-NEXT: Section (__DATA, __data): 8 (addr 0x4 offset 224)
+# CHECK-NEXT: total 12
+# CHECK-NEXT: total 12
+
+--- !mach-o
+FileHeader:
+ magic: 0xFEEDFACE
+ cputype: 0x0000000C
+ cpusubtype: 0x00000009
+ filetype: 0x00000001
+ ncmds: 1
+ sizeofcmds: 192
+ flags: 0x00000000
+LoadCommands:
+ - cmd: LC_SEGMENT
+ cmdsize: 192
+ segname: ''
+ vmaddr: 0
+ vmsize: 12
+ fileoff: 220
+ filesize: 12
+ maxprot: 7
+ initprot: 7
+ nsects: 2
+ flags: 0
+ Sections:
+ - sectname: __text
+ segname: __TEXT
+ addr: 0x0000000000000000
+ size: 4
+ offset: 0x000000DC
+ align: 0
+ reloff: 0x00000000
+ nreloc: 0
+ flags: 0x80000000
+ reserved1: 0x00000000
+ reserved2: 0x00000000
+ reserved3: 0x00000000
+ - sectname: __data
+ segname: __DATA
+ addr: 0x0000000000000004
+ size: 8
+ offset: 0x000000E0
+ align: 0
+ reloff: 0x00000000
+ nreloc: 0
+ flags: 0x00000000
+ reserved1: 0x00000000
+ reserved2: 0x00000000
+ reserved3: 0x00000000
Added: llvm/trunk/test/tools/llvm-size/macho-berkeley.test
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/tools/llvm-size/macho-berkeley.test?rev=368821&view=auto
==============================================================================
--- llvm/trunk/test/tools/llvm-size/macho-berkeley.test (added)
+++ llvm/trunk/test/tools/llvm-size/macho-berkeley.test Wed Aug 14 03:17:34 2019
@@ -0,0 +1,55 @@
+## Show that llvm-size can print Mach-O files using berkeley-style output.
+
+# RUN: yaml2obj %s -o %t
+# RUN: llvm-size %t -B \
+# RUN: | FileCheck %s --implicit-check-not={{.}} --strict-whitespace
+
+# CHECK: __TEXT __DATA __OBJC others dec hex
+# CHECK-NEXT: 4 8 0 0 12 c {{$}}
+
+--- !mach-o
+FileHeader:
+ magic: 0xFEEDFACE
+ cputype: 0x0000000C
+ cpusubtype: 0x00000009
+ filetype: 0x00000001
+ ncmds: 1
+ sizeofcmds: 192
+ flags: 0x00000000
+LoadCommands:
+ - cmd: LC_SEGMENT
+ cmdsize: 192
+ segname: ''
+ vmaddr: 0
+ vmsize: 12
+ fileoff: 220
+ filesize: 12
+ maxprot: 7
+ initprot: 7
+ nsects: 2
+ flags: 0
+ Sections:
+ - sectname: __text
+ segname: __TEXT
+ addr: 0x0000000000000000
+ size: 4
+ offset: 0x000000DC
+ align: 0
+ reloff: 0x00000000
+ nreloc: 0
+ flags: 0x80000000
+ reserved1: 0x00000000
+ reserved2: 0x00000000
+ reserved3: 0x00000000
+ - sectname: __data
+ segname: __DATA
+ addr: 0x0000000000000004
+ size: 8
+ offset: 0x000000E0
+ align: 0
+ reloff: 0x00000000
+ nreloc: 0
+ flags: 0x00000000
+ reserved1: 0x00000000
+ reserved2: 0x00000000
+ reserved3: 0x00000000
Added: llvm/trunk/test/tools/llvm-size/macho-sysv.test
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/tools/llvm-size/macho-sysv.test?rev=368821&view=auto
==============================================================================
--- llvm/trunk/test/tools/llvm-size/macho-sysv.test (added)
+++ llvm/trunk/test/tools/llvm-size/macho-sysv.test Wed Aug 14 03:17:34 2019
@@ -0,0 +1,58 @@
+## Show that llvm-size can print Mach-O files using sysv-style output.
+
+# RUN: yaml2obj %s -o %t
+# RUN: llvm-size %t -A \
+# RUN: | FileCheck %s --implicit-check-not={{.}} --strict-whitespace -DFILE=%t
+
+# CHECK: [[FILE]] :
+# CHECK-NEXT: section size addr
+# CHECK-NEXT: __text 4 0
+# CHECK-NEXT: __data 8 4
+# CHECK-NEXT: Total 12
+
+--- !mach-o
+FileHeader:
+ magic: 0xFEEDFACE
+ cputype: 0x0000000C
+ cpusubtype: 0x00000009
+ filetype: 0x00000001
+ ncmds: 1
+ sizeofcmds: 192
+ flags: 0x00000000
+LoadCommands:
+ - cmd: LC_SEGMENT
+ cmdsize: 192
+ segname: ''
+ vmaddr: 0
+ vmsize: 12
+ fileoff: 220
+ filesize: 12
+ maxprot: 7
+ initprot: 7
+ nsects: 2
+ flags: 0
+ Sections:
+ - sectname: __text
+ segname: __TEXT
+ addr: 0x0000000000000000
+ size: 4
+ offset: 0x000000DC
+ align: 0
+ reloff: 0x00000000
+ nreloc: 0
+ flags: 0x80000000
+ reserved1: 0x00000000
+ reserved2: 0x00000000
+ reserved3: 0x00000000
+ - sectname: __data
+ segname: __DATA
+ addr: 0x0000000000000004
+ size: 8
+ offset: 0x000000E0
+ align: 0
+ reloff: 0x00000000
+ nreloc: 0
+ flags: 0x00000000
+ reserved1: 0x00000000
+ reserved2: 0x00000000
+ reserved3: 0x00000000
Added: llvm/trunk/test/tools/llvm-size/multiple-inputs.test
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/tools/llvm-size/multiple-inputs.test?rev=368821&view=auto
==============================================================================
--- llvm/trunk/test/tools/llvm-size/multiple-inputs.test (added)
+++ llvm/trunk/test/tools/llvm-size/multiple-inputs.test Wed Aug 14 03:17:34 2019
@@ -0,0 +1,72 @@
+## Show how llvm-size behaves when passed in multiple inputs.
+
+# RUN: yaml2obj %s --docnum=1 -o %t1
+# RUN: yaml2obj %s --docnum=2 -o %t2
+# RUN: llvm-size -B %t1 %t2 | FileCheck %s -DFILE1=%t1 -DFILE2=%t2 --check-prefix=BERKELEY
+# RUN: llvm-size -A %t1 %t2 | FileCheck %s -DFILE1=%t1 -DFILE2=%t2 --check-prefix=SYSV
+
+# BERKELEY: text data bss dec hex filename
+# BERKELEY-NEXT: 1 2 4 7 7 [[FILE1]]
+# BERKELEY-NEXT: 8 16 32 56 38 [[FILE2]]
+# BERKELEY-NOT:{{.}}
+
+# SYSV: [[FILE1]] :
+# SYSV-NEXT: section size addr
+# SYSV-NEXT: .text 1 4
+# SYSV-NEXT: .data 2 2
+# SYSV-NEXT: .bss 4 1
+# SYSV-NEXT: Total 7
+# SYSV-EMPTY:
+# SYSV-NEXT: [[FILE2]] :
+# SYSV-NEXT: section size addr
+# SYSV-NEXT: .text 8 32
+# SYSV-NEXT: .data 16 16
+# SYSV-NEXT: .bss 32 8
+# SYSV-NEXT: Total 56
+# SYSV-NOT:{{.}}
+
+--- !ELF
+FileHeader:
+ Class: ELFCLASS64
+ Data: ELFDATA2LSB
+ Type: ET_REL
+ Machine: EM_X86_64
+Sections:
+ - Name: .text
+ Type: SHT_PROGBITS
+ Flags: [SHF_ALLOC, SHF_EXECINSTR]
+ Size: 1
+ Address: 4
+ - Name: .data
+ Type: SHT_PROGBITS
+ Flags: [SHF_ALLOC, SHF_WRITE]
+ Size: 2
+ Address: 2
+ - Name: .bss
+ Type: SHT_NOBITS
+ Flags: [SHF_ALLOC, SHF_WRITE]
+ Size: 4
+ Address: 1
+
+--- !ELF
+FileHeader:
+ Class: ELFCLASS64
+ Data: ELFDATA2LSB
+ Type: ET_REL
+ Machine: EM_X86_64
+Sections:
+ - Name: .text
+ Type: SHT_PROGBITS
+ Flags: [SHF_ALLOC, SHF_EXECINSTR]
+ Size: 8
+ Address: 32
+ - Name: .data
+ Type: SHT_PROGBITS
+ Flags: [SHF_ALLOC, SHF_WRITE]
+ Size: 16
+ Address: 16
+ - Name: .bss
+ Type: SHT_NOBITS
+ Flags: [SHF_ALLOC, SHF_WRITE]
+ Size: 32
+ Address: 8
Added: llvm/trunk/test/tools/llvm-size/no-input.test
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/tools/llvm-size/no-input.test?rev=368821&view=auto
==============================================================================
--- llvm/trunk/test/tools/llvm-size/no-input.test (added)
+++ llvm/trunk/test/tools/llvm-size/no-input.test Wed Aug 14 03:17:34 2019
@@ -0,0 +1,26 @@
+## Show that llvm-size emits an error if passed in a non-existent file.
+
+# RUN: not llvm-size %t.blah 2>&1 | FileCheck %s -DFILE=%t.blah --check-prefix=ENOENT
+# ENOENT: {{.*}}llvm-size{{.*}}: [[FILE]] {{[Nn]}}o such file or directory
+
+## Show that llvm-size reads a.out if not passed any file.
+
+# RUN: rm -rf %t && mkdir -p %t
+# RUN: cd %t
+# RUN: yaml2obj %s -o a.out
+# RUN: llvm-size 2>&1 | FileCheck %s -DFILE=a.out
+
+# CHECK: text data bss dec hex filename
+# CHECK-NEXT: 42 0 0 42 2a a.out
+
+--- !ELF
+FileHeader:
+ Class: ELFCLASS64
+ Data: ELFDATA2LSB
+ Type: ET_REL
+ Machine: EM_X86_64
+Sections:
+ - Name: .text
+ Type: SHT_PROGBITS
+ Flags: [ SHF_ALLOC, SHF_EXECINSTR ]
+ Size: 42
Added: llvm/trunk/test/tools/llvm-size/radix.test
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/tools/llvm-size/radix.test?rev=368821&view=auto
==============================================================================
--- llvm/trunk/test/tools/llvm-size/radix.test (added)
+++ llvm/trunk/test/tools/llvm-size/radix.test Wed Aug 14 03:17:34 2019
@@ -0,0 +1,167 @@
+## Show that llvm-size prints sizes in different radixes when requested.
+
+# RUN: yaml2obj %s --docnum=1 -o %t1.o
+# RUN: yaml2obj %s --docnum=2 -o %t2.o
+
+## Case 1: Octal radix (Berkeley).
+# RUN: llvm-size %t1.o %t2.o --totals -B --radix=8 \
+# RUN: | FileCheck %s --check-prefix=OCT-BERK -DFILE1=%t1.o -DFILE2=%t2.o
+# RUN: llvm-size %t1.o %t2.o --totals -B -o \
+# RUN: | FileCheck %s --check-prefix=OCT-BERK -DFILE1=%t1.o -DFILE2=%t2.o
+
+# OCT-BERK: text data bss oct hex filename
+# OCT-BERK-NEXT: 01 02 04 7 7 [[FILE1]]
+# OCT-BERK-NEXT: 010 020 040 70 38 [[FILE2]]
+# OCT-BERK-NEXT: 011 022 044 77 3f (TOTALS)
+
+## Case 2: Decimal radix (Berkeley).
+# RUN: llvm-size %t1.o %t2.o --totals -B --radix=10 \
+# RUN: | FileCheck %s --check-prefix=DEC-BERK -DFILE1=%t1.o -DFILE2=%t2.o
+# RUN: llvm-size %t1.o %t2.o --totals -B -d \
+# RUN: | FileCheck %s --check-prefix=DEC-BERK -DFILE1=%t1.o -DFILE2=%t2.o
+
+# DEC-BERK: text data bss dec hex filename
+# DEC-BERK-NEXT: 1 2 4 7 7 [[FILE1]]
+# DEC-BERK-NEXT: 8 16 32 56 38 [[FILE2]]
+# DEC-BERK-NEXT: 9 18 36 63 3f (TOTALS)
+
+## Case 3: Hexadecimal radix (Berkeley).
+# RUN: llvm-size %t1.o %t2.o --totals -B --radix=16 \
+# RUN: | FileCheck %s --check-prefix=HEX-BERK -DFILE1=%t1.o -DFILE2=%t2.o
+# RUN: llvm-size %t1.o %t2.o --totals -B -x \
+# RUN: | FileCheck %s --check-prefix=HEX-BERK -DFILE1=%t1.o -DFILE2=%t2.o
+
+# HEX-BERK: text data bss dec hex filename
+# HEX-BERK-NEXT: 0x1 0x2 0x4 7 7 [[FILE1]]
+# HEX-BERK-NEXT: 0x8 0x10 0x20 56 38 [[FILE2]]
+# HEX-BERK-NEXT: 0x9 0x12 0x24 63 3f (TOTALS)
+
+## Case 4: Octal radix (sysv).
+# RUN: llvm-size %t1.o %t2.o -A --radix=8 \
+# RUN: | FileCheck %s --check-prefix=OCT-SYSV -DFILE1=%t1.o -DFILE2=%t2.o
+# RUN: llvm-size %t1.o %t2.o -A -o \
+# RUN: | FileCheck %s --check-prefix=OCT-SYSV -DFILE1=%t1.o -DFILE2=%t2.o
+
+# OCT-SYSV: [[FILE1]] :
+# OCT-SYSV-NEXT: section size addr
+# OCT-SYSV-NEXT: .text 01 04
+# OCT-SYSV-NEXT: .data 02 02
+# OCT-SYSV-NEXT: .bss 04 01
+# OCT-SYSV-NEXT: Total 07
+# OCT-SYSV-EMPTY:
+# OCT-SYSV-NEXT: [[FILE2]] :
+# OCT-SYSV-NEXT: section size addr
+# OCT-SYSV-NEXT: .blob 010 040
+# OCT-SYSV-NEXT: .blab 020 020
+# OCT-SYSV-NEXT: .blib 040 010
+# OCT-SYSV-NEXT: Total 070
+
+## Case 5: Decimal radix (sysv).
+# RUN: llvm-size %t1.o %t2.o -A --radix=10 \
+# RUN: | FileCheck %s --check-prefix=DEC-SYSV -DFILE1=%t1.o -DFILE2=%t2.o
+# RUN: llvm-size %t1.o %t2.o -A -d \
+# RUN: | FileCheck %s --check-prefix=DEC-SYSV -DFILE1=%t1.o -DFILE2=%t2.o
+
+# DEC-SYSV: [[FILE1]] :
+# DEC-SYSV-NEXT: section size addr
+# DEC-SYSV-NEXT: .text 1 4
+# DEC-SYSV-NEXT: .data 2 2
+# DEC-SYSV-NEXT: .bss 4 1
+# DEC-SYSV-NEXT: Total 7
+# DEC-SYSV-EMPTY:
+# DEC-SYSV-NEXT: [[FILE2]] :
+# DEC-SYSV-NEXT: section size addr
+# DEC-SYSV-NEXT: .blob 8 32
+# DEC-SYSV-NEXT: .blab 16 16
+# DEC-SYSV-NEXT: .blib 32 8
+# DEC-SYSV-NEXT: Total 56
+
+## Case 6: Hexadecimal radix (sysv).
+# RUN: llvm-size %t1.o %t2.o -A --radix=16 \
+# RUN: | FileCheck %s --check-prefix=HEX-SYSV -DFILE1=%t1.o -DFILE2=%t2.o
+# RUN: llvm-size %t1.o %t2.o -A -x \
+# RUN: | FileCheck %s --check-prefix=HEX-SYSV -DFILE1=%t1.o -DFILE2=%t2.o
+
+# HEX-SYSV: [[FILE1]] :
+# HEX-SYSV-NEXT: section size addr
+# HEX-SYSV-NEXT: .text 0x1 0x4
+# HEX-SYSV-NEXT: .data 0x2 0x2
+# HEX-SYSV-NEXT: .bss 0x4 0x1
+# HEX-SYSV-NEXT: Total 0x7
+# HEX-SYSV-EMPTY:
+# HEX-SYSV-NEXT: [[FILE2]] :
+# HEX-SYSV-NEXT: section size addr
+# HEX-SYSV-NEXT: .blob 0x8 0x20
+# HEX-SYSV-NEXT: .blab 0x10 0x10
+# HEX-SYSV-NEXT: .blib 0x20 0x8
+# HEX-SYSV-NEXT: Total 0x38
+
+## Case 7: Default Berkeley is decimal.
+# RUN: llvm-size %t1.o %t2.o --totals -B \
+# RUN: | FileCheck %s --check-prefix=DEC-BERK -DFILE1=%t1.o -DFILE2=%t2.o
+
+## Case 8: Default sysv is decimal.
+# RUN: llvm-size %t1.o %t2.o -A \
+# RUN: | FileCheck %s --check-prefix=DEC-SYSV -DFILE1=%t1.o -DFILE2=%t2.o
+
+## Case 9: Bad values.
+# RUN: not llvm-size %t1.o --radix=0 2>&1 \
+# RUN: | FileCheck %s --check-prefix=BAD-VAL -DNUM=0
+# RUN: not llvm-size %t1.o --radix=1 2>&1 \
+# RUN: | FileCheck %s --check-prefix=BAD-VAL -DNUM=1
+# RUN: not llvm-size %t1.o --radix=2 2>&1 \
+# RUN: | FileCheck %s --check-prefix=BAD-VAL -DNUM=2
+# RUN: not llvm-size %t1.o --radix=32 2>&1 \
+# RUN: | FileCheck %s --check-prefix=BAD-VAL -DNUM=32
+# RUN: not llvm-size %t1.o --radix=-1 2>&1 \
+# RUN: | FileCheck %s --check-prefix=BAD-VAL -DNUM=-1
+# RUN: not llvm-size %t1.o --radix=bad 2>&1 \
+# RUN: | FileCheck %s --check-prefix=BAD-VAL -DNUM=bad
+
+# BAD-VAL: {{.*}}llvm-size{{.*}}: for the --radix option: Cannot find option named '[[NUM]]'!
+
+--- !ELF
+FileHeader:
+ Class: ELFCLASS64
+ Data: ELFDATA2LSB
+ Type: ET_REL
+ Machine: EM_X86_64
+Sections:
+ - Name: .text
+ Type: SHT_PROGBITS
+ Flags: [SHF_ALLOC, SHF_EXECINSTR]
+ Size: 1
+ Address: 4
+ - Name: .data
+ Type: SHT_PROGBITS
+ Flags: [SHF_ALLOC, SHF_WRITE]
+ Size: 2
+ Address: 2
+ - Name: .bss
+ Type: SHT_NOBITS
+ Flags: [SHF_ALLOC, SHF_WRITE]
+ Size: 4
+ Address: 1
+
+--- !ELF
+FileHeader:
+ Class: ELFCLASS64
+ Data: ELFDATA2LSB
+ Type: ET_REL
+ Machine: EM_X86_64
+Sections:
+ - Name: .blob
+ Type: SHT_PROGBITS
+ Flags: [SHF_ALLOC, SHF_EXECINSTR]
+ Size: 8
+ Address: 32
+ - Name: .blab
+ Type: SHT_PROGBITS
+ Flags: [SHF_ALLOC, SHF_WRITE]
+ Size: 16
+ Address: 16
+ - Name: .blib
+ Type: SHT_NOBITS
+ Flags: [SHF_ALLOC, SHF_WRITE]
+ Size: 32
+ Address: 8
Added: llvm/trunk/test/tools/llvm-size/response-file.test
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/tools/llvm-size/response-file.test?rev=368821&view=auto
==============================================================================
--- llvm/trunk/test/tools/llvm-size/response-file.test (added)
+++ llvm/trunk/test/tools/llvm-size/response-file.test Wed Aug 14 03:17:34 2019
@@ -0,0 +1,21 @@
+## Show that llvm-size can consume a response file.
+
+# RUN: echo "-t %t" > %t.rsp
+# RUN: yaml2obj %s -o %t
+# RUN: llvm-size -x @%t.rsp | FileCheck %s -DFILE=%t
+
+# CHECK: text data bss dec hex filename
+# CHECK-NEXT: 0x10 0 0 16 10 [[FILE]]
+# CHECK-NEXT: 0x10 0 0 16 10 (TOTALS)
+
+--- !ELF
+FileHeader:
+ Class: ELFCLASS64
+ Data: ELFDATA2LSB
+ Type: ET_EXEC
+ Machine: EM_X86_64
+Sections:
+ - Name: .text
+ Type: SHT_PROGBITS
+ Size: 0x10
+ Flags: [SHF_ALLOC, SHF_EXECINSTR]
Added: llvm/trunk/test/tools/llvm-size/stdin.test
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/tools/llvm-size/stdin.test?rev=368821&view=auto
==============================================================================
--- llvm/trunk/test/tools/llvm-size/stdin.test (added)
+++ llvm/trunk/test/tools/llvm-size/stdin.test Wed Aug 14 03:17:34 2019
@@ -0,0 +1,31 @@
+## Show that llvm-size reads stdin if the input file is '-'.
+
+# RUN: yaml2obj %s -o %t
+# RUN: llvm-size -B - < %t | FileCheck %s --check-prefix=BERKELEY
+# RUN: llvm-size -A - < %t | FileCheck %s --check-prefix=SYSV
+
+# BERKELEY: 1 2 4 7 7 <stdin>
+# SYSV: <stdin> :
+
+--- !ELF
+FileHeader:
+ Class: ELFCLASS64
+ Data: ELFDATA2LSB
+ Type: ET_REL
+ Machine: EM_X86_64
+Sections:
+ - Name: .text
+ Type: SHT_PROGBITS
+ Flags: [SHF_ALLOC, SHF_EXECINSTR]
+ Size: 1
+ Address: 4
+ - Name: .data
+ Type: SHT_PROGBITS
+ Flags: [SHF_ALLOC, SHF_WRITE]
+ Size: 2
+ Address: 2
+ - Name: .bss
+ Type: SHT_NOBITS
+ Flags: [SHF_ALLOC, SHF_WRITE]
+ Size: 4
+ Address: 1
Added: llvm/trunk/test/tools/llvm-size/totals.test
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/tools/llvm-size/totals.test?rev=368821&view=auto
==============================================================================
--- llvm/trunk/test/tools/llvm-size/totals.test (added)
+++ llvm/trunk/test/tools/llvm-size/totals.test Wed Aug 14 03:17:34 2019
@@ -0,0 +1,57 @@
+## Show that llvm-size prints the total sizes when --totals is specified.
+
+# RUN: rm -f %t.a
+# RUN: yaml2obj %s --docnum=1 -o %t.o
+# RUN: yaml2obj %s --docnum=2 -o %t2.o
+# RUN: llvm-ar rc %t.a %t.o %t2.o
+# RUN: llvm-size --totals %t.o %t.a %t2.o \
+# RUN: | FileCheck %s -DFILE1=%t.o -DFILE2=%t2.o -DARCHIVE=%t.a
+# RUN: llvm-size -t %t.o %t.a %t2.o \
+# RUN: | FileCheck %s -DFILE1=%t.o -DFILE2=%t2.o -DARCHIVE=%t.a
+
+# CHECK: text data bss dec hex filename
+# CHECK-NEXT: [[FILE1]]
+# CHECK-NEXT: {{.*}}.o (ex [[ARCHIVE]])
+# CHECK-NEXT: {{.*}}2.o (ex [[ARCHIVE]])
+# CHECK-NEXT: [[FILE2]]
+# CHECK-NEXT: 18 36 72 126 7e (TOTALS)
+
+--- !ELF
+FileHeader:
+ Class: ELFCLASS64
+ Data: ELFDATA2LSB
+ Type: ET_REL
+ Machine: EM_X86_64
+Sections:
+ - Name: .text
+ Type: SHT_PROGBITS
+ Flags: [SHF_ALLOC, SHF_EXECINSTR]
+ Size: 1
+ - Name: .data
+ Type: SHT_PROGBITS
+ Flags: [SHF_ALLOC, SHF_WRITE]
+ Size: 2
+ - Name: .bss
+ Type: SHT_NOBITS
+ Flags: [SHF_ALLOC, SHF_WRITE]
+ Size: 4
+
+--- !ELF
+FileHeader:
+ Class: ELFCLASS64
+ Data: ELFDATA2LSB
+ Type: ET_REL
+ Machine: EM_X86_64
+Sections:
+ - Name: .text
+ Type: SHT_PROGBITS
+ Flags: [SHF_ALLOC, SHF_EXECINSTR]
+ Size: 8
+ - Name: .data
+ Type: SHT_PROGBITS
+ Flags: [SHF_ALLOC, SHF_WRITE]
+ Size: 16
+ - Name: .bss
+ Type: SHT_NOBITS
+ Flags: [SHF_ALLOC, SHF_WRITE]
+ Size: 32
Added: llvm/trunk/test/tools/llvm-size/unknown-format.test
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/tools/llvm-size/unknown-format.test?rev=368821&view=auto
==============================================================================
--- llvm/trunk/test/tools/llvm-size/unknown-format.test (added)
+++ llvm/trunk/test/tools/llvm-size/unknown-format.test Wed Aug 14 03:17:34 2019
@@ -0,0 +1,4 @@
+## Show that the an error is emitted if an unknown value is passed to --format.
+
+# RUN: not llvm-size --format=unknown 2>&1 | FileCheck %s
+# CHECK: {{.*}}llvm-size{{.*}}: for the --format option: Cannot find option named 'unknown'!
Added: llvm/trunk/test/tools/llvm-size/version.test
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/tools/llvm-size/version.test?rev=368821&view=auto
==============================================================================
--- llvm/trunk/test/tools/llvm-size/version.test (added)
+++ llvm/trunk/test/tools/llvm-size/version.test Wed Aug 14 03:17:34 2019
@@ -0,0 +1,4 @@
+## Show that --version works for llvm-size.
+
+RUN: llvm-size --version | FileCheck %s
+CHECK: version
More information about the llvm-commits
mailing list