From 22bca4a14f5be84b63ce53745dfb0df7e4b822d5 Mon Sep 17 00:00:00 2001 From: Matt Coster Date: Wed, 20 Sep 2023 16:00:19 +0100 Subject: [PATCH] pvr: Force compile error on GNU void pointer arithmetic This GNU extension caused a bug where a void pointer was modified then interpreted as uint32_t* (instead of the other way round). Force a compile error to (hopefully) prevent this from happening again. Signed-off-by: Matt Coster Reviewed-by: Karmjit Mahil Part-of: --- src/imagination/common/meson.build | 2 +- src/imagination/meson.build | 4 ++++ src/imagination/rogue/meson.build | 2 +- src/imagination/rogue/tools/meson.build | 1 + src/imagination/vulkan/meson.build | 1 + src/imagination/vulkan/pds/meson.build | 1 + 6 files changed, 9 insertions(+), 2 deletions(-) diff --git a/src/imagination/common/meson.build b/src/imagination/common/meson.build index 96609549f8e..023dd9495dc 100644 --- a/src/imagination/common/meson.build +++ b/src/imagination/common/meson.build @@ -34,6 +34,6 @@ libpowervr_common = static_library( inc_src, inc_imagination, ], - c_args : [no_override_init_args], + c_args : [imagination_c_args, no_override_init_args], gnu_symbol_visibility : 'hidden', ) diff --git a/src/imagination/meson.build b/src/imagination/meson.build index 626a03a3d76..0bb2401ff4e 100644 --- a/src/imagination/meson.build +++ b/src/imagination/meson.build @@ -19,6 +19,10 @@ # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE # SOFTWARE. +imagination_c_args = cc.get_supported_arguments( + '-Werror=pointer-arith', +) + inc_imagination = include_directories([ '.', 'common', diff --git a/src/imagination/rogue/meson.build b/src/imagination/rogue/meson.build index d7b06bb6ce7..120de6b3233 100644 --- a/src/imagination/rogue/meson.build +++ b/src/imagination/rogue/meson.build @@ -63,7 +63,7 @@ libpowervr_rogue = shared_library( inc_include, inc_src, ], - c_args : [no_override_init_args], + c_args : [imagination_c_args, no_override_init_args], gnu_symbol_visibility : 'hidden', dependencies : [idep_mesautil, idep_nir, idep_vulkan_runtime, dep_csbgen], install : true, diff --git a/src/imagination/rogue/tools/meson.build b/src/imagination/rogue/tools/meson.build index 1eb55bb4629..6158615278c 100644 --- a/src/imagination/rogue/tools/meson.build +++ b/src/imagination/rogue/tools/meson.build @@ -32,6 +32,7 @@ rogue_compiler = executable( inc_src, inc_rogue, ], + c_args : [imagination_c_args], build_by_default : with_imagination_tools, install : false, ) diff --git a/src/imagination/vulkan/meson.build b/src/imagination/vulkan/meson.build index bfe8def182e..b3c88065d96 100644 --- a/src/imagination/vulkan/meson.build +++ b/src/imagination/vulkan/meson.build @@ -91,6 +91,7 @@ pvr_deps = [ ] pvr_flags = [ + imagination_c_args, no_override_init_args, ] diff --git a/src/imagination/vulkan/pds/meson.build b/src/imagination/vulkan/pds/meson.build index b115d2da541..6685dc1cda1 100644 --- a/src/imagination/vulkan/pds/meson.build +++ b/src/imagination/vulkan/pds/meson.build @@ -43,6 +43,7 @@ libpowervr_pds = static_library( inc_imagination, ], c_args : [ + imagination_c_args, no_override_init_args, ], gnu_symbol_visibility : 'hidden',