mirror of
https://github.com/reactos/reactos.git
synced 2024-09-30 14:37:45 +00:00
[SDK] Use GAS SEH capabilities instead of CFI
Also remove a hack for x86 GAS which no longer holds
This commit is contained in:
parent
5e29e98f91
commit
2413530acf
|
@ -260,19 +260,22 @@ ENDM
|
||||||
/* To avoid reverse syntax we provide a new macro .PROC, replacing PROC... */
|
/* To avoid reverse syntax we provide a new macro .PROC, replacing PROC... */
|
||||||
.macro .PROC name
|
.macro .PROC name
|
||||||
.func \name
|
.func \name
|
||||||
#ifdef _X86_
|
|
||||||
/* x86 GAS expects a label with _ prefix */
|
|
||||||
_\name:
|
|
||||||
#endif
|
|
||||||
\name:
|
\name:
|
||||||
|
#ifdef _X86_
|
||||||
.cfi_startproc
|
.cfi_startproc
|
||||||
.equ cfa_current_offset, -8
|
#else
|
||||||
|
.seh_proc \name
|
||||||
|
#endif
|
||||||
.endm
|
.endm
|
||||||
#define FUNC .PROC
|
#define FUNC .PROC
|
||||||
|
|
||||||
/* ... and .ENDP, replacing ENDP */
|
/* ... and .ENDP, replacing ENDP */
|
||||||
.macro .ENDP
|
.macro .ENDP
|
||||||
|
#ifdef _X86_
|
||||||
.cfi_endproc
|
.cfi_endproc
|
||||||
|
#else
|
||||||
|
.seh_endproc
|
||||||
|
#endif
|
||||||
.endfunc
|
.endfunc
|
||||||
.endm
|
.endm
|
||||||
#define ENDFUNC .ENDP
|
#define ENDFUNC .ENDP
|
||||||
|
@ -339,45 +342,36 @@ ENDM
|
||||||
.endm
|
.endm
|
||||||
|
|
||||||
/* Macros for x64 stack unwind OPs */
|
/* Macros for x64 stack unwind OPs */
|
||||||
|
|
||||||
.macro .allocstack size
|
.macro .allocstack size
|
||||||
.cfi_adjust_cfa_offset \size
|
.seh_stackalloc \size
|
||||||
.set cfa_current_offset, cfa_current_offset - \size
|
|
||||||
.endm
|
.endm
|
||||||
|
|
||||||
code = 1
|
.macro .pushframe param
|
||||||
.macro .pushframe param=0
|
/*
|
||||||
.if (\param)
|
* FIXME. .seh_pushframe doesn't accept code argument.
|
||||||
.cfi_adjust_cfa_offset 0x30
|
* Patch sent.
|
||||||
.set cfa_current_offset, cfa_current_offset - 0x30
|
*/
|
||||||
.else
|
.seh_pushframe \param
|
||||||
.cfi_adjust_cfa_offset 0x28
|
|
||||||
.set cfa_current_offset, cfa_current_offset - 0x28
|
|
||||||
.endif
|
|
||||||
.endm
|
.endm
|
||||||
|
|
||||||
.macro .pushreg reg
|
.macro .pushreg reg
|
||||||
.cfi_adjust_cfa_offset 8
|
.seh_pushreg \reg
|
||||||
.equ cfa_current_offset, cfa_current_offset - 8
|
|
||||||
.cfi_offset \reg, cfa_current_offset
|
|
||||||
.endm
|
.endm
|
||||||
|
|
||||||
.macro .savereg reg, offset
|
.macro .savereg reg, offset
|
||||||
// checkme!!!
|
.seh_savereg \reg, \offset
|
||||||
.cfi_offset \reg, \offset
|
|
||||||
.endm
|
.endm
|
||||||
|
|
||||||
.macro .savexmm128 reg, offset
|
.macro .savexmm128 reg, offset
|
||||||
// checkme!!!
|
.seh_savexmm \reg, \offset
|
||||||
.cfi_offset \reg, \offset
|
|
||||||
.endm
|
.endm
|
||||||
|
|
||||||
.macro .setframe reg, offset
|
.macro .setframe reg, offset
|
||||||
.cfi_def_cfa reg, \offset
|
.seh_setframe \reg, \offset
|
||||||
.equ cfa_current_offset, \offset
|
|
||||||
.endm
|
.endm
|
||||||
|
|
||||||
.macro .endprolog
|
.macro .endprolog
|
||||||
|
.seh_endprologue
|
||||||
.endm
|
.endm
|
||||||
|
|
||||||
.macro absolute address
|
.macro absolute address
|
||||||
|
|
Loading…
Reference in a new issue