## 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-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-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-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{{.*}}: error: --radix value should be one of: 8, 10, 16

--- !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
