[clang] ff599bb - [Hexagon] Enable init-array by default for picolibc (#208639)
via cfe-commits
cfe-commits at lists.llvm.org
Mon Jul 13 06:19:55 PDT 2026
Author: quic-k
Date: 2026-07-13T08:19:51-05:00
New Revision: ff599bba9d370bf58e4a34f9f29b4fb6234013f0
URL: https://github.com/llvm/llvm-project/commit/ff599bba9d370bf58e4a34f9f29b4fb6234013f0
DIFF: https://github.com/llvm/llvm-project/commit/ff599bba9d370bf58e4a34f9f29b4fb6234013f0.diff
LOG: [Hexagon] Enable init-array by default for picolibc (#208639)
Picolibc uses the modern .init_array/.fini_array mechanism rather than
legacy .init/.fini sections. Extend UseInitArrayDefault in
HexagonToolChain::addClangTargetOptions to also return true when
--cstdlib=picolibc is selected, preventing -fno-use-init-array from
being passed to cc1.
Signed-off-by: Kushal Pal <kushpal at qti.qualcomm.com>
Added:
Modified:
clang/lib/Driver/ToolChains/Hexagon.cpp
clang/test/Driver/hexagon-toolchain-picolibc.c
Removed:
################################################################################
diff --git a/clang/lib/Driver/ToolChains/Hexagon.cpp b/clang/lib/Driver/ToolChains/Hexagon.cpp
index 4dd519a2c239b..2b44b70d06be1 100644
--- a/clang/lib/Driver/ToolChains/Hexagon.cpp
+++ b/clang/lib/Driver/ToolChains/Hexagon.cpp
@@ -833,7 +833,9 @@ void HexagonToolChain::addClangTargetOptions(const ArgList &DriverArgs,
BoundArch BA,
Action::OffloadKind) const {
- bool UseInitArrayDefault = getTriple().isMusl();
+ bool UseInitArrayDefault =
+ getTriple().isMusl() ||
+ GetCStdlibType(DriverArgs) == ToolChain::CST_Picolibc;
if (!DriverArgs.hasFlag(options::OPT_fuse_init_array,
options::OPT_fno_use_init_array,
diff --git a/clang/test/Driver/hexagon-toolchain-picolibc.c b/clang/test/Driver/hexagon-toolchain-picolibc.c
index 85ead7da4cf26..2e46668689695 100644
--- a/clang/test/Driver/hexagon-toolchain-picolibc.c
+++ b/clang/test/Driver/hexagon-toolchain-picolibc.c
@@ -252,6 +252,15 @@
// RUN: -mcpu=hexagonv68 -G0 -### %s 2>&1 | FileCheck -check-prefix=CHECK-H2-LIBPATHS-G0 %s
// CHECK-H2-LIBPATHS-G0: "-L{{.*}}{{/|\\\\}}Inputs{{/|\\\\}}hexagon_tree{{/|\\\\}}Tools{{/|\\\\}}bin{{/|\\\\}}..{{/|\\\\}}target{{/|\\\\}}picolibc{{/|\\\\}}hexagon-unknown-h2-elf{{/|\\\\}}lib{{/|\\\\}}v68-G0"
+// -----------------------------------------------------------------------------
+// --cstdlib=picolibc enables init-array (not legacy .init/.fini)
+// -----------------------------------------------------------------------------
+// RUN: %clang --target=hexagon-none-elf --cstdlib=picolibc -### %s 2>&1 | FileCheck %s --check-prefix=CHECK-INIT-ARRAY
+// CHECK-INIT-ARRAY-NOT: "-fno-use-init-array"
+
+// RUN: %clang --target=hexagon-h2-elf --cstdlib=picolibc -### %s 2>&1 | FileCheck %s --check-prefix=CHECK-H2-INIT-ARRAY
+// CHECK-H2-INIT-ARRAY-NOT: "-fno-use-init-array"
+
// =============================================================================
// --sysroot tests: verify includes, library paths, and start files when an
// explicit sysroot is provided together with --cstdlib=picolibc.
More information about the cfe-commits
mailing list