bug-binutils
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Bug gas/27472] New: gas: Suppress "CFI instruction used without previou


From: i at maskray dot me
Subject: [Bug gas/27472] New: gas: Suppress "CFI instruction used without previous .cfi_startproc" if .cfi_sections is empty
Date: Fri, 26 Feb 2021 05:45:34 +0000

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

            Bug ID: 27472
           Summary: gas: Suppress "CFI instruction used without previous
                    .cfi_startproc" if .cfi_sections is empty
           Product: binutils
           Version: unspecified
            Status: UNCONFIRMED
          Severity: normal
          Priority: P2
         Component: gas
          Assignee: unassigned at sourceware dot org
          Reporter: i at maskray dot me
  Target Milestone: ---

% cat a.c
int main() {
  asm("pushl 0\n.cfi_adjust_cfa_offset 4\npop %%eax\n.cfi_adjust_cfa_offset -4"
::: "eax");
}
% gcc -m32 -c -fomit-frame-pointer -fno-asynchronous-unwind-tables a.c
a.c: Assembler messages:
a.c:3: Error: CFI instruction used without previous .cfi_startproc
a.c:5: Error: CFI instruction used without previous .cfi_startproc

-fasynchronous-unwind-tables & -fno-asynchronous-unwind-tables do not have a
predefined macro, so it is difficult for the inline asm to know whether CFI
directives should be used. For ergonomics, users just want to write CFI
directives and hope they will be silently ignored in
-fno-asynchronous-unwind-tables mode. However, GNU as errors for .cfi_* without
.cfi_startproc .

I suggest that (1) GCC emits ".cfi_sections" (no value) at the beginning, (2)
GNU as suppresses the error if no .eh_frame/.debug_frame is needed.

The place to patch is gas/dw2gencfi.c:dot_cfi and a few other functions.

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


reply via email to

[Prev in Thread] Current Thread [Next in Thread]