https://github.com/aokblast updated 
https://github.com/llvm/llvm-project/pull/206139

>From 32ccb0b298889fe8ca5a9e3df761aea4a5a4a4cf Mon Sep 17 00:00:00 2001
From: ShengYi Hung <[email protected]>
Date: Sat, 27 Jun 2026 02:35:59 +0800
Subject: [PATCH 1/2] [clang] Rename CLANG_DEFAULT_PIE_ON_LINUX to
 CLANG_DEFAULT_PIE

Rename the platform-specific option CLANG_DEFAULT_PIE_ON_LINUX to the
more generic CLANG_DEFAULT_PIE to allow enabling PIE by default on
other platforms.

This change only renames the option. The default values at each use site
remain unchanged, so there is no functional behavior change.
---
 clang/CMakeLists.txt                             |  2 +-
 clang/include/clang/Config/config.h.cmake        |  2 +-
 clang/lib/Driver/ToolChains/Linux.cpp            |  4 ++--
 clang/test/CMakeLists.txt                        |  2 +-
 clang/test/Driver/hip-fpie-option.hip            |  2 +-
 clang/test/Driver/linux-default-pie.c            |  4 ++--
 clang/test/lit.cfg.py                            |  4 ++--
 clang/test/lit.site.cfg.py.in                    |  2 +-
 flang/test/Driver/linker-options.f90             | 16 ++++++++--------
 flang/test/Driver/pic-flags.f90                  |  2 +-
 .../clang/include/clang/Config/BUILD.gn          |  2 +-
 llvm/utils/gn/secondary/clang/test/BUILD.gn      |  2 +-
 .../clang/include/clang/Config/config.h          |  2 +-
 13 files changed, 23 insertions(+), 23 deletions(-)

diff --git a/clang/CMakeLists.txt b/clang/CMakeLists.txt
index cd7ba53b03061..f8b7f35612cf3 100644
--- a/clang/CMakeLists.txt
+++ b/clang/CMakeLists.txt
@@ -278,7 +278,7 @@ set(PPC_LINUX_DEFAULT_IEEELONGDOUBLE OFF CACHE BOOL
 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-gnu" ON)
+option(CLANG_DEFAULT_PIE "Default to -fPIE and -pie on linux-gnu" ON)
 
 set(CLANG_DEFAULT_LINKER "" CACHE STRING
   "Default linker to use (linker name or absolute path, empty for platform 
default)")
diff --git a/clang/include/clang/Config/config.h.cmake 
b/clang/include/clang/Config/config.h.cmake
index 11b4096726f67..ea0cd01c6c596 100644
--- a/clang/include/clang/Config/config.h.cmake
+++ b/clang/include/clang/Config/config.h.cmake
@@ -9,7 +9,7 @@
 #define BUG_REPORT_URL "${BUG_REPORT_URL}"
 
 /* Default to -fPIE and -pie on Linux. */
-#cmakedefine01 CLANG_DEFAULT_PIE_ON_LINUX
+#cmakedefine01 CLANG_DEFAULT_PIE
 
 /* Default linker to use. */
 #define CLANG_DEFAULT_LINKER "${CLANG_DEFAULT_LINKER}"
diff --git a/clang/lib/Driver/ToolChains/Linux.cpp 
b/clang/lib/Driver/ToolChains/Linux.cpp
index 512788d235fec..6c6b3647e2f81 100644
--- a/clang/lib/Driver/ToolChains/Linux.cpp
+++ b/clang/lib/Driver/ToolChains/Linux.cpp
@@ -934,8 +934,8 @@ void Linux::addSYCLIncludeArgs(const ArgList &DriverArgs,
 }
 
 bool Linux::isPIEDefault(const llvm::opt::ArgList &Args) const {
-  return CLANG_DEFAULT_PIE_ON_LINUX || getTriple().isAndroid() ||
-         getTriple().isMusl() || getSanitizerArgs(Args).requiresPIE();
+  return CLANG_DEFAULT_PIE || getTriple().isAndroid() || getTriple().isMusl() 
||
+         getSanitizerArgs(Args).requiresPIE();
 }
 
 bool Linux::IsAArch64OutlineAtomicsDefault(const ArgList &Args) const {
diff --git a/clang/test/CMakeLists.txt b/clang/test/CMakeLists.txt
index 8dd0084c53224..7807a3e4d00d5 100644
--- a/clang/test/CMakeLists.txt
+++ b/clang/test/CMakeLists.txt
@@ -5,7 +5,7 @@ llvm_canonicalize_cmake_booleans(
   BUILD_SHARED_LIBS
   CLANG_BUILD_EXAMPLES
   CLANG_BUILT_STANDALONE
-  CLANG_DEFAULT_PIE_ON_LINUX
+  CLANG_DEFAULT_PIE
   CLANG_ENABLE_STATIC_ANALYZER
   CLANG_PLUGIN_SUPPORT
   CLANG_SPAWN_CC1
diff --git a/clang/test/Driver/hip-fpie-option.hip 
b/clang/test/Driver/hip-fpie-option.hip
index 426564b67066e..de2cd7fc343ed 100644
--- a/clang/test/Driver/hip-fpie-option.hip
+++ b/clang/test/Driver/hip-fpie-option.hip
@@ -1,4 +1,4 @@
-// REQUIRES: default-pie-on-linux
+// REQUIRES: default-pie
 
 // -fPIC and -fPIE only affects host relocation model.
 // device compilation always uses PIC. 
diff --git a/clang/test/Driver/linux-default-pie.c 
b/clang/test/Driver/linux-default-pie.c
index 6772a6cd3fd0c..0b1aa0b2d5ab3 100644
--- a/clang/test/Driver/linux-default-pie.c
+++ b/clang/test/Driver/linux-default-pie.c
@@ -1,5 +1,5 @@
-// REQUIRES: default-pie-on-linux
-/// Test -DCLANG_DEFAULT_PIE_ON_LINUX=on.
+// REQUIRES: default-pie
+/// Test -DCLANG_DEFAULT_PIE=on.
 
 // RUN: %clang -### --target=aarch64-linux-gnu %s 2>&1 | FileCheck %s 
--check-prefix=PIE2
 
diff --git a/clang/test/lit.cfg.py b/clang/test/lit.cfg.py
index f7b3a77266cb8..749878690b245 100644
--- a/clang/test/lit.cfg.py
+++ b/clang/test/lit.cfg.py
@@ -326,8 +326,8 @@ def have_host_clang_repl_cuda():
 if config.has_plugins and config.llvm_plugin_ext:
     config.available_features.add("plugins")
 
-if config.clang_default_pie_on_linux:
-    config.available_features.add("default-pie-on-linux")
+if config.clang_default_pie:
+    config.available_features.add("default-pie")
 
 # Set available features we allow tests to conditionalize on.
 #
diff --git a/clang/test/lit.site.cfg.py.in b/clang/test/lit.site.cfg.py.in
index cb35118167d99..0def99827c111 100644
--- a/clang/test/lit.site.cfg.py.in
+++ b/clang/test/lit.site.cfg.py.in
@@ -21,7 +21,7 @@ config.llvm_use_sanitizer = "@LLVM_USE_SANITIZER@"
 config.have_zlib = @LLVM_ENABLE_ZLIB@
 config.have_zstd = @LLVM_ENABLE_ZSTD@
 config.clang_objc_rewriter = @CLANG_ENABLE_OBJC_REWRITER@
-config.clang_default_pie_on_linux = @CLANG_DEFAULT_PIE_ON_LINUX@
+config.clang_default_pie = @CLANG_DEFAULT_PIE@
 config.clang_default_cxx_stdlib = "@CLANG_DEFAULT_CXX_STDLIB@"
 config.clang_staticanalyzer = @CLANG_ENABLE_STATIC_ANALYZER@
 config.clang_staticanalyzer_z3 = @LLVM_WITH_Z3@
diff --git a/flang/test/Driver/linker-options.f90 
b/flang/test/Driver/linker-options.f90
index 07f967b4bac5d..5de7d8c23aacb 100644
--- a/flang/test/Driver/linker-options.f90
+++ b/flang/test/Driver/linker-options.f90
@@ -58,20 +58,20 @@
 ! RUN: %flang -target i386-pc-openbsd -pie -### %s 2>&1 \
 ! RUN:   | FileCheck %s --check-prefix=PIE
 !
-! On FreeBSD, -pie is not passed to the linker, but can be forced.
-! RUN: %flang -target amd64-pc-freebsd -### %s 2>&1 \
+! On FreeBSD, pie is passed to the linker, but can be forced cancelled.
+! RUN: %flang -no-pie -target amd64-pc-freebsd -### %s 2>&1 \
 ! RUN:   | FileCheck %s --check-prefix=NO-PIE
-! RUN: %flang -target i386-pc-freebsd -### %s 2>&1 \
+! RUN: %flang -no-pie -target i386-pc-freebsd -### %s 2>&1 \
 ! RUN:   | FileCheck %s --check-prefix=NO-PIE
-! RUN: %flang -target aarch64-unknown-freebsd -### %s 2>&1 \
+! RUN: %flang -no-pie -target aarch64-unknown-freebsd -### %s 2>&1 \
 ! RUN:   | FileCheck %s --check-prefix=NO-PIE
-! RUN: %flang -target arm-unknown-freebsd -### %s 2>&1 \
+! RUN: %flang -no-pie -target arm-unknown-freebsd -### %s 2>&1 \
 ! RUN:   | FileCheck %s --check-prefix=NO-PIE
-! RUN: %flang -target powerpc-unknown-freebsd -### %s 2>&1 \
+! RUN: %flang -no-pie -target powerpc-unknown-freebsd -### %s 2>&1 \
 ! RUN:   | FileCheck %s --check-prefix=NO-PIE
-! RUN: %flang -target sparc64-unknown-freebsd -### %s 2>&1 \
+! RUN: %flang -no-pie -target sparc64-unknown-freebsd -### %s 2>&1 \
 ! RUN:   | FileCheck %s --check-prefix=NO-PIE
-! RUN: %flang -target i386-pc-freebsd -pie -### %s 2>&1 \
+! RUN: %flang -no-pie -target i386-pc-freebsd -pie -### %s 2>&1 \
 ! RUN:   | FileCheck %s --check-prefix=PIE
 !
 ! On AIX, -pie is never passed to the linker.
diff --git a/flang/test/Driver/pic-flags.f90 b/flang/test/Driver/pic-flags.f90
index 5a06163c485cd..23315bde96c28 100644
--- a/flang/test/Driver/pic-flags.f90
+++ b/flang/test/Driver/pic-flags.f90
@@ -1,6 +1,6 @@
 ! RUN: %if aarch64-registered-target %{ %flang -v -S -emit-llvm -o - %s 
--target=aarch64-linux-gnu -fno-pie 2>&1 | FileCheck %s 
--check-prefixes=CHECK,CHECK-STATIC,CHECK-STATIC-IR %}
 
-! RUN: %if aarch64-registered-target && clang_default_pie_on_linux %{ %flang 
-v -S -emit-llvm -o - %s --target=aarch64-linux-gnu 2>&1 | FileCheck %s 
--check-prefixes=CHECK,CHECK-PIE-LEVEL2,CHECK-PIE-LEVEL2-IR %}
+! RUN: %if aarch64-registered-target && clang_default_pie %{ %flang -v -S 
-emit-llvm -o - %s --target=aarch64-linux-gnu 2>&1 | FileCheck %s 
--check-prefixes=CHECK,CHECK-PIE-LEVEL2,CHECK-PIE-LEVEL2-IR %}
 ! RUN: %if aarch64-registered-target %{ %flang -v -S -emit-llvm -o - %s 
--target=aarch64-linux-gnu -fpie 2>&1 | FileCheck %s 
--check-prefixes=CHECK,CHECK-PIE-LEVEL1,CHECK-PIE-LEVEL1-IR %}
 ! RUN: %if aarch64-registered-target %{ %flang -v -S -emit-llvm -o - %s 
--target=aarch64-linux-gnu -fPIE 2>&1 | FileCheck %s 
--check-prefixes=CHECK,CHECK-PIE-LEVEL2,CHECK-PIE-LEVEL2-IR %}
 
diff --git a/llvm/utils/gn/secondary/clang/include/clang/Config/BUILD.gn 
b/llvm/utils/gn/secondary/clang/include/clang/Config/BUILD.gn
index f8196d1b248e5..c569c80cc74ad 100644
--- a/llvm/utils/gn/secondary/clang/include/clang/Config/BUILD.gn
+++ b/llvm/utils/gn/secondary/clang/include/clang/Config/BUILD.gn
@@ -8,7 +8,7 @@ write_cmake_config("Config") {
   output = "$target_gen_dir/config.h"
   values = [
     "BUG_REPORT_URL=https://github.com/llvm/llvm-project/issues/";,
-    "CLANG_DEFAULT_PIE_ON_LINUX=1",
+    "CLANG_DEFAULT_PIE=1",
     "CLANG_DEFAULT_LINKER=",
     "CLANG_DEFAULT_CXX_STDLIB=",
     "CLANG_DEFAULT_RTLIB=",
diff --git a/llvm/utils/gn/secondary/clang/test/BUILD.gn 
b/llvm/utils/gn/secondary/clang/test/BUILD.gn
index 73f3bd020a1e0..16622fa62f4d7 100644
--- a/llvm/utils/gn/secondary/clang/test/BUILD.gn
+++ b/llvm/utils/gn/secondary/clang/test/BUILD.gn
@@ -52,7 +52,7 @@ write_lit_config("lit_site_cfg") {
     "CLANG_BUILD_EXAMPLES=0",
     "CLANG_BUILT_STANDALONE=0",
     "CLANG_DEFAULT_CXX_STDLIB=",  # Empty string means "default value" here.
-    "CLANG_DEFAULT_PIE_ON_LINUX=0",
+    "CLANG_DEFAULT_PIE=0",
     "CLANG_ENABLE_CIR=0",
     "CLANG_ENABLE_OBJC_REWRITER=0",
     "CLANG_PLUGIN_SUPPORT=0",  # FIXME: Analysis/plugins need global -fPIC
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
index 7f7308f338966..0fbe93028a076 100644
--- 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 1
+#define CLANG_DEFAULT_PIE 1
 
 /* Default linker to use. */
 #define CLANG_DEFAULT_LINKER ""

>From e7ecd4652263bd5e22a9ca2fbb1563e1d4d986b8 Mon Sep 17 00:00:00 2001
From: ShengYi Hung <[email protected]>
Date: Mon, 29 Jun 2026 13:54:54 -0500
Subject: [PATCH 2/2] [Clang] Switch to Default PIE on FreeBSD

We have started to compile the binary in our base as PIE by defualt. It
makes sense to compile the binary to PIE by default in toolchain as
Linux now. Also, extended testcases to support default PIE and no-pie
parameter in freebsd.c and hip-fpie-option.hip.
---
 clang/lib/Driver/ToolChains/FreeBSD.cpp |  7 ++-
 clang/test/Driver/freebsd-mips-as.c     |  4 +-
 clang/test/Driver/freebsd.c             | 56 +++++++++++++++++++++---
 clang/test/Driver/hip-fpie-option.hip   | 58 +++++++++++++++++++++----
 4 files changed, 103 insertions(+), 22 deletions(-)

diff --git a/clang/lib/Driver/ToolChains/FreeBSD.cpp 
b/clang/lib/Driver/ToolChains/FreeBSD.cpp
index 1218868ac3bda..4e4388ee5bbed 100644
--- a/clang/lib/Driver/ToolChains/FreeBSD.cpp
+++ b/clang/lib/Driver/ToolChains/FreeBSD.cpp
@@ -134,9 +134,8 @@ void freebsd::Linker::ConstructJob(Compilation &C, const 
JobAction &JA,
   const Driver &D = ToolChain.getDriver();
   const llvm::Triple &Triple = ToolChain.getTriple();
   const llvm::Triple::ArchType Arch = ToolChain.getArch();
-  const bool IsPIE =
-      !Args.hasArg(options::OPT_shared) &&
-      (Args.hasArg(options::OPT_pie) || ToolChain.isPIEDefault(Args));
+  const bool IsPIE = Args.hasFlag(options::OPT_pie, options::OPT_no_pie,
+                                  ToolChain.isPIEDefault(Args));
   ArgStringList CmdArgs;
 
   // Silence warning for "clang -g foo.o -o foo"
@@ -473,7 +472,7 @@ FreeBSD::getDefaultUnwindTableLevel(const ArgList &Args) 
const {
 }
 
 bool FreeBSD::isPIEDefault(const llvm::opt::ArgList &Args) const {
-  return getSanitizerArgs(Args).requiresPIE();
+  return CLANG_DEFAULT_PIE || getSanitizerArgs(Args).requiresPIE();
 }
 
 SanitizerMask
diff --git a/clang/test/Driver/freebsd-mips-as.c 
b/clang/test/Driver/freebsd-mips-as.c
index 428644ab78a9f..8585d791460c9 100644
--- a/clang/test/Driver/freebsd-mips-as.c
+++ b/clang/test/Driver/freebsd-mips-as.c
@@ -1,7 +1,7 @@
 // Check passing options to the assembler for MIPS targets.
 //
 // RUN: %clang --target=mips-unknown-freebsd -### \
-// RUN:   -no-integrated-as -c %s 2>&1 \
+// RUN:   -no-integrated-as -fno-pic -c %s 2>&1 \
 // RUN:   | FileCheck -check-prefix=MIPS32-EB-AS %s
 // MIPS32-EB-AS: as{{(.exe)?}}" "-march" "mips2" "-mabi" "32" "-EB"
 // MIPS32-EB-AS-NOT: "-KPIC"
@@ -86,7 +86,7 @@
 // MIPS-ALIAS-64R2: as{{(.exe)?}}" "-march" "mips64r2" "-mabi" "64" "-EB"
 //
 // RUN: %clang --target=mips-unknown-freebsd -### \
-// RUN:   -no-integrated-as -G0 -c %s 2>&1 \
+// RUN:   -no-integrated-as -fno-pic -G0 -c %s 2>&1 \
 // RUN:   | FileCheck -check-prefix=MIPS32-EB-AS-G0 %s
 // MIPS32-EB-AS-G0: as{{(.exe)?}}" "-march" "mips2" "-mabi" "32" "-EB" "-G0"
 // MIPS32-EB-AS-G0-NOT: "-KPIC"
diff --git a/clang/test/Driver/freebsd.c b/clang/test/Driver/freebsd.c
index bb0558b9ceb3e..7e6e41f5ccca2 100644
--- a/clang/test/Driver/freebsd.c
+++ b/clang/test/Driver/freebsd.c
@@ -3,8 +3,17 @@
 // RUN:   --sysroot=%S/Inputs/basic_freebsd64_tree -### 2>&1 \
 // RUN:   | FileCheck --check-prefix=CHECK-ARM64 %s
 // CHECK-ARM64: "-cc1" "-triple" "aarch64-pc-freebsd11"
-// CHECK-ARM64: ld{{.*}}" "--sysroot=[[SYSROOT:[^"]+]]"
-// CHECK-ARM64: "--eh-frame-hdr" "-dynamic-linker" "{{.*}}ld-elf{{.*}}" "-o" 
"a.out" "{{.*}}crt1.o" "{{.*}}crti.o" "{{.*}}crtbegin.o" 
"-L[[SYSROOT]]/usr/lib" "{{.*}}.o" "-lgcc" "--as-needed" "-lgcc_s" 
"--no-as-needed" "-lc" "-lgcc" "--as-needed" "-lgcc_s" "--no-as-needed" 
"{{.*}}crtend.o" "{{.*}}crtn.o"
+// CHECK-ARM64: ld{{.*}}" "--sysroot=[[SYSROOT:[^"]+]]" "-pie"
+// CHECK-ARM64: "--eh-frame-hdr" "-dynamic-linker" "{{.*}}ld-elf{{.*}}"  
"--enable-new-dtags" "-o" "a.out" "{{.*}}crt1.o" "{{.*}}crti.o" 
"{{.*}}crtbeginS.o" "-L[[SYSROOT]]/usr/lib" "{{.*}}.o" "-lgcc" "--as-needed" 
"-lgcc_s" "--no-as-needed" "-lc" "-lgcc" "--as-needed" "-lgcc_s" 
"--no-as-needed" "{{.*}}crtendS.o" "{{.*}}crtn.o"
+
+// RUN: %clang -no-pie \
+// RUN:   --target=aarch64-pc-freebsd11 %s                              \
+// RUN:   --sysroot=%S/Inputs/basic_freebsd64_tree -### 2>&1 \
+// RUN:   | FileCheck --check-prefix=CHECK-ARM64-NOPIE %s
+// CHECK-ARM64-NOPIE: "-cc1" "-triple" "aarch64-pc-freebsd11"
+// CHECK-ARM64-NOPIE: ld{{.*}}" "--sysroot=[[SYSROOT:[^"]+]]"
+// CHECK-ARM64-NOPIE: "--eh-frame-hdr" "-dynamic-linker" "{{.*}}ld-elf{{.*}}" 
"-o" "a.out" "{{.*}}crt1.o" "{{.*}}crti.o" "{{.*}}crtbegin.o" 
"-L[[SYSROOT]]/usr/lib" "{{.*}}.o" "-lgcc" "--as-needed" "-lgcc_s" 
"--no-as-needed" "-lc" "-lgcc" "--as-needed" "-lgcc_s" "--no-as-needed" 
"{{.*}}crtend.o" "{{.*}}crtn.o"
+
 //
 // RUN: %clang \
 // RUN:   --target=powerpc-pc-freebsd %s    \
@@ -12,7 +21,17 @@
 // RUN:   | FileCheck --check-prefix=CHECK-PPC %s
 // CHECK-PPC: "-cc1" "-triple" "powerpc-pc-freebsd"
 // CHECK-PPC: ld{{.*}}" "--sysroot=[[SYSROOT:[^"]+]]"
-// CHECK-PPC: "--eh-frame-hdr" "-dynamic-linker" "{{.*}}ld-elf{{.*}}" "-o" 
"a.out" "{{.*}}crt1.o" "{{.*}}crti.o" "{{.*}}crtbegin.o" 
"-L[[SYSROOT]]/usr/lib" "{{.*}}.o" "-lgcc" "--as-needed" "-lgcc_s" 
"--no-as-needed" "-lc" "-lgcc" "--as-needed" "-lgcc_s" "--no-as-needed" 
"{{.*}}crtend.o" "{{.*}}crtn.o"
+// CHECK-PPC: "--eh-frame-hdr" "-dynamic-linker" "{{.*}}ld-elf{{.*}}" 
"--enable-new-dtags" "-m" "elf32ppc_fbsd" "-o" "a.out" "{{.*}}crt1.o" 
"{{.*}}crti.o" "{{.*}}crtbeginS.o" "-L[[SYSROOT]]/usr/lib" "{{.*}}.o" "-lgcc" 
"--as-needed" "-lgcc_s" "--no-as-needed" "-lc" "-lgcc" "--as-needed" "-lgcc_s" 
"--no-as-needed" "{{.*}}crtendS.o" "{{.*}}crtn.o"
+
+//
+// RUN: %clang -no-pie \
+// RUN:   --target=powerpc-pc-freebsd %s    \
+// RUN:   --sysroot=%S/Inputs/basic_freebsd_tree -### 2>&1 \
+// RUN:   | FileCheck --check-prefix=CHECK-PPC-NOPIE %s
+// CHECK-PPC-NOPIE: "-cc1" "-triple" "powerpc-pc-freebsd"
+// CHECK-PPC-NOPIE: ld{{.*}}" "--sysroot=[[SYSROOT:[^"]+]]"
+// CHECK-PPC-NOPIE: "--eh-frame-hdr" "-dynamic-linker" "{{.*}}ld-elf{{.*}}" 
"-o" "a.out" "{{.*}}crt1.o" "{{.*}}crti.o" "{{.*}}crtbegin.o" 
"-L[[SYSROOT]]/usr/lib" "{{.*}}.o" "-lgcc" "--as-needed" "-lgcc_s" 
"--no-as-needed" "-lc" "-lgcc" "--as-needed" "-lgcc_s" "--no-as-needed" 
"{{.*}}crtend.o" "{{.*}}crtn.o"
+
 //
 // RUN: %clang \
 // RUN:   --target=powerpc64-pc-freebsd %s                              \
@@ -20,7 +39,15 @@
 // RUN:   | FileCheck --check-prefix=CHECK-PPC64 %s
 // CHECK-PPC64: "-cc1" "-triple" "powerpc64-pc-freebsd"
 // CHECK-PPC64: ld{{.*}}" "--sysroot=[[SYSROOT:[^"]+]]"
-// CHECK-PPC64: "--eh-frame-hdr" "-dynamic-linker" "{{.*}}ld-elf{{.*}}" "-o" 
"a.out" "{{.*}}crt1.o" "{{.*}}crti.o" "{{.*}}crtbegin.o" 
"-L[[SYSROOT]]/usr/lib" "{{.*}}.o" "-lgcc" "--as-needed" "-lgcc_s" 
"--no-as-needed" "-lc" "-lgcc" "--as-needed" "-lgcc_s" "--no-as-needed" 
"{{.*}}crtend.o" "{{.*}}crtn.o"
+// CHECK-PPC64: "--eh-frame-hdr" "-dynamic-linker" "{{.*}}ld-elf{{.*}}" 
"--enable-new-dtags" "-o" "a.out" "{{.*}}crt1.o" "{{.*}}crti.o" 
"{{.*}}crtbeginS.o" "-L[[SYSROOT]]/usr/lib" "{{.*}}.o" "-lgcc" "--as-needed" 
"-lgcc_s" "--no-as-needed" "-lc" "-lgcc" "--as-needed" "-lgcc_s" 
"--no-as-needed" "{{.*}}crtendS.o" "{{.*}}crtn.o"
+
+// RUN: %clang -no-pie \
+// RUN:   --target=powerpc64-pc-freebsd %s                              \
+// RUN:   --sysroot=%S/Inputs/basic_freebsd64_tree -### 2>&1 \
+// RUN:   | FileCheck --check-prefix=CHECK-PPC64-NOPIE %s
+// CHECK-PPC64-NOPIE: "-cc1" "-triple" "powerpc64-pc-freebsd"
+// CHECK-PPC64-NOPIE: ld{{.*}}" "--sysroot=[[SYSROOT:[^"]+]]"
+// CHECK-PPC64-NOPIE: "--eh-frame-hdr" "-dynamic-linker" "{{.*}}ld-elf{{.*}}" 
"-o" "a.out" "{{.*}}crt1.o" "{{.*}}crti.o" "{{.*}}crtbegin.o" 
"-L[[SYSROOT]]/usr/lib" "{{.*}}.o" "-lgcc" "--as-needed" "-lgcc_s" 
"--no-as-needed" "-lc" "-lgcc" "--as-needed" "-lgcc_s" "--no-as-needed" 
"{{.*}}crtend.o" "{{.*}}crtn.o"
 
 // RUN: %clang \
 // RUN:   --target=powerpc64le-unknown-freebsd13 %s \
@@ -28,7 +55,16 @@
 // RUN:   | FileCheck --check-prefix=CHECK-PPC64LE %s
 // CHECK-PPC64LE: "-cc1" "-triple" "powerpc64le-unknown-freebsd13"
 // CHECK-PPC64LE: ld{{.*}}" "--sysroot=[[SYSROOT:[^"]+]]"
-// CHECK-PPC64LE: "--eh-frame-hdr" "-dynamic-linker" "{{.*}}ld-elf{{.*}}" "-o" 
"a.out" "{{.*}}crt1.o" "{{.*}}crti.o" "{{.*}}crtbegin.o" 
"-L[[SYSROOT]]/usr/lib" "{{.*}}.o" "-lgcc" "--as-needed" "-lgcc_s" 
"--no-as-needed" "-lc" "-lgcc" "--as-needed" "-lgcc_s" "--no-as-needed" 
"{{.*}}crtend.o" "{{.*}}crtn.o"
+// CHECK-PPC64LE: "--eh-frame-hdr" "-dynamic-linker" "{{.*}}ld-elf{{.*}}" 
"--enable-new-dtags" "-o" "a.out" "{{.*}}crt1.o" "{{.*}}crti.o" 
"{{.*}}crtbeginS.o" "-L[[SYSROOT]]/usr/lib" "{{.*}}.o" "-lgcc" "--as-needed" 
"-lgcc_s" "--no-as-needed" "-lc" "-lgcc" "--as-needed" "-lgcc_s" 
"--no-as-needed" "{{.*}}crtendS.o" "{{.*}}crtn.o"
+
+// RUN: %clang -no-pie \
+// RUN:   --target=powerpc64le-unknown-freebsd13 %s \
+// RUN:   --sysroot=%S/Inputs/basic_freebsd64_tree -### 2>&1 \
+// RUN:   | FileCheck --check-prefix=CHECK-PPC64LE-NOPIE %s
+// CHECK-PPC64LE-NOPIE: "-cc1" "-triple" "powerpc64le-unknown-freebsd13"
+// CHECK-PPC64LE-NOPIE: ld{{.*}}" "--sysroot=[[SYSROOT:[^"]+]]"
+// CHECK-PPC64LE-NOPIE: "--eh-frame-hdr" "-dynamic-linker" 
"{{.*}}ld-elf{{.*}}" "-o" "a.out" "{{.*}}crt1.o" "{{.*}}crti.o" 
"{{.*}}crtbegin.o" "-L[[SYSROOT]]/usr/lib" "{{.*}}.o" "-lgcc" "--as-needed" 
"-lgcc_s" "--no-as-needed" "-lc" "-lgcc" "--as-needed" "-lgcc_s" 
"--no-as-needed" "{{.*}}crtend.o" "{{.*}}crtn.o"
+
 
 //
 // Check that -m32 properly adjusts the toolchain flags.
@@ -151,8 +187,14 @@
 // RUN: %clang --target=x86_64-pc-freebsd %s \
 // RUN:   --sysroot=%S/Inputs/multiarch_freebsd64_tree -### 2>&1 \
 // RUN:   | FileCheck --check-prefix=CHECK-NORMAL %s
-// CHECK-NORMAL: crt1.o
-// CHECK-NORMAL: crtbegin.o
+// CHECK-NORMAL: Scrt1.o
+// CHECK-NORMAL: crtbeginS.o
+
+// RUN: %clang --target=x86_64-pc-freebsd -no-pie %s \
+// RUN:   --sysroot=%S/Inputs/multiarch_freebsd64_tree -### 2>&1 \
+// RUN:   | FileCheck --check-prefix=CHECK-NORMAL-NOPIE %s
+// CHECK-NORMAL-NOPIE: crt1.o
+// CHECK-NORMAL-NOPIE: crtbegin.o
 
 // RUN: %clang -### %s --target=arm-unknown-freebsd10.0 -no-integrated-as 2>&1 
\
 // RUN:   | FileCheck --check-prefix=CHECK-ARM %s
diff --git a/clang/test/Driver/hip-fpie-option.hip 
b/clang/test/Driver/hip-fpie-option.hip
index de2cd7fc343ed..4a6bbe65140a7 100644
--- a/clang/test/Driver/hip-fpie-option.hip
+++ b/clang/test/Driver/hip-fpie-option.hip
@@ -1,38 +1,78 @@
 // REQUIRES: default-pie
 
 // -fPIC and -fPIE only affects host relocation model.
-// device compilation always uses PIC. 
+// 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-PIE %s
+// RUN:   2>&1 | FileCheck -check-prefixes=DEV,HOST-PIE \
+// RUN:   -DHOST_TRIPLE=x86_64-unknown-linux-gnu %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-PIE %s
+// RUN:   2>&1 | FileCheck -check-prefixes=DEV,HOST-PIE \
+// RUN:   -DHOST_TRIPLE=x86_64-unknown-linux-gnu %s
 
 // RUN: %clang -### --target=x86_64-unknown-linux-gnu \
 // RUN:   --offload-arch=gfx906 %s -nogpulib -nogpuinc \
 // RUN:   -fPIC \
-// RUN:   2>&1 | FileCheck -check-prefixes=DEV,HOST-PIC %s
+// RUN:   2>&1 | FileCheck -check-prefixes=DEV,HOST-PIC \
+// RUN:   -DHOST_TRIPLE=x86_64-unknown-linux-gnu %s
 
 // RUN: %clang -### --target=x86_64-unknown-linux-gnu \
 // RUN:   -fgpu-rdc --offload-arch=gfx906 %s -nogpulib -nogpuinc \
 // RUN:   -fPIC \
-// RUN:   2>&1 | FileCheck -check-prefixes=DEV,HOST-PIC %s
+// RUN:   2>&1 | FileCheck -check-prefixes=DEV,HOST-PIC \
+// RUN:   -DHOST_TRIPLE=x86_64-unknown-linux-gnu %s
 
 // RUN: %clang -### --target=x86_64-unknown-linux-gnu \
 // RUN:   --offload-arch=gfx906 %s -nogpulib -nogpuinc \
 // RUN:   -fPIE \
-// RUN:   2>&1 | FileCheck -check-prefixes=DEV,HOST-PIE %s
+// RUN:   2>&1 | FileCheck -check-prefixes=DEV,HOST-PIE \
+// RUN:   -DHOST_TRIPLE=x86_64-unknown-linux-gnu %s
 
 // RUN: %clang -### --target=x86_64-unknown-linux-gnu \
 // RUN:   -fgpu-rdc --offload-arch=gfx906 %s -nogpulib -nogpuinc \
 // RUN:   -fPIE \
-// RUN:   2>&1 | FileCheck -check-prefixes=DEV,HOST-PIE %s
+// RUN:   2>&1 | FileCheck -check-prefixes=DEV,HOST-PIE \
+// RUN:   -DHOST_TRIPLE=x86_64-unknown-linux-gnu %s
+
+// RUN: %clang -### --target=x86_64-unknown-unknown-freebsd \
+// RUN:   --offload-arch=gfx906 %s -nogpulib -nogpuinc \
+// RUN:   2>&1 | FileCheck -check-prefixes=DEV,HOST-PIE \
+// RUN:   -DHOST_TRIPLE=x86_64-unknown-freebsd-unknown %s
+
+// RUN: %clang -### --target=x86_64-unknown-unknown-freebsd \
+// RUN:   -fgpu-rdc --offload-arch=gfx906 %s -nogpulib -nogpuinc \
+// RUN:   2>&1 | FileCheck -check-prefixes=DEV,HOST-PIE \
+// RUN:   -DHOST_TRIPLE=x86_64-unknown-freebsd-unknown %s
+
+// RUN: %clang -### --target=x86_64-unknown-unknown-freebsd \
+// RUN:   --offload-arch=gfx906 %s -nogpulib -nogpuinc \
+// RUN:   -fPIC \
+// RUN:   2>&1 | FileCheck -check-prefixes=DEV,HOST-PIC \
+// RUN:   -DHOST_TRIPLE=x86_64-unknown-freebsd-unknown %s
+
+// RUN: %clang -### --target=x86_64-unknown-unknown-freebsd \
+// RUN:   -fgpu-rdc --offload-arch=gfx906 %s -nogpulib -nogpuinc \
+// RUN:   -fPIC \
+// RUN:   2>&1 | FileCheck -check-prefixes=DEV,HOST-PIC \
+// RUN:   -DHOST_TRIPLE=x86_64-unknown-freebsd-unknown %s
+
+// RUN: %clang -### --target=x86_64-unknown-unknown-freebsd \
+// RUN:   --offload-arch=gfx906 %s -nogpulib -nogpuinc \
+// RUN:   -fPIE \
+// RUN:   2>&1 | FileCheck -check-prefixes=DEV,HOST-PIE \
+// RUN:   -DHOST_TRIPLE=x86_64-unknown-freebsd-unknown %s
+
+// RUN: %clang -### --target=x86_64-unknown-unknown-freebsd \
+// RUN:   -fgpu-rdc --offload-arch=gfx906 %s -nogpulib -nogpuinc \
+// RUN:   -fPIE \
+// RUN:   2>&1 | FileCheck -check-prefixes=DEV,HOST-PIE \
+// RUN:   -DHOST_TRIPLE=x86_64-unknown-freebsd-unknown %s
 
 // DEV-DAG: {{".*clang.*".* "-triple" "amdgcn-amd-amdhsa".* 
"-mrelocation-model" "pic" "-pic-level" "[1|2]".* "-mframe-pointer=all"}}
-// HOST-PIC-DAG: {{".*clang.*".* "-triple" "x86_64-unknown-linux-gnu".* 
"-mrelocation-model" "pic" "-pic-level" "2"}}
+// HOST-PIC-DAG: {{".*clang.*".* "-triple" "}}[[HOST_TRIPLE]]{{".* 
"-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"}}
+// HOST-PIE-DAG: {{".*clang.*".* "-triple" "}}[[HOST_TRIPLE]]{{".* 
"-mrelocation-model" "pic" "-pic-level" "2" "-pic-is-pie"}}
 // DEV-NOT: {{".*clang.*".* "-triple" "amdgcn-amd-amdhsa".* "-pic-is-pie"}}

_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to