| /** | |
| * @license | |
| * Copyright 2019 The Emscripten Authors | |
| * SPDX-License-Identifier: MIT | |
| */ | |
| #if ASSERTIONS | |
| // Endianness check (note: assumes compiler arch was little-endian) | |
| (function() { | |
| var h16 = new Int16Array(1); | |
| var h8 = new Int8Array(h16.buffer); | |
| h16[0] = 0x6373; | |
| if (h8[0] !== 0x73 || h8[1] !== 0x63) throw 'Runtime error: expected the system to be little-endian!'; | |
| })(); | |
| function abortFnPtrError(ptr, sig) { | |
| #if ASSERTIONS >= 2 | |
| var possibleSig = ''; | |
| for(var x in debug_tables) { | |
| var tbl = debug_tables[x]; | |
| if (tbl[ptr]) { | |
| possibleSig += 'as sig "' + x + '" pointing to function ' + tbl[ptr] + ', '; | |
| } | |
| } | |
| abort("Invalid function pointer " + ptr + " called with signature '" + sig + "'. Perhaps this is an invalid value (e.g. caused by calling a virtual method on a NULL pointer)? Or calling a function with an incorrect type, which will fail? (it is worth building your source files with -Werror (warnings are errors), as warnings can indicate undefined behavior which can cause this). This pointer might make sense in another type signature: " + possibleSig); | |
| #else | |
| abort("Invalid function pointer " + ptr + " called with signature '" + sig + "'. Perhaps this is an invalid value (e.g. caused by calling a virtual method on a NULL pointer)? Or calling a function with an incorrect type, which will fail? (it is worth building your source files with -Werror (warnings are errors), as warnings can indicate undefined behavior which can cause this). Build with ASSERTIONS=2 for more info."); | |
| #endif | |
| } | |
| #endif // ASSERTIONS |