diff --git a/clang/CMakeLists.txt b/clang/CMakeLists.txt --- a/clang/CMakeLists.txt +++ b/clang/CMakeLists.txt @@ -245,7 +245,7 @@ set(CLANG_SPAWN_CC1 OFF CACHE BOOL "Whether clang should use a new process for the CC1 invocation") -option(CLANG_DEFAULT_PIE_ON_LINUX "Default to -fPIE and -pie on Linux" OFF) +option(CLANG_DEFAULT_PIE_ON_LINUX "Default to -fPIE and -pie on linux-gnu" ON) # TODO: verify the values against LangStandards.def? set(CLANG_DEFAULT_STD_C "" CACHE STRING diff --git a/clang/docs/ReleaseNotes.rst b/clang/docs/ReleaseNotes.rst --- a/clang/docs/ReleaseNotes.rst +++ b/clang/docs/ReleaseNotes.rst @@ -183,6 +183,12 @@ Build System Changes -------------------- +* CMake ``-DCLANG_DEFAULT_PIE_ON_LINUX=ON`` is now the default. This is used by + linux-gnu systems to decide whether ``-fPIE -pie`` is the default (instead of + ``-fno-pic -no-pie``). This matches GCC installations on many Linux distros. + Note: linux-android and linux-musl always default to ``-fPIE -pie``, ignoring + this variable. ``-DCLANG_DEFAULT_PIE_ON_LINUX`` will be removed in the future. + AST Matchers ------------ diff --git a/clang/test/Driver/hip-fpie-option.hip b/clang/test/Driver/hip-fpie-option.hip --- a/clang/test/Driver/hip-fpie-option.hip +++ b/clang/test/Driver/hip-fpie-option.hip @@ -1,15 +1,15 @@ -// REQUIRES: clang-driver, amdgpu-registered-target +// REQUIRES: clang-driver, amdgpu-registered-target, default-pie-on-linux // -fPIC and -fPIE only affects host relocation model. // device compilation always uses PIC. // RUN: %clang -### -target x86_64-unknown-linux-gnu \ // RUN: --offload-arch=gfx906 %s -nogpulib -nogpuinc \ -// RUN: 2>&1 | FileCheck -check-prefixes=DEV,HOST-STATIC %s +// RUN: 2>&1 | FileCheck -check-prefixes=DEV,HOST-PIE %s // RUN: %clang -### -target x86_64-unknown-linux-gnu \ // RUN: -fgpu-rdc --offload-arch=gfx906 %s -nogpulib -nogpuinc \ -// RUN: 2>&1 | FileCheck -check-prefixes=DEV,HOST-STATIC %s +// RUN: 2>&1 | FileCheck -check-prefixes=DEV,HOST-PIE %s // RUN: %clang -### -target x86_64-unknown-linux-gnu \ // RUN: --offload-arch=gfx906 %s -nogpulib -nogpuinc \ @@ -32,7 +32,6 @@ // RUN: 2>&1 | FileCheck -check-prefixes=DEV,HOST-PIE %s // DEV-DAG: {{".*clang.*".* "-triple" "amdgcn-amd-amdhsa".* "-mrelocation-model" "pic" "-pic-level" "[1|2]".* "-mframe-pointer=all"}} -// HOST-STATIC-DAG: {{".*clang.*".* "-triple" "x86_64-unknown-linux-gnu".* "-mrelocation-model" "static"}} // HOST-PIC-DAG: {{".*clang.*".* "-triple" "x86_64-unknown-linux-gnu".* "-mrelocation-model" "pic" "-pic-level" "2"}} // HOST-PIC-NOT: "-pic-is-pie" // HOST-PIE-DAG: {{".*clang.*".* "-triple" "x86_64-unknown-linux-gnu".* "-mrelocation-model" "pic" "-pic-level" "2" "-pic-is-pie"}} diff --git a/llvm/utils/gn/secondary/clang/include/clang/Config/BUILD.gn b/llvm/utils/gn/secondary/clang/include/clang/Config/BUILD.gn --- a/llvm/utils/gn/secondary/clang/include/clang/Config/BUILD.gn +++ b/llvm/utils/gn/secondary/clang/include/clang/Config/BUILD.gn @@ -9,7 +9,7 @@ output = "$target_gen_dir/config.h" values = [ "BUG_REPORT_URL=https://github.com/llvm/llvm-project/issues/", - "CLANG_DEFAULT_PIE_ON_LINUX=", + "CLANG_DEFAULT_PIE_ON_LINUX=1", "CLANG_DEFAULT_LINKER=", "CLANG_DEFAULT_STD_C=", "CLANG_DEFAULT_STD_CXX=", diff --git a/utils/bazel/llvm-project-overlay/clang/include/clang/Config/config.h b/utils/bazel/llvm-project-overlay/clang/include/clang/Config/config.h --- a/utils/bazel/llvm-project-overlay/clang/include/clang/Config/config.h +++ b/utils/bazel/llvm-project-overlay/clang/include/clang/Config/config.h @@ -23,7 +23,7 @@ #define BUG_REPORT_URL "https://github.com/llvm/llvm-project/issues/" /* Default to -fPIE and -pie on Linux. */ -#define CLANG_DEFAULT_PIE_ON_LINUX 0 +#define CLANG_DEFAULT_PIE_ON_LINUX 1 /* Default linker to use. */ #define CLANG_DEFAULT_LINKER ""