139 lines
6.7 KiB
Plaintext
139 lines
6.7 KiB
Plaintext
## Check that we are able to dump the SHT_MIPS_OPTIONS section using -A properly.
|
|
|
|
## Check we are able to dump multiple MIPS options properly.
|
|
# RUN: yaml2obj %s -o %t1
|
|
# RUN: llvm-readobj -A %t1 | FileCheck %s
|
|
# RUN: llvm-readelf -A %t1 | FileCheck %s
|
|
|
|
# CHECK: MIPS Options {
|
|
# CHECK-NEXT: ODK_REGINFO {
|
|
# CHECK-NEXT: GP: 0x807060504030201
|
|
# CHECK-NEXT: General Mask: 0xD0C0B0A
|
|
# CHECK-NEXT: Co-Proc Mask0: 0x88776655
|
|
# CHECK-NEXT: Co-Proc Mask1: 0xCCBBAA99
|
|
# CHECK-NEXT: Co-Proc Mask2: 0x1EFFEEDD
|
|
# CHECK-NEXT: Co-Proc Mask3: 0x5E4E3E2E
|
|
# CHECK-NEXT: }
|
|
# CHECK-NEXT: ODK_REGINFO {
|
|
# CHECK-NEXT: GP: 0x0
|
|
# CHECK-NEXT: General Mask: 0x0
|
|
# CHECK-NEXT: Co-Proc Mask0: 0x0
|
|
# CHECK-NEXT: Co-Proc Mask1: 0x0
|
|
# CHECK-NEXT: Co-Proc Mask2: 0x0
|
|
# CHECK-NEXT: Co-Proc Mask3: 0x0
|
|
# CHECK-NEXT: }
|
|
# CHECK-NEXT: }
|
|
|
|
## Check that we try to dump the .MIPS.options section when we are able to locate it by name.
|
|
# RUN: yaml2obj -DNAME=0xffff %s -o %t.err1
|
|
# RUN: llvm-readelf -A %t.err1 2>&1 | \
|
|
# RUN: FileCheck %s -DFILE=%t.err1 --check-prefix=NAME-ERR-FOUND --implicit-check-not=warning:
|
|
# RUN: llvm-readobj -A %t.err1 2>&1 | \
|
|
# RUN: FileCheck %s -DFILE=%t.err1 --check-prefix=NAME-ERR-FOUND --implicit-check-not=warning:
|
|
|
|
# NAME-ERR-FOUND: warning: '[[FILE]]': unable to read the name of SHT_PROGBITS section with index 1: a section [index 1] has an invalid sh_name (0xffff) offset which goes past the end of the section name string table
|
|
# NAME-ERR-FOUND-NEXT: warning: '[[FILE]]': unable to read the name of SHT_PROGBITS section with index 3: a section [index 3] has an invalid sh_name (0xffff) offset which goes past the end of the section name string table
|
|
# NAME-ERR-FOUND: MIPS Options {
|
|
# NAME-ERR-FOUND-NEXT: ODK_REGINFO {
|
|
# NAME-ERR-FOUND-NEXT: GP: 0x807060504030201
|
|
# NAME-ERR-FOUND-NEXT: General Mask: 0xD0C0B0A
|
|
# NAME-ERR-FOUND-NEXT: Co-Proc Mask0: 0x88776655
|
|
# NAME-ERR-FOUND-NEXT: Co-Proc Mask1: 0xCCBBAA99
|
|
# NAME-ERR-FOUND-NEXT: Co-Proc Mask2: 0x1EFFEEDD
|
|
# NAME-ERR-FOUND-NEXT: Co-Proc Mask3: 0x5E4E3E2E
|
|
# NAME-ERR-FOUND-NEXT: }
|
|
# NAME-ERR-FOUND-NEXT: ODK_REGINFO {
|
|
# NAME-ERR-FOUND-NEXT: GP: 0x0
|
|
# NAME-ERR-FOUND-NEXT: General Mask: 0x0
|
|
# NAME-ERR-FOUND-NEXT: Co-Proc Mask0: 0x0
|
|
# NAME-ERR-FOUND-NEXT: Co-Proc Mask1: 0x0
|
|
# NAME-ERR-FOUND-NEXT: Co-Proc Mask2: 0x0
|
|
# NAME-ERR-FOUND-NEXT: Co-Proc Mask3: 0x0
|
|
# NAME-ERR-FOUND-NEXT: }
|
|
# NAME-ERR-FOUND-NEXT: }
|
|
|
|
--- !ELF
|
|
FileHeader:
|
|
Class: ELFCLASS64
|
|
Data: ELFDATA2LSB
|
|
Type: ET_REL
|
|
Machine: EM_MIPS
|
|
Sections:
|
|
- Type: SHT_PROGBITS
|
|
ShName: [[NAME=<none>]]
|
|
- Name: .MIPS.options
|
|
Type: SHT_MIPS_OPTIONS
|
|
ShName: [[OPTNAME=<none>]]
|
|
ShSize: [[SECSIZE=<none>]]
|
|
ContentArray: [ [[KIND=0x1]], ## Kind. ODK_REGINFO == 1.
|
|
[[DESCSIZE=0x28]], ## Byte size of descriptor, including this header.
|
|
0x0, 0x0, ## Section header index of section affected or 0 for global options.
|
|
0x0, 0x0, 0x0, 0x0, ## Kind-specific information.
|
|
0xA, 0xB, 0xC, 0xD, ## ODK_REGINFO: bit-mask of used general registers.
|
|
0x11, 0x22, 0x33, 0x44, ## ODK_REGINFO: unused padding field.
|
|
0x55, 0x66, 0x77, 0x88, ## ODK_REGINFO: bit-mask of used co-processor registers (0).
|
|
0x99, 0xAA, 0xBB, 0xCC, ## ODK_REGINFO: bit-mask of used co-processor registers (1).
|
|
0xDD, 0xEE, 0xFF, 0x1E, ## ODK_REGINFO: bit-mask of used co-processor registers (2).
|
|
0x2E, 0x3E, 0x4E, 0x5E, ## ODK_REGINFO: bit-mask of used co-processor registers (3).
|
|
0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8, ## ODK_REGINFO: gp register value.
|
|
## A descriptor for one more arbirtary supported option.
|
|
0x1, 0x28, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
|
|
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
|
|
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
|
|
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0 ]
|
|
- Type: SHT_PROGBITS
|
|
ShName: [[NAME=<none>]]
|
|
|
|
## Check we report a warning when we are unable to find the .MIPS.options section due to an error.
|
|
# RUN: yaml2obj -DOPTNAME=0xffff %s -o %t.err2
|
|
# RUN: llvm-readelf -A %t.err2 2>&1 | \
|
|
# RUN: FileCheck %s -DFILE=%t.err2 --check-prefix=NAME-ERR-NOTFOUND --implicit-check-not=warning: --implicit-check-not="MIPS Options"
|
|
# RUN: llvm-readobj -A %t.err2 2>&1 | \
|
|
# RUN: FileCheck %s -DFILE=%t.err2 --check-prefix=NAME-ERR-NOTFOUND --implicit-check-not=warning: --implicit-check-not="MIPS Options"
|
|
|
|
# NAME-ERR-NOTFOUND: warning: '[[FILE]]': unable to read the name of SHT_MIPS_OPTIONS section with index 2: a section [index 2] has an invalid sh_name (0xffff) offset which goes past the end of the section name string table
|
|
|
|
## Check we report a warning when the .MIPS.options section has a size that is less than the
|
|
## size of the .MIPS.options description header.
|
|
|
|
# RUN: yaml2obj %s -DSECSIZE=0x1 -o %t2
|
|
# RUN: llvm-readelf -A %t2 2>&1 | FileCheck %s -DFILE=%t2 --check-prefix=SEC-SIZE
|
|
# RUN: llvm-readobj -A %t2 2>&1 | FileCheck %s -DFILE=%t2 --check-prefix=SEC-SIZE
|
|
|
|
# SEC-SIZE: MIPS Options {
|
|
# SEC-SIZE-NEXT: warning: '[[FILE]]': the .MIPS.options section has an invalid size (0x1)
|
|
# SEC-SIZE-NEXT: }
|
|
|
|
## Check we report a warning when the .MIPS.options description header has a size
|
|
## that goes past the end of the section.
|
|
|
|
# RUN: yaml2obj %s -DDESCSIZE=0x51 -o %t3
|
|
# RUN: llvm-readelf -A %t3 2>&1 | FileCheck %s -DFILE=%t3 --check-prefix=DESC-SIZE
|
|
# RUN: llvm-readobj -A %t3 2>&1 | FileCheck %s -DFILE=%t3 --check-prefix=DESC-SIZE
|
|
|
|
# DESC-SIZE: IPS Options {
|
|
# DESC-SIZE-NEXT: warning: '[[FILE]]': a descriptor of size 0x51 at offset 0x0 goes past the end of the .MIPS.options section of size 0x50
|
|
# DESC-SIZE-NEXT: }
|
|
|
|
## Check we are able to skip unsupported options and continue dumping.
|
|
|
|
# RUN: yaml2obj %s -DKIND=0x2 -o %t4
|
|
# RUN: llvm-readelf -A %t4 2>&1 | FileCheck %s -DFILE=%t4 -DTAG="ODK_EXCEPTIONS (2)" --check-prefix=KIND
|
|
# RUN: llvm-readobj -A %t4 2>&1 | FileCheck %s -DFILE=%t4 -DTAG="ODK_EXCEPTIONS (2)" --check-prefix=KIND
|
|
|
|
# RUN: yaml2obj %s -DKIND=0xFF -o %t5
|
|
# RUN: llvm-readelf -A %t5 2>&1 | FileCheck %s -DFILE=%t5 -DTAG="Unknown (255)" --check-prefix=KIND
|
|
# RUN: llvm-readobj -A %t5 2>&1 | FileCheck %s -DFILE=%t5 -DTAG="Unknown (255)" --check-prefix=KIND
|
|
|
|
# KIND: MIPS Options {
|
|
# KIND-NEXT: Unsupported MIPS options tag: [[TAG]]
|
|
# KIND-NEXT: ODK_REGINFO {
|
|
# KIND-NEXT: GP: 0x0
|
|
# KIND-NEXT: General Mask: 0x0
|
|
# KIND-NEXT: Co-Proc Mask0: 0x0
|
|
# KIND-NEXT: Co-Proc Mask1: 0x0
|
|
# KIND-NEXT: Co-Proc Mask2: 0x0
|
|
# KIND-NEXT: Co-Proc Mask3: 0x0
|
|
# KIND-NEXT: }
|
|
# KIND-NEXT: }
|