brintos

brintos / llvm-project-archived public Read only

0
0
Text · 6.2 KiB · eeaa402 Raw
184 lines · plain
1# RUN: llvm-mc --filetype=obj --gsframe -triple x86_64 %s -o %t.o2# RUN: llvm-readelf --sframe %t.o | FileCheck %s3 4# Tests selection for the proper FRE::BX encoding at the boundaries5# between int8_t, int16_t, and int32_t.  Ensures the largest offset6# between CFA, RA, and FP governs. Align functions to 1024 to make it7# easier to interpet offsets. Some directives require alignment, so8# it isn't always possible to test exact boundaries.9 10# Also, check that irrelevant cfi directives don't create new fres,11# or affect the current ones. Checking the Start Address ensures that12# the proper FRE gets the proper checks. Using .long makes addresses13# architecture independent.14 15        .align 102416fde4_fre_offset_sizes:17# CHECK:        FuncDescEntry [0] {18# CHECK:          Start FRE Offset: 019# CHECK:            FRE Type: Addr1 (0x0)20        .cfi_startproc21# CHECK:        Frame Row Entry {22# CHECK-NEXT:          Start Address: 0x023# CHECK-NEXT:          Return Address Signed: No24# CHECK-NEXT:          Offset Size: B1 (0x0)25# CHECK-NEXT:          Base Register: SP (0x1)26# CHECK-NEXT:          CFA Offset: 827# CHECK-NEXT:          RA Offset: -828        .long 029# Uninteresting register no new fre, no effect on cfa30        .cfi_offset 0, 831        .long 032        .cfi_def_cfa_offset 0x7833# CHECK:        Frame Row Entry {34# CHECK-NEXT:          Start Address: 0x835# CHECK-NEXT:          Return Address Signed: No36# CHECK-NEXT:          Offset Size: B1 (0x0)37# CHECK-NEXT:          Base Register: SP (0x1)38# CHECK-NEXT:          CFA Offset: 12039# CHECK-NEXT:          RA Offset: -840        .long 041# Uninteresting register no new fre, no effect on cfa42        .cfi_rel_offset 1, 843        .long 0 44        .cfi_def_cfa_offset 0x80 45# CHECK:        Frame Row Entry {46# CHECK-NEXT:          Start Address: 0x1047# CHECK-NEXT:          Return Address Signed: No48# CHECK-NEXT:          Offset Size: B2 (0x1)49# CHECK-NEXT:          Base Register: SP (0x1)50# CHECK-NEXT:          CFA Offset: 12851# CHECK-NEXT:          RA Offset: -852        .long 053# Uninteresting register no new fre, no effect on cfa54        .cfi_val_offset 1, 855        .long 056        .cfi_def_cfa_offset 0x7FFF57# CHECK:        Frame Row Entry {58# CHECK-NEXT:          Start Address: 0x1859# CHECK-NEXT:          Return Address Signed: No60# CHECK-NEXT:          Offset Size: B2 (0x1)61# CHECK-NEXT:          Base Register: SP (0x1)62# CHECK-NEXT:          CFA Offset: 3276763# CHECK-NEXT:          RA Offset: -864        .long 065        .cfi_def_cfa_offset 0x800066# CHECK:        Frame Row Entry {67# CHECK-NEXT:          Start Address: 0x1C68# CHECK-NEXT:          Return Address Signed: No69# CHECK-NEXT:          Offset Size: B4 (0x2)70# CHECK-NEXT:          Base Register: SP (0x1)71# CHECK-NEXT:          CFA Offset: 3276872# CHECK-NEXT:          RA Offset: -873        .long 074        .cfi_def_cfa_offset 0x875# CHECK:        Frame Row Entry {76# CHECK-NEXT:          Start Address: 0x2077# CHECK-NEXT:          Return Address Signed: No78# CHECK-NEXT:          Offset Size: B1 (0x0)79# CHECK-NEXT:          Base Register: SP (0x1)80# CHECK-NEXT:          CFA Offset: 881# CHECK-NEXT:          RA Offset: -882        .long 083        .cfi_adjust_cfa_offset 0x884# CHECK:        Frame Row Entry {85# CHECK-NEXT:          Start Address: 0x2486# CHECK-NEXT:          Return Address Signed: No87# CHECK-NEXT:          Offset Size: B1 (0x0)88# CHECK-NEXT:          Base Register: SP (0x1)89# CHECK-NEXT:          CFA Offset: 1690# CHECK-NEXT:          RA Offset: -891        .long 092        .cfi_def_cfa_register  6  # switch to fp93# CHECK:        Frame Row Entry {94# CHECK-NEXT:          Start Address: 0x2895# CHECK-NEXT:          Return Address Signed: No96# CHECK-NEXT:          Offset Size: B1 (0x0)97# CHECK-NEXT:          Base Register: FP (0x0)98# CHECK-NEXT:          CFA Offset: 1699# CHECK-NEXT:          RA Offset: -8100        .long 0101        .cfi_offset 7, 32102        # sp not the cfa but with large offset still changes encoding.103        .cfi_offset 6, 0x7FF8104# CHECK:        Frame Row Entry {105# CHECK-NEXT:          Start Address: 0x2C106# CHECK-NEXT:          Return Address Signed: No107# CHECK-NEXT:          Offset Size: B2 (0x1)108# CHECK-NEXT:          Base Register: FP (0x0)109# CHECK-NEXT:          CFA Offset: 16110# CHECK-NEXT:          RA Offset: -8111# CHECK-NEXT:          FP Offset: 32760112        .long 0113        .cfi_endproc114 115        .align 1024116restore_reg:117# CHECK:        FuncDescEntry [1] {118# CHECK:          Start FRE Offset: 0x23119# CHECK-NEXT:         Num FREs: 3120        .cfi_startproc121# CHECK:        Frame Row Entry {122# CHECK-NEXT:        Start Address: 0x400123# CHECK-NOT        FP Offset{{.*}}124# CHECK:        }125        .long 0126        .cfi_offset 6, 32127# CHECK      Frame Row Entry {128# CHECK-NEXT     Start Address: 0x404129# CHECK:          FP Offset: 32130          .long 0131        .cfi_restore 6132# CHECK:        Frame Row Entry {133# CHECK-NEXT:        Start Address: 0x408134# CHECK-NOT        FP Offset{{.*}}135# CHECK:         }136        .long 0137        .cfi_endproc138 139        .align 1024140remember_restore_state:141# CHECK:        FuncDescEntry [2] {142# CHECK:          Start FRE Offset: 0x2D143# CHECK-NEXT:         Num FREs: 4144        .cfi_startproc145# CHECK:        Frame Row Entry {146# CHECK-NEXT:        Start Address: 0x800147# CHECK-NOT        FP Offset{{.*}}148# CHECK:        }149        .long 0150        .cfi_offset 6, 8151        .cfi_offset 7, 16152        .cfi_offset 8, 24153# CHECK:        Frame Row Entry {154# CHECK-NEXT:      Start Address: 0x804155# CHECK:          Base Register: SP (0x1)156# CHECK-NEXT:          CFA Offset: 8157# CHECK-NEXT:          RA Offset: -8158# CHECK-NEXT:          FP Offset: 8159# CHECK-NEXT:        }160        .long 0161        .cfi_remember_state162# CHECK:        Frame Row Entry {163# CHECK-NEXT:          Start Address: 0x808164# CHECK:          Base Register: SP (0x1)165# CHECK-NEXT:          CFA Offset: 8166# CHECK-NEXT:          RA Offset: -8167# CHECK-NEXT:          FP Offset: 32168# CHECK-NEXT:        }169        .cfi_offset 6, 32170        .cfi_offset 7, 40171        .cfi_offset 8, 48172        .long 0173# CHECK:        Frame Row Entry {174# CHECK-NEXT:      Start Address: 0x80C175# CHECK:          Base Register: SP (0x1)176# CHECK-NEXT:          CFA Offset: 8177# CHECK-NEXT:          RA Offset: -8178# CHECK-NEXT:          FP Offset: 8179# CHECK-NEXT:        }180        .cfi_restore_state181        .long 0182 183        .cfi_endproc184