https://gcc.gnu.org/bugzilla/show_bug.cgi?id=89839
Bug ID: 89839 Summary: section not reset to text for top level asm Product: gcc Version: unknown Status: UNCONFIRMED Severity: normal Priority: P3 Component: inline-asm Assignee: unassigned at gcc dot gnu.org Reporter: andi-gcc at firstfloor dot org Target Milestone: --- The ELF section from the previous function doesn't get reset before top level asm statements: e.g. __attribute__((section("foo"))) void func(void) { } asm("foo:\n"); gcc -S gives .section foo,"ax",@progbits <----------------- sets the section .globl func .type func, @function func: .LFB0: .cfi_startproc pushq %rbp .cfi_def_cfa_offset 16 .cfi_offset 6, -16 movq %rsp, %rbp .cfi_def_cfa_register 6 nop popq %rbp .cfi_def_cfa 7, 8 ret .cfi_endproc .LFE0: .size func, .-func <--------------------------- no section reset before the asm #APP foo: The problem is if foo is some section with special behavior (for example initcall sections in the Linux kernel) this can cause crashes. I've seen such problems with LTO on the Linux kernel. gcc should always reset the section to .text before emitting top level asm. See with 8.x, but also trunk.