Revision 4ac68a1d678af47fa5630070d03953176b1ee31b authored by Derek Schuff on 17 December 2020, 22:53:49 UTC, committed by Derek Schuff on 17 December 2020, 22:53:49 UTC
1 parent 6e28e4f
runtime_assertions.js
/**
* @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
Computing file changes ...