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

Reply via email to