This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug target/79793] Incorrect stack alignment for interrupt handler in 64-bit
- From: "hjl.tools at gmail dot com" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: Wed, 26 Jul 2017 22:05:39 +0000
- Subject: [Bug target/79793] Incorrect stack alignment for interrupt handler in 64-bit
- Auto-submitted: auto-generated
- References: <bug-79793-4@http.gcc.gnu.org/bugzilla/>
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=79793
H.J. Lu <hjl.tools at gmail dot com> changed:
What |Removed |Added
----------------------------------------------------------------------------
Attachment #41834|0 |1
is obsolete| |
--- Comment #15 from H.J. Lu <hjl.tools at gmail dot com> ---
Created attachment 41839
--> https://gcc.gnu.org/bugzilla/attachment.cgi?id=41839&action=edit
A patch
-g -O2 -flto generates:
Dump of assembler code for function fn:
0x0000000000400550 <+0>: push %rdi
0x0000000000400551 <+1>: sub $0x8,%rsp
0x0000000000400555 <+5>: cmpq $0x12345670,0x10(%rsp)
0x000000000040055e <+14>: jne 0x400430 <fn>
=> 0x0000000000400564 <+20>: cmpq $0x12345671,0x18(%rsp)
with debug info:
00000084 0000000000000018 00000058 FDE cie=00000030
pc=0000000000400550..00000000004005b7
DW_CFA_advance_loc: 1 to 0000000000400551
DW_CFA_def_cfa_offset: 16
DW_CFA_offset: r5 (rdi) at cfa-16
DW_CFA_advance_loc: 4 to 0000000000400555
DW_CFA_def_cfa_offset: 24
DW_CFA_nop
DW_CFA_nop
DW_CFA_nop
-g -O2 generates:
0x0000000000400550 <+0>: push %rdi
0x0000000000400551 <+1>: sub $0x8,%rsp
0x0000000000400555 <+5>: cmpq $0x12345670,0x10(%rsp)
0x000000000040055e <+14>: jne 0x400430 <fn>
0x0000000000400564 <+20>: cmpq $0x12345671,0x18(%rsp)
with debug info:
00000070 0000000000000018 00000044 FDE cie=00000030
pc=0000000000400550..00000000004005b7
DW_CFA_advance_loc: 1 to 0000000000400551
DW_CFA_def_cfa_offset: 24
DW_CFA_offset: r5 (rdi) at cfa-24
DW_CFA_advance_loc: 4 to 0000000000400555
DW_CFA_def_cfa_offset: 32
DW_CFA_nop
DW_CFA_nop
DW_CFA_nop
Somehow -flto -O2 generates the incorrect debug info.