diff options
| author | Ahmad Fatoum <[email protected]> | 2018-02-24 23:46:27 +0100 |
|---|---|---|
| committer | Ahmad Fatoum <[email protected]> | 2018-02-24 23:59:56 +0100 |
| commit | 1430d0190684c6f78e1bce759eae240c94fba61c (patch) | |
| tree | bdf0709f9a75a25a805845997b0e356b6580bcfd /CMakeLists.txt | |
| parent | 6026ed61a5eaa43df4b2a91c8c47c8f2661d47de (diff) | |
| download | raylib-1430d0190684c6f78e1bce759eae240c94fba61c.tar.gz raylib-1430d0190684c6f78e1bce759eae240c94fba61c.zip | |
jar_xm: Workaround for unaligned pointer accesses
jar_xm.h does some shady pointer casts leading to unaligned accesses
and breaking strict aliasing. x86 has special circuitry for doing
unaligned accesses, but on other architectures, it may trap and require
kernel fix-up or crash outright. With this patch, one obstacle in
porting raylib to the GameBoy Advance has been removed. Go for it ;-)
To avoid having to rewrite that `mempool' code, insert padding before
structs and instruct the compiler (GCC, most importantly), to be gentle
when optimizing.
This fixes #490 (Unless we got ourselves 256-bit pointers, if so,
hello future!)
Diffstat (limited to 'CMakeLists.txt')
| -rwxr-xr-x | CMakeLists.txt | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt index 0e70eab4..1d98ffea 100755 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -29,6 +29,8 @@ endfunction() add_if_flag_works(-Werror=pointer-arith CMAKE_C_FLAGS) add_if_flag_works(-Werror=implicit-function-declaration CMAKE_C_FLAGS) +# src/external/jar_xm.h does shady stuff +add_if_flag_works(-fno-strict-aliasing CMAKE_C_FLAGS) if (ENABLE_ASAN) add_if_flag_works(-fno-omit-frame-pointer CMAKE_C_FLAGS CMAKE_LINKER_FLAGS) |
