brintos

brintos / llvm-project-archived public Read only

0
0
Text · 2.2 KiB · 901db08 Raw
62 lines · plain
1// Check that marker symbols ($d, $x) denoting data embedded in code are ignored2// if they fall outside their respective sections.3 4// RUN: yaml2obj %S/Inputs/spurious-marker-symbol.yaml -o %t.exe5// RUN: llvm-bolt %t.exe -o %t.bolt 2>&1 | FileCheck %s6// CHECK: 1 out of 1 functions were overwritten7// RUN: llvm-objdump -j .text -d %t.bolt | FileCheck %s -check-prefix=CHECK-DISASM8// CHECK-DISASM: func9// CHECK-DISASM: 2a0000: d2800540   mov10// CHECK-DISASM: 2a0004: d65f03c0   ret11 12// The YAML encodes the following assembly and debug information:13 14  .text15  .globl func16  .type func, %function17func:18  mov    x0, #4219// $d.42:    (symbol in .ignored, with an address in .text)20  ret21 22// .eh_frame contains minimal DWARF with a CFA operation on the `ret`. BOLT23// should ignore the spurious `$d.42`. If it doesn't, then it will stop24// disassembling after the `mov` and will fail to process the second25// DW_CFA_def_cfa_offset.26//27// CIE28//    length:                       0000001029//    CIE_id:                       0000000030//    version:                            0131//    augmentation:32//      "zR"                        7a 52 0033//      - read augmentation data34//      - read FDE pointer encoding35//    code_alignment_factor:              0436//    data_alignment_factor:              78  (-8)37//    return_address_register:            1e  (r30 / lr)38//39//    augmentation data:40//      length:                           0141//      FDE pointers are absptr+sdata4    0b42//43//    initial_instructions:44//      DW_CFA_def_cfa (31, 0):     0c 1f 0045//46// Encoding: 10000000'00000000'01'7a5200'04'78'1e'10'0b'0c1f0047//48// FDE49//    length:                       0000001450//    CIE_pointer:                  00000018  (backwards offset from here to CIE)51//    initial_location:             002a0000  (`func` as absptr+sdata4)52//    address_range:                0000000853//    augmentation data:54//      length:                           0055//    instructions:56//      DW_CFA_def_cfa_offset (1)      0e 0157//      DW_CFA_advance_loc (1)            41  (`ret` at 0x2a0004)58//      DW_CFA_def_cfa_offset (1)      0e 01  Fails unless $d.42 is ignored.59//      DW_CFA_nop                     00 0060//61// Encoding: 14000000'18000000'00002a00'08000000'000e0141'0e01000062