llvm/llvm/test/tools/llvm-size/radix.test

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