libffi: Use #define instead of .macro in src/x86/win64.S [PR102874]
The libffi 3.4.2 import badly broke Solaris/x86 bootstrap with the native assembler: Assembler: "/vol/gcc/src/hg/master/local/libffi/src/x86/win64.S", line 88 : Illegal mnemonic Near line: ".macro epilogue" "/vol/gcc/src/hg/master/local/libffi/src/x86/win64.S", line 88 : Syntax error Near line: ".macro epilogue" "/vol/gcc/src/hg/master/local/libffi/src/x86/win64.S", line 95 : Illegal mnemonic Near line: ".endm" "/vol/gcc/src/hg/master/local/libffi/src/x86/win64.S", line 95 : Syntax error Near line: ".endm" "/vol/gcc/src/hg/master/local/libffi/src/x86/win64.S", line 100 : Illegal mnemonic Near line: " epilogue" "/vol/gcc/src/hg/master/local/libffi/src/x86/win64.S", line 100 : Syntax error Near line: "epilogue" Solaris as doesn't support .macro/.endm. Fixed by using #define instead of the unportable .macro. Tested on i386-pc-solaris2.11 and x86_64-pc-linux-gnu. The bug has been reported upstream (https://github.com/libffi/libffi/issues/665); a corresponding pull request is also pending (https://github.com/libffi/libffi/pull/669). 2021-10-21 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE> libffi: PR libffi/102874 * src/x86/win64.S (epilogue): Use #define instead of .macro.
This commit is contained in:
parent
a68933da01
commit
a91f844ef4
@ -85,14 +85,13 @@ C(ffi_call_win64):
|
||||
|
||||
/* Below, we're space constrained most of the time. Thus we eschew the
|
||||
modern "mov, pop, ret" sequence (5 bytes) for "leave, ret" (2 bytes). */
|
||||
.macro epilogue
|
||||
leaveq
|
||||
cfi_remember_state
|
||||
cfi_def_cfa(%rsp, 8)
|
||||
cfi_restore(%rbp)
|
||||
ret
|
||||
#define epilogue \
|
||||
leaveq; \
|
||||
cfi_remember_state; \
|
||||
cfi_def_cfa(%rsp, 8); \
|
||||
cfi_restore(%rbp); \
|
||||
ret; \
|
||||
cfi_restore_state
|
||||
.endm
|
||||
|
||||
.align 8
|
||||
0:
|
||||
|
Loading…
Reference in New Issue
Block a user