re PR debug/83917 (with -mcall-ms2sysv-xlogues, stepping into x86 tail-call restore stub gives bad backtrace)

PR debug/83917
	* config/i386/i386-asm.h (PACKAGE_VERSION, PACKAGE_NAME,
	PACKAGE_STRING, PACKAGE_TARNAME, PACKAGE_URL): Undefine between
	inclusion of auto-target.h and auto-host.h.
	(USE_GAS_CFI_DIRECTIVES): Define if not defined already based on
	__GCC_HAVE_DWARF2_CFI_ASM.
	(cfi_startproc, cfi_endproc, cfi_adjust_cfa_offset,
	cfi_def_cfa_register, cfi_def_cfa, cfi_register, cfi_offset, cfi_push,
	cfi_pop): Define.
	* config/i386/cygwin.S: Don't include auto-host.h here, just
	define USE_GAS_CFI_DIRECTIVES to 1 or 0 and include i386-asm.h.
	(cfi_startproc, cfi_endproc, cfi_adjust_cfa_offset,
	cfi_def_cfa_register, cfi_register, cfi_push, cfi_pop): Remove.
	* config/i386/resms64fx.h: Add cfi_* directives.
	* config/i386/resms64x.h: Likewise.

From-SVN: r258010
This commit is contained in:
Jakub Jelinek 2018-02-26 20:46:34 +01:00 committed by Jakub Jelinek
parent 106b15eac3
commit e586831971
5 changed files with 70 additions and 22 deletions

View File

@ -1,3 +1,21 @@
2018-02-26 Jakub Jelinek <jakub@redhat.com>
PR debug/83917
* config/i386/i386-asm.h (PACKAGE_VERSION, PACKAGE_NAME,
PACKAGE_STRING, PACKAGE_TARNAME, PACKAGE_URL): Undefine between
inclusion of auto-target.h and auto-host.h.
(USE_GAS_CFI_DIRECTIVES): Define if not defined already based on
__GCC_HAVE_DWARF2_CFI_ASM.
(cfi_startproc, cfi_endproc, cfi_adjust_cfa_offset,
cfi_def_cfa_register, cfi_def_cfa, cfi_register, cfi_offset, cfi_push,
cfi_pop): Define.
* config/i386/cygwin.S: Don't include auto-host.h here, just
define USE_GAS_CFI_DIRECTIVES to 1 or 0 and include i386-asm.h.
(cfi_startproc, cfi_endproc, cfi_adjust_cfa_offset,
cfi_def_cfa_register, cfi_register, cfi_push, cfi_pop): Remove.
* config/i386/resms64fx.h: Add cfi_* directives.
* config/i386/resms64x.h: Likewise.
2018-02-20 Max Filippov <jcmvbkbc@gmail.com>
* config/xtensa/ieee754-df.S (__adddf3_aux): Add

View File

@ -23,31 +23,13 @@
* <http://www.gnu.org/licenses/>.
*/
#include "auto-host.h"
#ifdef HAVE_GAS_CFI_SECTIONS_DIRECTIVE
# define USE_GAS_CFI_DIRECTIVES 1
.cfi_sections .debug_frame
# define cfi_startproc() .cfi_startproc
# define cfi_endproc() .cfi_endproc
# define cfi_adjust_cfa_offset(X) .cfi_adjust_cfa_offset X
# define cfi_def_cfa_register(X) .cfi_def_cfa_register X
# define cfi_register(D,S) .cfi_register D, S
# ifdef __x86_64__
# define cfi_push(X) .cfi_adjust_cfa_offset 8; .cfi_rel_offset X, 0
# define cfi_pop(X) .cfi_adjust_cfa_offset -8; .cfi_restore X
# else
# define cfi_push(X) .cfi_adjust_cfa_offset 4; .cfi_rel_offset X, 0
# define cfi_pop(X) .cfi_adjust_cfa_offset -4; .cfi_restore X
# endif
#else
# define cfi_startproc()
# define cfi_endproc()
# define cfi_adjust_cfa_offset(X)
# define cfi_def_cfa_register(X)
# define cfi_register(D,S)
# define cfi_push(X)
# define cfi_pop(X)
#endif /* HAVE_GAS_CFI_SECTIONS_DIRECTIVE */
# define USE_GAS_CFI_DIRECTIVES 0
#endif
#include "i386-asm.h"
#ifdef L_chkstk
/* Function prologue calls __chkstk to probe the stack when allocating more

View File

@ -27,8 +27,47 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
#define I386_ASM_H
#include "auto-target.h"
#undef PACKAGE_VERSION
#undef PACKAGE_NAME
#undef PACKAGE_STRING
#undef PACKAGE_TARNAME
#undef PACKAGE_URL
#include "auto-host.h"
#ifndef USE_GAS_CFI_DIRECTIVES
# ifdef __GCC_HAVE_DWARF2_CFI_ASM
# define USE_GAS_CFI_DIRECTIVES 1
# else
# define USE_GAS_CFI_DIRECTIVES 0
# endif
#endif
#if USE_GAS_CFI_DIRECTIVES
# define cfi_startproc() .cfi_startproc
# define cfi_endproc() .cfi_endproc
# define cfi_adjust_cfa_offset(X) .cfi_adjust_cfa_offset X
# define cfi_def_cfa_register(X) .cfi_def_cfa_register X
# define cfi_def_cfa(R,O) .cfi_def_cfa R, O
# define cfi_register(D,S) .cfi_register D, S
# define cfi_offset(R,O) .cfi_offset R, O
# ifdef __x86_64__
# define cfi_push(X) .cfi_adjust_cfa_offset 8; .cfi_rel_offset X, 0
# define cfi_pop(X) .cfi_adjust_cfa_offset -8; .cfi_restore X
# else
# define cfi_push(X) .cfi_adjust_cfa_offset 4; .cfi_rel_offset X, 0
# define cfi_pop(X) .cfi_adjust_cfa_offset -4; .cfi_restore X
# endif
#else
# define cfi_startproc()
# define cfi_endproc()
# define cfi_adjust_cfa_offset(X)
# define cfi_def_cfa_register(X)
# define cfi_def_cfa(R,O)
# define cfi_register(D,S)
# define cfi_offset(R,O)
# define cfi_push(X)
# define cfi_pop(X)
#endif
#define PASTE2(a, b) PASTE2a(a, b)
#define PASTE2a(a, b) a ## b

View File

@ -33,6 +33,9 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
* from the function. */
.text
cfi_startproc()
cfi_offset(%rbp, -16)
cfi_def_cfa(%rbp, 16)
MS2SYSV_STUB_BEGIN(resms64fx_17)
mov -0x68(%rsi),%r15
MS2SYSV_STUB_BEGIN(resms64fx_16)
@ -48,7 +51,9 @@ MS2SYSV_STUB_BEGIN(resms64fx_12)
SSE_RESTORE
mov -0x38(%rsi),%rsi
leaveq
cfi_def_cfa(%rsp, 8)
ret
cfi_endproc()
MS2SYSV_STUB_END(resms64fx_12)
MS2SYSV_STUB_END(resms64fx_13)
MS2SYSV_STUB_END(resms64fx_14)

View File

@ -32,6 +32,8 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
* function. */
.text
cfi_startproc()
cfi_def_cfa(%r10, 8)
MS2SYSV_STUB_BEGIN(resms64x_18)
mov -0x70(%rsi),%r15
MS2SYSV_STUB_BEGIN(resms64x_17)
@ -49,7 +51,9 @@ MS2SYSV_STUB_BEGIN(resms64x_12)
SSE_RESTORE
mov -0x38(%rsi),%rsi
mov %r10,%rsp
cfi_def_cfa_register(%rsp)
ret
cfi_endproc()
MS2SYSV_STUB_END(resms64x_12)
MS2SYSV_STUB_END(resms64x_13)
MS2SYSV_STUB_END(resms64x_14)