diff options
author | Jon Turney <jon.turney@dronecode.org.uk> | 2017-04-03 21:54:25 +0100 |
---|---|---|
committer | Jon Turney <jon.turney@dronecode.org.uk> | 2017-04-06 22:48:02 +0100 |
commit | 8a2699acd0c8b157e46cbdbb6e48a4f0442df9d8 (patch) | |
tree | 0e1048ba9d19e0cc01add5b98c6bb662c28d3d8d | |
parent | 320490cd00ee651fb41869bc974cd58d572ee784 (diff) | |
download | meson-8a2699acd0c8b157e46cbdbb6e48a4f0442df9d8.zip meson-8a2699acd0c8b157e46cbdbb6e48a4f0442df9d8.tar.gz meson-8a2699acd0c8b157e46cbdbb6e48a4f0442df9d8.tar.bz2 |
Fix test cases/common/135 on Cygwin
I don't really know how to explain this briefly...
If you don't decorate this with dllimport, then a Cygwin runtime relocation
is used (a so called 'pseudo-reloc'). As the relocation offset is only 32
bits, this can fail on x86_64 if the DLL happens to be loaded more than 2GB
away from the reference.
If you decorate with dllimport, then access is indirected via a pointer,
imp_square_unsigned, which is fixed up by the loader.
-rw-r--r-- | test cases/common/135 generated assembly/main.c | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/test cases/common/135 generated assembly/main.c b/test cases/common/135 generated assembly/main.c index 97fe723..b669cba 100644 --- a/test cases/common/135 generated assembly/main.c +++ b/test cases/common/135 generated assembly/main.c @@ -1,5 +1,8 @@ #include <stdio.h> +#if defined(_WIN32) || defined(__CYGWIN__) + __declspec(dllimport) +#endif unsigned square_unsigned (unsigned a); int |