## Check that we correctly display the contents of the .stack_sizes section
## in a relocatable object file.

# RUN: yaml2obj --docnum=1 %s > %t01
# RUN: llvm-readelf --stack-sizes %t01 \
# RUN:   | FileCheck %s --check-prefix=RELOC-GNU --strict-whitespace --match-full-lines
# RUN: llvm-readobj --stack-sizes %t01 | FileCheck %s --check-prefix=RELOC-LLVM

#      RELOC-GNU:         Size     Function
# RELOC-GNU-NEXT:           16     referenced_by_symbol_foo
# RELOC-GNU-NEXT:           32     referenced_via_section_bar
# RELOC-GNU-NEXT:            8     separate_text_section_baz
#  RELOC-GNU-NOT:{{.}}

# RELOC-LLVM:      StackSizes [
# RELOC-LLVM-NEXT:   Entry {
# RELOC-LLVM-NEXT:     Function: referenced_by_symbol_foo
# RELOC-LLVM-NEXT:     Size: 0x10
# RELOC-LLVM-NEXT:   }
# RELOC-LLVM-NEXT:   Entry {
# RELOC-LLVM-NEXT:     Function: referenced_via_section_bar
# RELOC-LLVM-NEXT:     Size: 0x20
# RELOC-LLVM-NEXT:   }
# RELOC-LLVM-NEXT:   Entry {
# RELOC-LLVM-NEXT:     Function: separate_text_section_baz
# RELOC-LLVM-NEXT:     Size: 0x8
# RELOC-LLVM-NEXT:   }
# RELOC-LLVM-NEXT: ]

--- !ELF
FileHeader:
  Class:   ELFCLASS64
  Data:    ELFDATA2LSB
  Type:    ET_REL
  Machine: EM_X86_64
Sections:
  - Name:    .text
    Type:    SHT_PROGBITS
    Flags:   [SHF_ALLOC]
    Size:    16
  - Name:    .text.baz
    Type:    SHT_PROGBITS
    Flags:   [SHF_ALLOC]
    Size:    16
  - Name:    .stack_sizes
    Type:    SHT_PROGBITS
    Entries:
      - Size: 0x10
      - Size: 0x20
    Link:    .text
  - Name:    '.stack_sizes [1]'
    Type:    SHT_PROGBITS
    Entries:
      - Address: 0x20
        Size:    0x8
    Link:    .text.baz
  - Name:    .rela.stack_sizes
    Type:    SHT_RELA
    Info:    .stack_sizes
    Relocations:
## A symbol relative reference. 
      - Offset: 0
        Symbol: referenced_by_symbol_foo 
        Type:   R_X86_64_64
## A section relative reference. 
      - Offset: 9
        Addend: 16
        Symbol: .text
        Type:   R_X86_64_64
  - Name:   '.rela.stack_sizes [1]'
    Type:   SHT_RELA
    Info:   '.stack_sizes [1]'
    Relocations:
      - Offset: 0
        Symbol: separate_text_section_baz
        Type:   R_X86_64_64
Symbols:
  - Name:    separate_text_section_baz
    Section: .text.baz
    Type:    STT_FUNC
  - Name:    .text
    Section: .text
    Type:    STT_SECTION
  - Name:    referenced_by_symbol_foo
    Section: .text
    Type:    STT_FUNC
    Binding: STB_GLOBAL
  - Name:    referenced_via_section_bar
    Section: .text
    Value:   0x10
    Type:    STT_FUNC
    Binding: STB_GLOBAL

## Check that we correctly report the stack sizes in an executable (non-relocatable)
## object file.

# RUN: yaml2obj --docnum=2 %s > %t02
# RUN: llvm-readelf --stack-sizes %t02 \
# RUN:   | FileCheck %s --check-prefix=EXEC-GNU --strict-whitespace --match-full-lines
# RUN: llvm-readobj --stack-sizes %t02 | FileCheck %s --check-prefix=EXEC-LLVM

#      EXEC-GNU:         Size     Function
# EXEC-GNU-NEXT:           16     foo
# EXEC-GNU-NEXT:           32     bar
#  EXEC-GNU-NOT:{{.}}

# EXEC-LLVM:      StackSizes [
# EXEC-LLVM-NEXT:   Entry {
# EXEC-LLVM-NEXT:     Function: foo
# EXEC-LLVM-NEXT:     Size: 0x10
# EXEC-LLVM-NEXT:   }
# EXEC-LLVM-NEXT:   Entry {
# EXEC-LLVM-NEXT:     Function: bar
# EXEC-LLVM-NEXT:     Size: 0x20
# EXEC-LLVM-NEXT:   }
# EXEC-LLVM-NEXT: ]

--- !ELF
FileHeader:
  Class:   ELFCLASS64
  Data:    ELFDATA2LSB
  Type:    ET_EXEC
  Machine: EM_X86_64
Sections:
  - Name:    .text
    Type:    SHT_PROGBITS
    Flags:   [SHF_ALLOC]
    Size:    16
  - Name:    .stack_sizes
    Type:    SHT_PROGBITS
    Entries:
      - Address: 0x10
        Size:    0x10
      - Address: 0x20
        Size:    0x20
    Link:    .text
Symbols:
  - Name:    foo
    Section: .text
    Value:   0x10
    Type:    STT_FUNC
    Binding: STB_GLOBAL
  - Name:    bar
    Section: .text
    Value:   0x20
    Type:    STT_FUNC
    Binding: STB_GLOBAL

## Check that we report an error when we find relocations whose offsets point outside
## of the .stack_sizes section.

# RUN: yaml2obj --docnum=3 %s > %t03
# RUN: not llvm-readelf --stack-sizes %t03 2>&1 | FileCheck %s --check-prefix=SHORT -DFILE=%t03
# RUN: not llvm-readobj --stack-sizes %t03 2>&1 | FileCheck %s --check-prefix=SHORT -DFILE=%t03

# SHORT: error: '[[FILE]]': found invalid relocation offset into section .stack_sizes while trying to extract a stack size entry

--- !ELF
FileHeader:
  Class:   ELFCLASS64
  Data:    ELFDATA2LSB
  Type:    ET_REL
  Machine: EM_X86_64
Sections:
  - Name:    .text
    Type:    SHT_PROGBITS
    Flags:   [SHF_ALLOC]
    Size:    16
  - Name:    .stack_sizes
    Type:    SHT_PROGBITS
    Content: "00"
    Link:    .text
  - Name:    .rela.stack_sizes
    Type:    SHT_RELA
    Info:    .stack_sizes
    Relocations:
      - Offset: 1
        Symbol: foo 
        Type:   R_X86_64_64
Symbols:
  - Name:    foo
    Section: .text
    Type:    STT_FUNC
    Binding: STB_GLOBAL

## Check that we warn about a function symbol that is not in the section
## that is referenced by the stack sizes section's sh_link.

# RUN: yaml2obj --docnum=4 %s > %t04
# RUN: llvm-readelf --stack-sizes %t04 2> %t04-gnu.err | FileCheck %s --check-prefix=WRONGSECTION-GNU
# RUN: FileCheck %s < %t04-gnu.err --check-prefix=WRONGSECTION-ERR -DFILE=%t04
# RUN: llvm-readobj --stack-sizes %t04 2> %t04-llvm.err | FileCheck %s --check-prefix=WRONGSECTION-LLVM
# RUN: FileCheck %s < %t04-llvm.err --check-prefix=WRONGSECTION-ERR -DFILE=%t04

# RUN: llvm-readelf --stack-sizes --demangle %t04 2>&1 | FileCheck %s --check-prefix=WRONGSECTION-DEMANGLE-ERR -DFILE=%t04
# RUN: llvm-readobj --stack-sizes --demangle %t04 2>&1 | FileCheck %s --check-prefix=WRONGSECTION-DEMANGLE-ERR -DFILE=%t04

# WRONGSECTION-GNU:      Size Function
# WRONGSECTION-GNU-NEXT: 8 _Z3foof

# WRONGSECTION-LLVM:      StackSizes [
# WRONGSECTION-LLVM-NEXT:   Entry {
# WRONGSECTION-LLVM-NEXT:     Function: _Z3foof
# WRONGSECTION-LLVM-NEXT:     Size: 0x8
# WRONGSECTION-LLVM-NEXT:   }
# WRONGSECTION-LLVM-NEXT: ]

# WRONGSECTION-ERR:           warning: '[[FILE]]': relocation symbol '_Z3foof' is not in the expected section
# WRONGSECTION-DEMANGLE-ERR:  warning: '[[FILE]]': relocation symbol 'foo(float)' is not in the expected section

--- !ELF
FileHeader:
  Class:   ELFCLASS64
  Data:    ELFDATA2LSB
  Type:    ET_REL
  Machine: EM_X86_64
Sections:
  - Name:    .text
    Type:    SHT_PROGBITS
    Size:    8
  - Name:    .text2
    Type:    SHT_PROGBITS
    Size:    8
    Flags:   [SHF_ALLOC]
  - Name:    .stack_sizes
    Type:    SHT_PROGBITS
    Entries:
      - Size: 0x8
    Link:    .text2
  - Name:    .rela.stack_sizes
    Type:    SHT_RELA
    Info:    .stack_sizes
    Relocations:
      - Offset: 0
        Symbol: _Z3foof
        Type:   R_X86_64_64
Symbols:
  - Name:    _Z3foof
    Section: .text
    Type:    STT_FUNC
    Binding: STB_GLOBAL

## Check that we report an error when a stack sizes section ends with an incomplete stack size entry.

# RUN: yaml2obj --docnum=5 %s > %t05
# RUN: not llvm-readelf --stack-sizes %t05 2>&1 | \
# RUN:    FileCheck %s --check-prefix=SUDDENEND -DFILE=%t05
# RUN: not llvm-readobj --stack-sizes %t05 2>&1 | \
# RUN:    FileCheck %s --check-prefix=SUDDENEND -DFILE=%t05

# SUDDENEND: error: '[[FILE]]': section .stack_sizes ended while trying to extract a stack size entry

--- !ELF
FileHeader:
  Class:   ELFCLASS64
  Data:    ELFDATA2LSB
  Type:    ET_EXEC
  Machine: EM_X86_64
Sections:
  - Name:    .text
    Type:    SHT_PROGBITS
    Flags:   [SHF_ALLOC]
    Size:    16
  - Name:    .stack_sizes
    Type:    SHT_PROGBITS
    Content: "10000000"
    Link:    .text
Symbols:
  - Name:    foo
    Section: .text
    Value:   0x10
    Type:    STT_FUNC
    Binding: STB_GLOBAL

## Check that we report an invalid stack size, which is represented by a ULEB that
## ends in a byte with the high bit set.

# RUN: yaml2obj --docnum=6 %s > %t06
# RUN: not llvm-readelf --stack-sizes %t06 2>&1 | FileCheck %s --check-prefix=BADSIZE -DFILE=%t06
# RUN: not llvm-readobj --stack-sizes %t06 2>&1 | FileCheck %s --check-prefix=BADSIZE -DFILE=%t06

# BADSIZE: error: '[[FILE]]': could not extract a valid stack size in section .stack_sizes

--- !ELF
FileHeader:
  Class:   ELFCLASS64
  Data:    ELFDATA2LSB
  Type:    ET_EXEC
  Machine: EM_X86_64
Sections:
  - Name:    .text
    Type:    SHT_PROGBITS
    Flags:   [SHF_ALLOC]
    Size:    16
  - Name:    .stack_sizes
    Type:    SHT_PROGBITS
    Content: "100000000000000080"
    Link:    .text
Symbols:
  - Name:    foo
    Section: .text
    Value:   0x10
    Type:    STT_FUNC
    Binding: STB_GLOBAL

## Check that we report a warning when a relocation symbol does not belong to a
## valid section. We expect a stack size entry with an unknown symbol in the 
## output.

# RUN: yaml2obj --docnum=7 %s > %t07
# RUN: llvm-readelf --stack-sizes %t07 2> %t07-gnu.err | FileCheck %s --check-prefix=BADSECTION-OUT-GNU
# RUN: FileCheck %s < %t07-gnu.err --check-prefix=BADSECTION-ERR -DFILE=%t07
# RUN: llvm-readobj --stack-sizes %t07 2> %t07-llvm.err | FileCheck %s --check-prefix=BADSECTION-OUT-LLVM
# RUN: FileCheck %s < %t07-llvm.err --check-prefix=BADSECTION-ERR -DFILE=%t07

# RUN: llvm-readelf --stack-sizes --demangle %t07 2>&1 | FileCheck %s --check-prefix=BADSECTION-DEMANGLE-ERR -DFILE=%t07
# RUN: llvm-readobj --stack-sizes --demangle %t07 2>&1 | FileCheck %s --check-prefix=BADSECTION-DEMANGLE-ERR -DFILE=%t07

# BADSECTION-OUT-GNU: Size Function
# BADSECTION-OUT-GNU:    8 ?

# BADSECTION-OUT-LLVM:      StackSizes [
# BADSECTION-OUT-LLVM-NEXT:   Entry {
# BADSECTION-OUT-LLVM-NEXT:     Function: ?
# BADSECTION-OUT-LLVM-NEXT:     Size: 0x8
# BADSECTION-OUT-LLVM-NEXT:   }
# BADSECTION-OUT-LLVM-NEXT: ]

# BADSECTION-ERR: warning: '[[FILE]]': cannot identify the section for relocation symbol '_Z3foof'
# BADSECTION-DEMANGLE-ERR: warning: '[[FILE]]': cannot identify the section for relocation symbol 'foo(float)'

--- !ELF
FileHeader:
  Class:   ELFCLASS64
  Data:    ELFDATA2LSB
  Type:    ET_REL
  Machine: EM_X86_64
Sections:
  - Name:    .text
    Type:    SHT_PROGBITS
    Size:    8
  - Name:    .stack_sizes
    Type:    SHT_PROGBITS
    Link:    .text
    Entries:
      - Size: 0x8
  - Name:    .rela.stack_sizes
    Type:    SHT_RELA
    Info:    .stack_sizes
    Relocations:
    - Offset: 0
      Symbol: _Z3foof
      Type:   R_X86_64_64
Symbols:
  - Name:    _Z3foof
## An invalid section index.
    Index:   10
    Type:    STT_FUNC
    Binding: STB_GLOBAL

## Check that we report a warning when a stack sizes section does not come with
## a corresponding relocation section.

# RUN: yaml2obj --docnum=8 %s > %t08
# RUN: llvm-readelf --stack-sizes %t08 2> %t08-gnu.err | FileCheck %s --check-prefix=NORELOCSECTION-OUT-GNU
# RUN: FileCheck %s < %t08-gnu.err --check-prefix=NORELOCSECTION-ERR -DFILE=%t08
# RUN: llvm-readobj --stack-sizes %t08 2> %t08-llvm.err | FileCheck %s --check-prefix=NORELOCSECTION-OUT-LLVM
# RUN: FileCheck %s < %t08-llvm.err --check-prefix=NORELOCSECTION-ERR -DFILE=%t08

# NORELOCSECTION-OUT-GNU:     Size Function
# NORELOCSECTION-OUT-GNU-NOT: {{.}}

# NORELOCSECTION-OUT-LLVM:      StackSizes [
# NORELOCSECTION-OUT-LLVM-NEXT: ]

# NORELOCSECTION-ERR: warning: '[[FILE]]': section .stack_sizes does not have a corresponding relocation section

--- !ELF
FileHeader:
  Class:   ELFCLASS64
  Data:    ELFDATA2LSB
  Type:    ET_REL
  Machine: EM_X86_64
Sections:
  - Name:    .text
    Type:    SHT_PROGBITS
    Size:    8
  - Name:    .stack_sizes
    Type:    SHT_PROGBITS
    Link:    .text
    Entries:
      - Size: 0x1

## Check that we handle multiple object files, separately and when they
## are in an archive. This also checks whether we have blank lines between the
## tables.

# RUN: llvm-ar rc %t1.a %t01 %t02
# RUN: llvm-readelf --stack-sizes %t01 %t02 \
# RUN:   | FileCheck %s --check-prefixes=MULTIPLE-GNU,OBJECT -DFILE1=%t01 -DFILE2=%t02
# RUN: llvm-readelf --stack-sizes %t1.a \
# RUN:   | FileCheck %s --check-prefixes=MULTIPLE-GNU,ARCHIVE --strict-whitespace\
# RUN:   --match-full-lines -DFILE=%t1.a
# RUN: llvm-readobj --stack-sizes %t01 %t02 \
# RUN:   | FileCheck %s --check-prefixes=MULTIPLE-LLVM,OBJECT -DFILE1=%t01 -DFILE2=%t02
# RUN: llvm-readobj --stack-sizes %t1.a \
# RUN:   | FileCheck %s --check-prefixes=MULTIPLE-LLVM,ARCHIVE -DFILE=%t1.a

#        OBJECT:File: [[FILE1]]
#       ARCHIVE:File: [[FILE]]({{.*01}})

#      MULTIPLE-GNU:Stack Sizes:
# MULTIPLE-GNU-NEXT:         Size     Function
# MULTIPLE-GNU-NEXT:           16     referenced_by_symbol_foo
# MULTIPLE-GNU-NEXT:           32     referenced_via_section_bar
# MULTIPLE-GNU-NEXT:            8     separate_text_section_baz
# MULTIPLE-GNU-EMPTY:

# MULTIPLE-LLVM:      StackSizes [
# MULTIPLE-LLVM-NEXT:   Entry {
# MULTIPLE-LLVM-NEXT:     Function: referenced_by_symbol_foo
# MULTIPLE-LLVM-NEXT:     Size: 0x10
# MULTIPLE-LLVM-NEXT:   }
# MULTIPLE-LLVM-NEXT:   Entry {
# MULTIPLE-LLVM-NEXT:     Function: referenced_via_section_bar
# MULTIPLE-LLVM-NEXT:     Size: 0x20
# MULTIPLE-LLVM-NEXT:   }
# MULTIPLE-LLVM-NEXT:   Entry {
# MULTIPLE-LLVM-NEXT:     Function: separate_text_section_baz
# MULTIPLE-LLVM-NEXT:     Size: 0x8
# MULTIPLE-LLVM-NEXT:   }
# MULTIPLE-LLVM-NEXT: ]

#        OBJECT:File: [[FILE2]]
#       ARCHIVE:File: [[FILE]]({{.*02}})

# MULTIPLE-GNU-EMPTY:
# MULTIPLE-GNU-NEXT:Stack Sizes:
# MULTIPLE-GNU-NEXT:         Size     Function
# MULTIPLE-GNU-NEXT:           16     foo
# MULTIPLE-GNU-NEXT:           32     bar

# MULTIPLE-LLVM:      StackSizes [
# MULTIPLE-LLVM-NEXT:   Entry {
# MULTIPLE-LLVM-NEXT:     Function: foo
# MULTIPLE-LLVM-NEXT:     Size: 0x10
# MULTIPLE-LLVM-NEXT:   }
# MULTIPLE-LLVM-NEXT:   Entry {
# MULTIPLE-LLVM-NEXT:     Function: bar
# MULTIPLE-LLVM-NEXT:     Size: 0x20
# MULTIPLE-LLVM-NEXT:   }
# MULTIPLE-LLVM-NEXT: ]

## Check that we do not consider symbols that are not function symbols, even though
## a relocation references them. 

# RUN: yaml2obj --docnum=9 %s > %t14
# RUN: llvm-readelf --stack-sizes %t14 2> %t14-gnu.err | FileCheck %s --check-prefix=NONFUNCTIONSYM-GNU
# RUN: FileCheck %s < %t14-gnu.err --check-prefix=NONFUNCTIONSYM-ERR -DFILE=%t14
# RUN: llvm-readobj --stack-sizes %t14 2> %t14-llvm.err | FileCheck %s --check-prefix=NONFUNCTIONSYM-LLVM
# RUN: FileCheck %s < %t14-llvm.err --check-prefix=NONFUNCTIONSYM-ERR -DFILE=%t14

# NONFUNCTIONSYM-GNU:     Stack Sizes:
# NONFUNCTIONSYM-GNU:     0 ?

# NONFUNCTIONSYM-LLVM:      StackSizes [
# NONFUNCTIONSYM-LLVM-NEXT:   Entry {
# NONFUNCTIONSYM-LLVM-NEXT:     Function: ?
# NONFUNCTIONSYM-LLVM-NEXT:     Size: 0x0
# NONFUNCTIONSYM-LLVM-NEXT:   }
# NONFUNCTIONSYM-LLVM-NEXT: ]

# NONFUNCTIONSYM-ERR: warning: '[[FILE]]': could not identify function symbol for stack size entry

--- !ELF
FileHeader:
  Class:   ELFCLASS64
  Data:    ELFDATA2LSB
  Type:    ET_REL
  Machine: EM_X86_64
Sections:
  - Name: .text
    Type: SHT_PROGBITS
    Size: 16
  - Name: .stack_sizes
    Type: SHT_PROGBITS
    Entries:
      - Size: 0
    Link: .text
  - Name: .rela.stack_sizes
    Type: SHT_RELA
    Info: .stack_sizes
    Relocations:
      - Offset: 0
        Symbol: foo 
        Type:   R_X86_64_64
Symbols:
  - Name:    foo
    Section: .text
    Type:    STT_OBJECT
    Binding: STB_GLOBAL

## Check that we report an error when we find an unsupported relocation
## in the section that contains the stack size entries' relocations.

# RUN: yaml2obj --docnum=10 %s > %t15
# RUN: not llvm-readelf --stack-sizes %t15 2>&1 | FileCheck %s --check-prefix=UNSUPPRELOC -DFILE=%t15
# RUN: not llvm-readobj --stack-sizes %t15 2>&1 | FileCheck %s --check-prefix=UNSUPPRELOC -DFILE=%t15

# UNSUPPRELOC: error: '[[FILE]]': unsupported relocation type in section .rela.stack_sizes: R_X86_64_RELATIVE

--- !ELF
FileHeader:
  Class:   ELFCLASS64
  Data:    ELFDATA2LSB
  Type:    ET_REL
  Machine: EM_X86_64
Sections:
  - Name: .text
    Type: SHT_PROGBITS
    Size: 8
  - Name: .stack_sizes
    Type: SHT_PROGBITS
    Link: .text
    Entries: []
  - Name: .rela.stack_sizes
    Type: SHT_RELA
    Info: .stack_sizes
    Relocations:
      - Offset: 0
        Symbol: foo 
        Type:   R_X86_64_RELATIVE
Symbols:
  - Name:    foo
    Section: .text
    Type:    STT_FUNC
    Binding: STB_GLOBAL

## Check that warning messages in archives do not impact other members. In the following
## test, the first archive member generates a warning and we make sure all the information
## is still dumped.

# RUN: llvm-ar rc %t2.a %t04 %t01
# RUN: llvm-readelf --stack-sizes %t2.a 2>&1 | FileCheck %s --check-prefix=ARCHIVEWARN-GNU \
# RUN:   -DFILE=%t2.a --strict-whitespace --match-full-lines
# RUN: llvm-readobj --stack-sizes %t2.a 2>&1 | FileCheck %s --check-prefix=ARCHIVEWARN-LLVM -DFILE=%t2.a

#      ARCHIVEWARN-GNU:File: [[FILE]]({{.*04}})
#      ARCHIVEWARN-GNU:Stack Sizes:
# ARCHIVEWARN-GNU-NEXT:         Size     Function
#      ARCHIVEWARN-GNU:{{.*}}: warning: '{{.*04}}': relocation symbol '_Z3foof' is not in the expected section
#      ARCHIVEWARN-GNU:            8     _Z3foof
#      ARCHIVEWARN-GNU:File: [[FILE]]({{.*01}})
#      ARCHIVEWARN-GNU:Stack Sizes:
# ARCHIVEWARN-GNU-NEXT:         Size     Function
# ARCHIVEWARN-GNU-NEXT:           16     referenced_by_symbol_foo
# ARCHIVEWARN-GNU-NEXT:           32     referenced_via_section_bar
# ARCHIVEWARN-GNU-NEXT:            8     separate_text_section_baz
#  ARCHIVEWARN-GNU-NOT:{{.}}


# ARCHIVEWARN-LLVM:      File: [[FILE]]({{.*04}})
# ARCHIVEWARN-LLVM:      StackSizes [
# ARCHIVEWARN-LLVM:      warning: '{{.*04}}': relocation symbol '_Z3foof' is not in the expected section
# ARCHIVEWARN-LLVM-NEXT:   Entry {
# ARCHIVEWARN-LLVM-NEXT:     Function: _Z3foof
# ARCHIVEWARN-LLVM-NEXT:     Size: 0x8
# ARCHIVEWARN-LLVM-NEXT:   }
# ARCHIVEWARN-LLVM-NEXT: ]
# ARCHIVEWARN-LLVM:      File: [[FILE]]({{.*01}})
# ARCHIVEWARN-LLVM:      StackSizes [
# ARCHIVEWARN-LLVM-NEXT:   Entry {
# ARCHIVEWARN-LLVM-NEXT:     Function: referenced_by_symbol_foo
# ARCHIVEWARN-LLVM-NEXT:     Size: 0x10
# ARCHIVEWARN-LLVM-NEXT:   }
# ARCHIVEWARN-LLVM-NEXT:   Entry {
# ARCHIVEWARN-LLVM-NEXT:     Function: referenced_via_section_bar
# ARCHIVEWARN-LLVM-NEXT:     Size: 0x20
# ARCHIVEWARN-LLVM-NEXT:   }
# ARCHIVEWARN-LLVM-NEXT:   Entry {
# ARCHIVEWARN-LLVM-NEXT:     Function: separate_text_section_baz
# ARCHIVEWARN-LLVM-NEXT:     Size: 0x8
# ARCHIVEWARN-LLVM-NEXT:   }
# ARCHIVEWARN-LLVM-NEXT: ]

## Check that we demangle function names when requested.

# RUN: yaml2obj --docnum=11 %s > %t16
# RUN: llvm-readelf --stack-sizes --demangle %t16 | FileCheck %s --check-prefix=DEMANGLE-GNU
# RUN: llvm-readobj --stack-sizes --demangle %t16 | FileCheck %s --check-prefix=DEMANGLE-LLVM

# DEMANGLE-GNU:  16 foo(float)
# DEMANGLE-LLVM: Function: foo(float)

--- !ELF
FileHeader:
  Class:   ELFCLASS64
  Data:    ELFDATA2LSB
  Type:    ET_EXEC
  Machine: EM_X86_64
Sections:
  - Name:    .text
    Type:    SHT_PROGBITS
    Flags:   [SHF_ALLOC]
    Size:    16
  - Name:    .stack_sizes
    Type:    SHT_PROGBITS
    Entries:
      - Address: 0x10
        Size:    0x10
    Link:    .text
Symbols:
  - Name:    _Z3foof
    Section: .text
    Value:   0x10
    Type:    STT_FUNC
    Binding: STB_GLOBAL

## Check that we report an error when we are unable to resolve a relocation for a given ELF architecture.
## Here we have a 64-bit relocation used in a 32-bit object.

# RUN: yaml2obj --docnum=12 %s > %t17
# RUN: not llvm-readelf --stack-sizes %t17 2>&1 | FileCheck %s -DFILE=%t17 --check-prefix=UNSUPPRELOC2
# RUN: not llvm-readobj --stack-sizes %t17 2>&1 | FileCheck %s -DFILE=%t17 --check-prefix=UNSUPPRELOC2

# UNSUPPRELOC2: error: '[[FILE]]': unsupported relocation type in section .rela.stack_sizes: R_X86_64_64

--- !ELF
FileHeader:
  Class:   ELFCLASS32
  Data:    ELFDATA2MSB
  Type:    ET_REL
  Machine: EM_X86_64
Sections:
  - Name: .stack_sizes
    Type: SHT_PROGBITS
    Content: "00"
  - Name: .rela.stack_sizes
    Type: SHT_RELA
    Info: .stack_sizes
    Relocations:
      - Offset: 0
        Type:   R_X86_64_64

## Check we report an error when dumping stack sizes if the relocated section
## identified by the sh_info field is invalid. Here sh_info value is larger than
## the number of sections.

# RUN: yaml2obj --docnum=13 %s > %t18
# RUN: not llvm-readelf --stack-sizes %t18 2>&1 | FileCheck %s -DFILE=%t18 --check-prefix=INVALID-TARGET
# RUN: not llvm-readobj --stack-sizes %t18 2>&1 | FileCheck %s -DFILE=%t18 --check-prefix=INVALID-TARGET

# INVALID-TARGET: error: '[[FILE]]': .rela.stack_sizes: failed to get a relocated section: invalid section index: 255

--- !ELF
FileHeader:
  Class:   ELFCLASS32
  Data:    ELFDATA2MSB
  Type:    ET_REL
  Machine: EM_X86_64
Sections:
  - Name: .rela.stack_sizes
    Type: SHT_RELA
    Link: 0
    Info: 0xFF
    Relocations: []
