[llvm-branch-commits] [clang] release/19.x: [clang] hexagon: fix link order for libc/builtins (#117057) (PR #117968)
via llvm-branch-commits
llvm-branch-commits at lists.llvm.org
Wed Nov 27 21:25:47 PST 2024
https://github.com/llvmbot created https://github.com/llvm/llvm-project/pull/117968
Backport 9cc2502c048b1403ba8ba5cc5a655d867c329d12
Requested by: @androm3da
>From f09d5dd3a16f66d183d59f9698250a897f4247ab Mon Sep 17 00:00:00 2001
From: Brian Cain <bcain at quicinc.com>
Date: Mon, 25 Nov 2024 11:35:45 -0600
Subject: [PATCH] [clang] hexagon: fix link order for libc/builtins (#117057)
When linking programs with `eld`, we get a link error like below:
Error:
/inst/clang+llvm-19.1.0-cross-hexagon-unknown-linux-musl/x86_64-linux-gnu/bin/../target/hexagon-unknown-linux-musl//usr/lib/libc.a(scalbn.lo)(.text.scalbn+0x3c):
undefined reference to `__hexagon_muldf3'
libc has references to the clang_rt builtins library, so the order of
the libraries should be reversed.
(cherry picked from commit 9cc2502c048b1403ba8ba5cc5a655d867c329d12)
---
clang/lib/Driver/ToolChains/Hexagon.cpp | 2 +-
clang/test/Driver/hexagon-toolchain-linux.c | 10 +++++-----
2 files changed, 6 insertions(+), 6 deletions(-)
diff --git a/clang/lib/Driver/ToolChains/Hexagon.cpp b/clang/lib/Driver/ToolChains/Hexagon.cpp
index 29781399cbab44..383dc8387e75e7 100644
--- a/clang/lib/Driver/ToolChains/Hexagon.cpp
+++ b/clang/lib/Driver/ToolChains/Hexagon.cpp
@@ -378,9 +378,9 @@ constructHexagonLinkArgs(Compilation &C, const JobAction &JA,
if (NeedsXRayDeps)
linkXRayRuntimeDeps(HTC, Args, CmdArgs);
- CmdArgs.push_back("-lclang_rt.builtins-hexagon");
if (!Args.hasArg(options::OPT_nolibc))
CmdArgs.push_back("-lc");
+ CmdArgs.push_back("-lclang_rt.builtins-hexagon");
}
if (D.CCCIsCXX()) {
if (HTC.ShouldLinkCXXStdlib(Args))
diff --git a/clang/test/Driver/hexagon-toolchain-linux.c b/clang/test/Driver/hexagon-toolchain-linux.c
index 86cc9a30e932c6..6f7f3b20f9141f 100644
--- a/clang/test/Driver/hexagon-toolchain-linux.c
+++ b/clang/test/Driver/hexagon-toolchain-linux.c
@@ -11,7 +11,7 @@
// CHECK000-NOT: {{.*}}basic_linux_libcxx_tree{{/|\\\\}}usr{{/|\\\\}}lib{{/|\\\\}}crti.o
// CHECK000: "-dynamic-linker={{/|\\\\}}lib{{/|\\\\}}ld-musl-hexagon.so.1"
// CHECK000: "{{.*}}basic_linux_libcxx_tree{{/|\\\\}}usr{{/|\\\\}}lib{{/|\\\\}}crt1.o"
-// CHECK000: "-lclang_rt.builtins-hexagon" "-lc"
+// CHECK000: "-lc" "-lclang_rt.builtins-hexagon"
// -----------------------------------------------------------------------------
// Passing --musl --shared
// -----------------------------------------------------------------------------
@@ -21,7 +21,7 @@
// RUN: --sysroot=%S/Inputs/basic_linux_libcxx_tree -shared %s 2>&1 | FileCheck -check-prefix=CHECK001 %s
// CHECK001-NOT: -dynamic-linker={{/|\\\\}}lib{{/|\\\\}}ld-musl-hexagon.so.1
// CHECK001: "{{.*}}basic_linux_libcxx_tree{{/|\\\\}}usr{{/|\\\\}}lib{{/|\\\\}}crti.o"
-// CHECK001: "-lclang_rt.builtins-hexagon" "-lc"
+// CHECK001: "-lc" "-lclang_rt.builtins-hexagon"
// CHECK001-NOT: {{.*}}basic_linux_libcxx_tree{{/|\\\\}}usr{{/|\\\\}}lib{{/|\\\\}}crt1.o
// -----------------------------------------------------------------------------
// Passing --musl -nostdlib
@@ -33,8 +33,8 @@
// CHECK002: "-dynamic-linker={{/|\\\\}}lib{{/|\\\\}}ld-musl-hexagon.so.1"
// CHECK002-NOT: {{.*}}basic_linux_libcxx_tree{{/|\\\\}}usr{{/|\\\\}}lib{{/|\\\\}}crti.o
// CHECK002-NOT: {{.*}}basic_linux_libcxx_tree{{/|\\\\}}usr{{/|\\\\}}lib{{/|\\\\}}crt1.o
-// CHECK002-NOT: "-lclang_rt.builtins-hexagon"
// CHECK002-NOT: "-lc"
+// CHECK002-NOT: "-lclang_rt.builtins-hexagon"
// -----------------------------------------------------------------------------
// Passing --musl -nostartfiles
// -----------------------------------------------------------------------------
@@ -45,7 +45,7 @@
// CHECK003: "-dynamic-linker={{/|\\\\}}lib{{/|\\\\}}ld-musl-hexagon.so.1"
// CHECK003-NOT: {{.*}}basic_linux_libcxx_tree{{/|\\\\}}usr{{/|\\\\}}lib{{/|\\\\}}Scrt1.o
// CHECK003-NOT: {{.*}}basic_linux_libcxx_tree{{/|\\\\}}usr{{/|\\\\}}lib{{/|\\\\}}crt1.o
-// CHECK003: "-lclang_rt.builtins-hexagon" "-lc"
+// CHECK003: "-lc" "-lclang_rt.builtins-hexagon"
// -----------------------------------------------------------------------------
// Passing --musl -nodefaultlibs
// -----------------------------------------------------------------------------
@@ -55,8 +55,8 @@
// RUN: --sysroot=%S/Inputs/basic_linux_libcxx_tree -nodefaultlibs %s 2>&1 | FileCheck -check-prefix=CHECK004 %s
// CHECK004: "-dynamic-linker={{/|\\\\}}lib{{/|\\\\}}ld-musl-hexagon.so.1"
// CHECK004: "{{.*}}basic_linux_libcxx_tree{{/|\\\\}}usr{{/|\\\\}}lib{{/|\\\\}}crt1.o"
-// CHECK004-NOT: "-lclang_rt.builtins-hexagon"
// CHECK004-NOT: "-lc"
+// CHECK004-NOT: "-lclang_rt.builtins-hexagon"
// -----------------------------------------------------------------------------
// Passing --musl -nolibc
// -----------------------------------------------------------------------------
More information about the llvm-branch-commits
mailing list