On Sat, 9 Dec 2017, JonY via Mingw-w64-public wrote:
On 12/09/2017 09:46 PM, Martin Storsjö wrote:
The previous hookup of setjmp for ucrtbase in
7c161daf1e4090ff30d0172cf9d93e24c46f8035 was incorrect; based on
inexact def files claiming that the "setjmp" function actually would
exist on all architectures - it actually only exists on x86_64.
The actual ucrtbase.dll on i386, x86_64 and arm all contain a
different subset of functions - clarify the def file.
Make sure we link to a function that actually exists on all
architectures.
This reverts 7c161daf1e4090ff30d0172cf9d93e24c46f8035 and redirects
setjmp to _setjmp3 on i386, and __intrinsic_setjmp and
__intrinsic_setjmpex on all other architectures for 32 and 64 bit
respectively.
When building setjmp/longjmp code with MSVC, the linked modules end up
linking to those the __intrinsic_setjmp* functions on ARM/ARM64
platforms. On x86_64, MSVC actually links to __intrinsic_setjmp, but
linking to __intrinsic_setjmpex also seems to work fine.)
This fixes reported issues about running binaries linked against
ucrtbase.dll on i386.
Signed-off-by: Martin Storsjö <mar...@martin.st>
Patch OK.
Thanks, pushed!
// Martin
------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
Mingw-w64-public mailing list
Mingw-w64-public@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/mingw-w64-public