brintos

brintos / llvm-project-archived public Read only

0
0
Text · 2.3 KiB · 794258f Raw
86 lines · plain
1# REQUIRES: x862 3# Test handling of FDE pc negative relative addressing with DW_EH_PE_sdata8.4# This situation can arise when .eh_frame is placed after .text.5 6# RUN: llvm-mc -filetype=obj -triple=x86_64-pc-linux %s -o %t.o7# RUN: echo "SECTIONS { .text : { *(.text) } .eh_frame : { *(.eh_frame) } }" > %t.script8# RUN: ld.lld --eh-frame-hdr --script %t.script --section-start .text=0x1000 %t.o -o %t9# RUN: llvm-readobj -S --section-data %t | FileCheck %s10 11# CHECK:      Section {12# CHECK:        Index:13# CHECK:        Name: .eh_frame14# CHECK-NEXT:   Type: SHT_PROGBITS15# CHECK-NEXT:   Flags [16# CHECK-NEXT:     SHF_ALLOC17# CHECK-NEXT:   ]18# CHECK-NEXT:   Address: 0x100119# CHECK-NEXT:   Offset: 0x100120# CHECK-NEXT:   Size:21# CHECK-NEXT:   Link:22# CHECK-NEXT:   Info:23# CHECK-NEXT:   AddressAlignment:24# CHECK-NEXT:   EntrySize:25# CHECK-NEXT:   SectionData (26# CHECK-NEXT:     0000: 10000000 00000000 017A5200 0101010127# CHECK-NEXT:     0010: 1C000000 10000000 18000000 E3FFFFFF28# CHECK-NEXT:     0020: FFFFFFFF 00000000 0000000029#                                                  ^30#   E3FFFFFF FFFFFFFF = _start(0x1000) - PC(.eh_frame(0x1001) + 0x1C)31 32# CHECK:      Section {33# CHECK:        Index:34# CHECK:        Name: .eh_frame_hdr35# CHECK-NEXT:   Type: SHT_PROGBITS36# CHECK-NEXT:   Flags [37# CHECK-NEXT:     SHF_ALLOC38# CHECK-NEXT:   ]39# CHECK-NEXT:   Address: 0x103040# CHECK-NEXT:   Offset: 0x103041# CHECK-NEXT:   Size: 2042# CHECK-NEXT:   Link: 043# CHECK-NEXT:   Info: 044# CHECK-NEXT:   AddressAlignment: 445# CHECK-NEXT:   EntrySize: 046# CHECK-NEXT:   SectionData (47# CHECK-NEXT:     0000: 011B033B CDFFFFFF 01000000 D0FFFFFF48# CHECK-NEXT:     0010: E5FFFFFF49#   Header (always 4 bytes): 011B033B50#   CDFFFFFF = .eh_frame(0x1001) - .eh_frame_hdr(0x1030) - 451#   01000000 = 1 = the number of FDE pointers in the table.52#   D0FFFFFF = _start(0x1000) - .eh_frame_hdr(0x1030)53#   E5FFFFFF = FDE(.eh_frame(0x1001) + 0x18) - .eh_frame_hdr(0x1030)54 55.text56.global _start57_start:58 nop59 60.section .eh_frame,"a",@unwind61  .long 16   # Size62  .long 0x00 # ID63  .byte 0x01 # Version.64 65  .byte 0x7A # Augmentation string: "zR"66  .byte 0x5267  .byte 0x0068 69  .byte 0x0170 71  .byte 0x01 # LEB12872  .byte 0x01 # LEB12873 74  .byte 0x01 # LEB12875  .byte 0x1C # DW_EH_PE_pcrel | DW_EH_PE_sdata876 77  .byte 0x0078  .byte 0x0079  .byte 0x0080 81  .long 16   # Size82  .long 24   # ID83fde:84  .quad _start - fde85  .long 086