https://sourceware.org/bugzilla/show_bug.cgi?id=32953

            Bug ID: 32953
           Summary: sframe: incorrect handling of .cfi_same_value in gas
           Product: binutils
           Version: 2.45 (HEAD)
            Status: NEW
          Severity: normal
          Priority: P2
         Component: gas
          Assignee: unassigned at sourceware dot org
          Reporter: indu.bhagat at oracle dot com
  Target Milestone: ---

Currently gas skips processing the .cfi_same_value for SFrame generation
altogether (with no warning either).  This would be OK to do if the directive
was known to not affect the registers deemed interesting for SFrame - SP/FP/RA.

As per documentation, .cfi_same_value indicates that: Current value of register
is the same like in the previous frame, i.e. no restoration needed.  SFrame has
no means to encode this information.  So at least for the interesting
registers, skipping .cfi_same_value is not the right thing to do.

On x86_64:

$ cat cfi_same_value.s 
       .cfi_startproc
       .long 0
       .cfi_def_cfa_offset 16
       .cfi_same_value 0x6
       .long 0
       .cfi_endproc
$ as --gsframe cfi_same_value.s -o cfi_same_value.o
$ objdump --sframe cfi_same_value.o 

cfi_same_value.o:     file format elf64-x86-64

Contents of the SFrame section .sframe:
  Header :

    Version: SFRAME_VERSION_2
    Flags: NONE
    CFA fixed RA offset: -8
    Num FDEs: 1
    Num FREs: 2

  Function Index :

    func idx [0]: pc = 0x0, size = 8 bytes
    STARTPC         CFA       FP        RA           
    0000000000000000  sp+8      u         f            
    0000000000000004  sp+16     u         f

-- 
You are receiving this mail because:
You are on the CC list for the bug.

Reply via email to