radv: mark const structs as extern in header file to avoid lto damage
authorDave Airlie <airlied@redhat.com>
Fri, 13 Apr 2018 02:40:55 +0000 (12:40 +1000)
committerDave Airlie <airlied@redhat.com>
Sun, 22 Apr 2018 19:55:22 +0000 (05:55 +1000)
The copr repo from che was using LTO and he reported radv broke
recently with it. When testing with lto builds here I noticed
that we weren't seeing any instance extensions reported.

It appears LTO was treating the const without extern as an empty
struct, this is possibly a gcc bug, but we can work around it
just by marking these with extern.

Acked-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
src/amd/vulkan/radv_extensions.py

index dbe0ff4ac5a8ccab49e7f849cc06533dc9af0187..ec34551696e07268cfd7d4ee636c0433e9e33544 100644 (file)
@@ -195,9 +195,9 @@ struct radv_device_extension_table {
    };
 };
 
-const VkExtensionProperties radv_instance_extensions[RADV_INSTANCE_EXTENSION_COUNT];
-const VkExtensionProperties radv_device_extensions[RADV_DEVICE_EXTENSION_COUNT];
-const struct radv_instance_extension_table radv_supported_instance_extensions;
+extern const VkExtensionProperties radv_instance_extensions[RADV_INSTANCE_EXTENSION_COUNT];
+extern const VkExtensionProperties radv_device_extensions[RADV_DEVICE_EXTENSION_COUNT];
+extern const struct radv_instance_extension_table radv_supported_instance_extensions;
 
 
 struct radv_physical_device;