diff --git a/config.tests/direct_extern_access/CMakeLists.txt b/config.tests/direct_extern_access/CMakeLists.txt new file mode 100644 index 00000000000..50a35f1d02a --- /dev/null +++ b/config.tests/direct_extern_access/CMakeLists.txt @@ -0,0 +1,9 @@ +cmake_minimum_required(VERSION 3.16) +project(direct_extern_access LANGUAGES CXX) + +# this is the test found in https://sourceware.org/bugzilla/show_bug.cgi?id=29087 + +add_library(no_extern_access_lib SHARED lib.cpp) +add_executable(no_extern_access_main main.cpp) +target_compile_options(no_extern_access_lib PUBLIC "-mno-direct-extern-access") +target_link_libraries(no_extern_access_main no_extern_access_lib) diff --git a/config.tests/direct_extern_access/lib.cpp b/config.tests/direct_extern_access/lib.cpp new file mode 100644 index 00000000000..6cbc85571f1 --- /dev/null +++ b/config.tests/direct_extern_access/lib.cpp @@ -0,0 +1,10 @@ +// Copyright (C) 2022 Intel Corporation. +// SPDX-License-Identifier: MIT + +// This is the test found in https://sourceware.org/bugzilla/show_bug.cgi?id=29087 + +#define BUILD +#include "lib.h" + +S::~S() { } +void S::f() { } diff --git a/config.tests/direct_extern_access/lib.h b/config.tests/direct_extern_access/lib.h new file mode 100644 index 00000000000..d35b52f1356 --- /dev/null +++ b/config.tests/direct_extern_access/lib.h @@ -0,0 +1,16 @@ +// Copyright (C) 2022 Intel Corporation. +// SPDX-License-Identifier: MIT + +// This is the test found in https://sourceware.org/bugzilla/show_bug.cgi?id=29087 + +#ifdef BUILD +# define LIB_API __attribute__((visibility("protected"))) +#else +# define LIB_API __attribute__((visibility("default"))) +#endif + +struct LIB_API S +{ + virtual ~S(); + virtual void f(); +}; diff --git a/config.tests/direct_extern_access/main.cpp b/config.tests/direct_extern_access/main.cpp new file mode 100644 index 00000000000..9cf0323766a --- /dev/null +++ b/config.tests/direct_extern_access/main.cpp @@ -0,0 +1,12 @@ +// Copyright (C) 2022 Intel Corporation. +// SPDX-License-Identifier: MIT + +// This is the test found in https://sourceware.org/bugzilla/show_bug.cgi?id=29087 + +#include "lib.h" + +struct Local : S { }; +int main() +{ + Local l; +} diff --git a/configure.cmake b/configure.cmake index af1cb4116d1..381bcf7bd1f 100644 --- a/configure.cmake +++ b/configure.cmake @@ -188,9 +188,9 @@ qt_config_compiler_supports_flag_test(optimize_debug FLAG "-Og" ) -qt_config_compiler_supports_flag_test(no_extern_direct_access +qt_config_compile_test(no_extern_direct_access LABEL "-mno-direct-extern-access support" - FLAG "-mno-direct-extern-access" + PROJECT_PATH "${CMAKE_CURRENT_SOURCE_DIR}/config.tests/direct_extern_access" ) qt_config_linker_supports_flag_test(enable_new_dtags