[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