brintos

brintos / llvm-project-archived public Read only

0
0
Text · 8.4 KiB · b9075a8 Raw
244 lines · plain
1## Check parsing and dumping of SFrame Function Descriptor Entries.2# RUN: yaml2obj --docnum=1 %s -o %t.13# RUN: llvm-readobj --sframe=.sframe_short --sframe=.sframe_section_relative \4# RUN:   --sframe=.sframe_fde_relative %t.1 2>&1 | \5# RUN:   FileCheck %s --strict-whitespace --match-full-lines \6# RUN:   -DFILE=%t.1 --check-prefix=CASE17 8## Check big-endian support.9# RUN: yaml2obj --docnum=2 %s -o %t.210# RUN: llvm-readobj --sframe %t.2 2>&1 | \11# RUN:   FileCheck %s --strict-whitespace --match-full-lines \12# RUN:   -DFILE=%t.2 --check-prefix=CASE213 14--- !ELF15FileHeader:16  Class:   ELFCLASS6417  Data:    ELFDATA2LSB18  Type:    ET_EXEC19Sections:20  - Name:  .sframe_short21    Type:  SHT_GNU_SFRAME22    Flags: [ SHF_ALLOC ]23    ContentArray: [24      0xe2, 0xde, 0x02, 0x00,  # Preamble (magic, version, flags)25      # Header:26      0x03, 0x42, 0x47, 0x04,  # ABI, Fixed FP offset, Fixed RA Offset, AUX header length27      0x01, 0x00, 0x00, 0x00,  # Number of FDEs28      0x10, 0x00, 0x00, 0x00,  # Number of FREs29      0x00, 0x10, 0x00, 0x00,  # FRE length30      0x00, 0x00, 0x00, 0x00,  # FDE offset31      0x00, 0x01, 0x00, 0x00,  # FRE offset32      0xde, 0xad, 0xbe, 0xef,  # AUX header33      0x01, 0x02, 0x03, 0x04,  # Short FDE34    ]35# CASE1-LABEL:SFrame section '.sframe_short' {36#       CASE1:  Header {37#  CASE1-NEXT:    Magic: 0xDEE238#  CASE1-NEXT:    Version: V2 (0x2)39#  CASE1-NEXT:    Flags [ (0x0)40#  CASE1-NEXT:    ]41#  CASE1-NEXT:    ABI: AMD64EndianLittle (0x3)42#  CASE1-NEXT:    CFA fixed FP offset (unused): 6643#  CASE1-NEXT:    CFA fixed RA offset: 7144#  CASE1-NEXT:    Auxiliary header length: 445#  CASE1-NEXT:    Num FDEs: 146#  CASE1-NEXT:    Num FREs: 1647#  CASE1-NEXT:    FRE subsection length: 409648#  CASE1-NEXT:    FDE subsection offset: 049#  CASE1-NEXT:    FRE subsection offset: 25650#  CASE1-NEXT:    Auxiliary header: [0xDE, 0xAD, 0xBE, 0xEF]51#  CASE1-NEXT:  }52#  CASE1-NEXT:{{.*}}: warning: '[[FILE]]': unexpected end of data at offset 0x24 while reading [0x20, 0x34)53#  CASE1-NEXT:}54 55  - Name:  .sframe_section_relative56    Type:  SHT_GNU_SFRAME57    Flags: [ SHF_ALLOC ]58    ContentArray: [59      0xe2, 0xde, 0x02, 0x00,  # Preamble (magic, version, flags)60      # Header:61      0x03, 0x42, 0x47, 0x00,  # ABI, Fixed FP offset, Fixed RA Offset, AUX header length62      0x01, 0x00, 0x00, 0x00,  # Number of FDEs63      0x10, 0x00, 0x00, 0x00,  # Number of FREs64      0x00, 0x10, 0x00, 0x00,  # FRE length65      0x04, 0x00, 0x00, 0x00,  # FDE offset66      0x00, 0x01, 0x00, 0x00,  # FRE offset67 68      0xff, 0xff, 0xff, 0xff,  # Unused data skipped due to the FDE offset field69 70      # FDE:71      0x00, 0xde, 0xad, 0x00,  # Start Address72      0xbe, 0x01, 0x00, 0x00,  # Size73      0x10, 0x00, 0x00, 0x00,  # Start FRE Offset74      0x00, 0x00, 0x00, 0x00,  # Number of FREs75      0x31, 0xde, 0xad, 0x00,  # Info, RepSize, Padding276    ]77## Also testing:78## - dead space between the header and the FDE subsection.79## - PCMask FDE types80## - unused PAuth key handling81# CASE1-LABEL:SFrame section '.sframe_section_relative' {82#       CASE1:  Header {83#  CASE1-NEXT:    Magic: 0xDEE284#  CASE1-NEXT:    Version: V2 (0x2)85#  CASE1-NEXT:    Flags [ (0x0)86#  CASE1-NEXT:    ]87#  CASE1-NEXT:    ABI: AMD64EndianLittle (0x3)88#  CASE1-NEXT:    CFA fixed FP offset (unused): 6689#  CASE1-NEXT:    CFA fixed RA offset: 7190#  CASE1-NEXT:    Auxiliary header length: 091#  CASE1-NEXT:    Num FDEs: 192#  CASE1-NEXT:    Num FREs: 1693#  CASE1-NEXT:    FRE subsection length: 409694#  CASE1-NEXT:    FDE subsection offset: 495#  CASE1-NEXT:    FRE subsection offset: 25696#  CASE1-NEXT:    Auxiliary header: []97#  CASE1-NEXT:  }98#  CASE1-NEXT:  Function Index [99#  CASE1-NEXT:    FuncDescEntry [0] {100#  CASE1-NEXT:      PC: 0xADDE24101#  CASE1-NEXT:      Size: 0x1BE102#  CASE1-NEXT:      Start FRE Offset: 0x10103#  CASE1-NEXT:      Num FREs: 0104#  CASE1-NEXT:      Info {105#  CASE1-NEXT:        FRE Type: Addr2 (0x1)106#  CASE1-NEXT:        FDE Type: PCMask (0x1)107#  CASE1-NEXT:        Raw: 0x31108#  CASE1-NEXT:      }109#  CASE1-NEXT:      Repetitive block size: 0xDE110#  CASE1-NEXT:      Padding2: 0xAD111#  CASE1-NEXT:      FREs [112#  CASE1-NEXT:      ]113#  CASE1-NEXT:    }114#  CASE1-NEXT:  ]115#  CASE1-NEXT:}116 117  - Name:  .sframe_fde_relative118    Type:  SHT_GNU_SFRAME119    Flags: [ SHF_ALLOC ]120    ContentArray: [121      0xe2, 0xde, 0x02, 0x04,  # Preamble (magic, version, flags)122      # Header:123      0x02, 0x42, 0x47, 0x00,  # ABI, Fixed FP offset, Fixed RA Offset, AUX header length124      0x01, 0x00, 0x00, 0x00,  # Number of FDEs125      0x10, 0x00, 0x00, 0x00,  # Number of FREs126      0x00, 0x10, 0x00, 0x00,  # FRE length127      0x04, 0x00, 0x00, 0x00,  # FDE offset128      0x00, 0x01, 0x00, 0x00,  # FRE offset129 130      0xff, 0xff, 0xff, 0xff,  # Unused data skipped due to the FDE offset field131 132      # FDE:133      0x00, 0xde, 0xad, 0x00,  # Start Address134      0xbe, 0x01, 0x00, 0x00,  # Size135      0x10, 0x00, 0x00, 0x00,  # Start FRE Offset136      0x00, 0x00, 0x00, 0x00,  # Number of FREs137      0x02, 0xde, 0xad, 0x00,  # Info, RepSize, Padding2138    ]139## Also testing:140## - PCInc FDE type141## - AArch64 PAuth key handling142# CASE1-LABEL:SFrame section '.sframe_fde_relative' {143#       CASE1:  Header {144#  CASE1-NEXT:    Magic: 0xDEE2145#  CASE1-NEXT:    Version: V2 (0x2)146#  CASE1-NEXT:    Flags [ (0x4)147#  CASE1-NEXT:      FDEFuncStartPCRel (0x4){{ *}}148#  CASE1-NEXT:    ]149#  CASE1-NEXT:    ABI: AArch64EndianLittle (0x2)150#  CASE1-NEXT:    CFA fixed FP offset (unused): 66151#  CASE1-NEXT:    CFA fixed RA offset (unused): 71152#  CASE1-NEXT:    Auxiliary header length: 0153#  CASE1-NEXT:    Num FDEs: 1154#  CASE1-NEXT:    Num FREs: 16155#  CASE1-NEXT:    FRE subsection length: 4096156#  CASE1-NEXT:    FDE subsection offset: 4157#  CASE1-NEXT:    FRE subsection offset: 256158#  CASE1-NEXT:    Auxiliary header: []159#  CASE1-NEXT:  }160#  CASE1-NEXT:  Function Index [161#  CASE1-NEXT:    FuncDescEntry [0] {162#  CASE1-NEXT:      PC: 0xADDE78163#  CASE1-NEXT:      Size: 0x1BE164#  CASE1-NEXT:      Start FRE Offset: 0x10165#  CASE1-NEXT:      Num FREs: 0166#  CASE1-NEXT:      Info {167#  CASE1-NEXT:        FRE Type: Addr4 (0x2)168#  CASE1-NEXT:        FDE Type: PCInc (0x0)169#  CASE1-NEXT:        PAuth Key: A (0x0)170#  CASE1-NEXT:        Raw: 0x2171#  CASE1-NEXT:      }172#  CASE1-NEXT:      Repetitive block size (unused): 0xDE173#  CASE1-NEXT:      Padding2: 0xAD174#  CASE1-NEXT:      FREs [175#  CASE1-NEXT:      ]176#  CASE1-NEXT:    }177#  CASE1-NEXT:  ]178#  CASE1-NEXT:}179 180--- !ELF181FileHeader:182  Class: ELFCLASS64183  Data:  ELFDATA2MSB184  Type:  ET_EXEC185Sections:186  - Name:  .sframe187    Type:  SHT_GNU_SFRAME188    Flags: [ SHF_ALLOC ]189    ContentArray: [190      0xde, 0xe2, 0x02, 0x05,  # Preamble (magic, version, flags)191      # Header:192      0x01, 0x42, 0x47, 0x00,  # ABI, Fixed FP offset, Fixed RA Offset, AUX header length193      0x00, 0x00, 0x00, 0x01,  # Number of FDEs194      0x00, 0x00, 0x00, 0x10,  # Number of FREs195      0x00, 0x00, 0x10, 0x00,  # FRE length196      0x00, 0x00, 0x00, 0x00,  # FDE offset197      0x00, 0x00, 0x01, 0x00,  # FRE offset198 199      # FDE:200      0x00, 0xde, 0xad, 0x00,  # Start Address201      0x00, 0x00, 0x01, 0xbe,  # Size202      0x00, 0x00, 0x00, 0x10,  # Start FRE Offset203      0x00, 0x00, 0x00, 0x00,  # Number of FREs204      0x02, 0xde, 0xad, 0x00,  # Info, RepSize, Padding2205    ]206# CASE2-LABEL:SFrame section '.sframe' {207#       CASE2:  Header {208#  CASE2-NEXT:    Magic: 0xDEE2209#  CASE2-NEXT:    Version: V2 (0x2)210#  CASE2-NEXT:    Flags [ (0x5)211#  CASE2-NEXT:      FDEFuncStartPCRel (0x4){{ *}}212#  CASE2-NEXT:      FDESorted (0x1){{ *}}213#  CASE2-NEXT:    ]214#  CASE2-NEXT:    ABI: AArch64EndianBig (0x1)215#  CASE2-NEXT:    CFA fixed FP offset (unused): 66216#  CASE2-NEXT:    CFA fixed RA offset (unused): 71217#  CASE2-NEXT:    Auxiliary header length: 0218#  CASE2-NEXT:    Num FDEs: 1219#  CASE2-NEXT:    Num FREs: 16220#  CASE2-NEXT:    FRE subsection length: 4096221#  CASE2-NEXT:    FDE subsection offset: 0222#  CASE2-NEXT:    FRE subsection offset: 256223#  CASE2-NEXT:    Auxiliary header: []224#  CASE2-NEXT:  }225#  CASE2-NEXT:  Function Index [226#  CASE2-NEXT:    FuncDescEntry [0] {227#  CASE2-NEXT:      PC: 0xDEAD1C228#  CASE2-NEXT:      Size: 0x1BE229#  CASE2-NEXT:      Start FRE Offset: 0x10230#  CASE2-NEXT:      Num FREs: 0231#  CASE2-NEXT:      Info {232#  CASE2-NEXT:        FRE Type: Addr4 (0x2)233#  CASE2-NEXT:        FDE Type: PCInc (0x0)234#  CASE2-NEXT:        PAuth Key: A (0x0)235#  CASE2-NEXT:        Raw: 0x2236#  CASE2-NEXT:      }237#  CASE2-NEXT:      Repetitive block size (unused): 0xDE238#  CASE2-NEXT:      Padding2: 0xAD00239#  CASE2-NEXT:      FREs [240#  CASE2-NEXT:      ]241#  CASE2-NEXT:    }242#  CASE2-NEXT:  ]243#  CASE2-NEXT:}244