Quantcast
Channel: GameDev.net
Viewing all articles
Browse latest Browse all 17825

error compiling on gcc/x64 with address sanitizer

$
0
0
Is this the right place to report errors in AngelScript? I have found a compile error that affects both v2.31.2 and the latest svn. I am using gcc (Ubuntu 5.4.0-6ubuntu1~16.04.4) 5.4.0 20160609 running on Lubuntu 16.04.3 LTS. The error is in as_callfunc_x64_gcc.cpp. Without address sanitizer, the file compiles correctly, but with address sanitizer, I get the following error message: angelscript/source/as_callfunc_x64_gcc.cpp: In function ‘asQWORD X64_CallFunction(const asQWORD*, int, funcptr_t, asQWORD&, bool)’: angelscript/source/as_callfunc_x64_gcc.cpp:162:82: error: ‘asm’ operand has impossible constraints "%rdi", "%rsi", "%rax", "%rdx", "%rcx", "%r8", "%r9", "%r10", "%r11", "%r15"); ^ The root cause appears to be register exhaustion due to address sanitizer reserving some registers for its own use. Changing the "r" constraints on the input parameters to "g" constraints appears to fix the problem: Index: angelscript/source/as_callfunc_x64_gcc.cpp =================================================================== --- angelscript/source/as_callfunc_x64_gcc.cpp (revision 2407) +++ angelscript/source/as_callfunc_x64_gcc.cpp (working copy) @@ -157,7 +157,7 @@ " movq %%rdx, %4 \n" "endcall: \n" - : : "r" ((asQWORD)cnt), "r" (args), "r" (func), "m" (retQW1), "m" (retQW2), "m" (returnFloat) + : : "g" ((asQWORD)cnt), "g" (args), "g" (func), "m" (retQW1), "m" (retQW2), "m" (returnFloat) : "%xmm0", "%xmm1", "%xmm2", "%xmm3", "%xmm4", "%xmm5", "%xmm6", "%xmm7", "%rdi", "%rsi", "%rax", "%rdx", "%rcx", "%r8", "%r9", "%r10", "%r11", "%r15");

Viewing all articles
Browse latest Browse all 17825

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>