aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJon Turney <jon.turney@dronecode.org.uk>2017-04-03 21:54:25 +0100
committerJon Turney <jon.turney@dronecode.org.uk>2017-04-06 22:48:02 +0100
commit8a2699acd0c8b157e46cbdbb6e48a4f0442df9d8 (patch)
tree0e1048ba9d19e0cc01add5b98c6bb662c28d3d8d
parent320490cd00ee651fb41869bc974cd58d572ee784 (diff)
downloadmeson-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.c3
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