## Check we are able to dump library soname properly.

## Test a valid object case first. We set 'FileSize' to 0x48, because this is a no-op,
## i.e. this value would be set if we had no 'FileSize' at all.
# RUN: yaml2obj -DDTSTRTABVAL=0x0 -DPHDRFILESIZE="0x48" %s -o %t.o
# RUN: llvm-readobj %t.o | FileCheck %s --check-prefix LLVM
# RUN: llvm-readelf --dynamic-table %t.o | FileCheck %s --check-prefix GNU

# LLVM:      Format: elf64-x86-64
# LLVM-NEXT: Arch: x86_64
# LLVM-NEXT: AddressSize: 64bit
# LLVM-NEXT: LoadName: test.so

# GNU:       Dynamic section at offset 0x80 contains 4 entries:
# GNU-NEXT:   Tag                Type     Name/Value
# GNU-NEXT:   0x0000000000000005 (STRTAB) 0x0
# GNU-NEXT:   0x000000000000000a (STRSZ)  8 (bytes)
# GNU-NEXT:   0x000000000000000e (SONAME) Library soname: [test.so]
# GNU-NEXT:   0x0000000000000000 (NULL)   0x0

!ELF
FileHeader:
  Class:   ELFCLASS64
  Data:    ELFDATA2LSB
  Type:    ET_EXEC
  Machine: EM_X86_64
Sections:
  - Name:  .dynstr
    Type:  SHT_STRTAB
    Flags: [ SHF_ALLOC ]
    Content: '746573742e736f00' ## "test.so"
  - Name:  .dynamic
    Type:  SHT_DYNAMIC
    Flags: [ SHF_ALLOC ]
    Link:  .dynstr
    Entries:
      - Tag:   DT_STRTAB
        Value: [[DTSTRTABVAL]]
      - Tag:   DT_STRSZ
        Value: 0x0000000000000008
      - Tag:   DT_SONAME
        Value: 0x0000000000000000
      - Tag:   DT_NULL
        Value: 0x0000000000000000
ProgramHeaders:
  - Type:     PT_LOAD
    Flags:    [ PF_R ]
    VAddr:    0x0000
    FileSize: [[PHDRFILESIZE]]
    FirstSec: .dynstr
    LastSec:  .dynamic

## Check we do not crash when an object contains a DT_STRTAB entry whose address
## is past the end of the object.
## Note that we have to set p_filesz for PT_LOAD larger than DT_STRTAB value
## to trigger this particular warning.

# RUN: yaml2obj -DDTSTRTABVAL=0xFFFE -DPHDRFILESIZE=0xFFFF %s -o %t.err.1.o
# RUN: llvm-readobj %t.err.1.o 2>&1 | FileCheck %s -DFILE=%t.err.1.o --check-prefixes=BROKEN-OFFSET,BROKEN-OFFSET-LLVM
# RUN: llvm-readelf --dynamic-table %t.err.1.o 2>&1 | FileCheck %s -DFILE=%t.err.1.o --check-prefixes=BROKEN-OFFSET,BROKEN-OFFSET-GNU

# BROKEN-OFFSET:      warning: '[[FILE]]': unable to parse DT_STRTAB: can't map virtual address 0xfffe to the segment with index 1: the segment ends at 0x10077, which is greater than the file size (0x228)
# BROKEN-OFFSET:      warning: '[[FILE]]': string table was not found
# BROKEN-OFFSET-LLVM: LoadName: <?>
# BROKEN-OFFSET-GNU:  0x000000000000000e (SONAME) Library soname: [<?>]
