Possible issue on windows build (mingw)
Torbjorn Granlund
tg at gmplib.org
Thu Apr 5 21:53:18 CEST 2012
Vlad Gabriel <clampi at yahoo.com> writes:
I can confirm that replacing
sub $8, %rsp
add $8, %rsp
with
sub $40, %rsp
add $40, %rsp
[works.]
(I assume a "works" can be assumed here, judging from the continuation of
your message...)
However, I can not understand why. Dwelving into Win64 ABI is not the
most friendly stuff. One opinion, is that the caller always has to
reserve space on stack to callee to home-registers. That is required by
the calling convention. The space is used by the callee to store the 1st
four parameters onto stack. It does not matter that the callee has 0 or
less than 4 parameters, caller must allocate space on stack for callee
to "home" the param registers. However, the callee are your own asm
functions, that do not store the parameters on stack, so I am confused
as why it works like that.
This was indeed the reason for why I suggested the change.
I did read the M$ docs, except for the unwind stuff. I was baffled
about the poor quality of such absolutely critical documentation; they
do not pin down things but leave many things open to several reasonable
conflicting interpretations.
The ABI specifies how to write a frame function so it can be unwinded
(by the OS). This impose great restriction on prologue, epilogue and
stack manipulation. It also make heavy use of assembler directives that
magically generates the required info to unwind the function. Good thing
is that latest GNU binutils do support the directives, bad news is that
they are not documented in their help. However,
Alas, I think I will not undertake this task.
(I can right away admit that error handling and error recovery is
perhaps GMP's weakest point. Adding some zany unwind descriptors for
windoze is not the top item on the list of things to improve in this
area.)
Thanks for your bug report and your follow-through until things were
fixed. GMP support would be a breeze if everyone did it like that!
--
Torbjörn
More information about the gmp-bugs
mailing list