[clang] [clang][hexagon] Add support for -nolibc (PR #67515)
https://github.com/androm3da closed https://github.com/llvm/llvm-project/pull/67515 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [clang][hexagon] Add support for -nolibc (PR #67515)
https://github.com/androm3da resolved https://github.com/llvm/llvm-project/pull/67515 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [clang][hexagon] Add support for -nolibc (PR #67515)
https://github.com/androm3da resolved https://github.com/llvm/llvm-project/pull/67515 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [clang][hexagon] Add support for -nolibc (PR #67515)
https://github.com/androm3da resolved https://github.com/llvm/llvm-project/pull/67515 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [clang][hexagon] Add support for -nolibc (PR #67515)
https://github.com/androm3da updated https://github.com/llvm/llvm-project/pull/67515 >From 4048b1e2557b11650cf2fa568c8814716e45daf5 Mon Sep 17 00:00:00 2001 From: Brian Cain Date: Tue, 26 Sep 2023 19:57:47 -0700 Subject: [PATCH] [clang][hexagon] Add support for -nolibc --- clang/lib/Driver/ToolChains/Hexagon.cpp | 6 -- clang/test/Driver/hexagon-toolchain-elf.c | 23 - clang/test/Driver/hexagon-toolchain-linux.c | 10 + 3 files changed, 36 insertions(+), 3 deletions(-) diff --git a/clang/lib/Driver/ToolChains/Hexagon.cpp b/clang/lib/Driver/ToolChains/Hexagon.cpp index e7dca1053dc8d8a..d81e022708932f7 100644 --- a/clang/lib/Driver/ToolChains/Hexagon.cpp +++ b/clang/lib/Driver/ToolChains/Hexagon.cpp @@ -377,7 +377,8 @@ constructHexagonLinkArgs(Compilation , const JobAction , linkXRayRuntimeDeps(HTC, Args, CmdArgs); CmdArgs.push_back("-lclang_rt.builtins-hexagon"); - CmdArgs.push_back("-lc"); + if (!Args.hasArg(options::OPT_nolibc)) +CmdArgs.push_back("-lc"); } if (D.CCCIsCXX()) { if (HTC.ShouldLinkCXXStdlib(Args)) @@ -470,7 +471,8 @@ constructHexagonLinkArgs(Compilation , const JobAction , if (!IsShared) { for (StringRef Lib : OsLibs) CmdArgs.push_back(Args.MakeArgString("-l" + Lib)); - CmdArgs.push_back("-lc"); + if (!Args.hasArg(options::OPT_nolibc)) +CmdArgs.push_back("-lc"); } CmdArgs.push_back("-lgcc"); diff --git a/clang/test/Driver/hexagon-toolchain-elf.c b/clang/test/Driver/hexagon-toolchain-elf.c index b840de28fd92089..da859a144cfc888 100644 --- a/clang/test/Driver/hexagon-toolchain-elf.c +++ b/clang/test/Driver/hexagon-toolchain-elf.c @@ -278,7 +278,7 @@ // CHECK335-SAME: "{{.*}}/Inputs/hexagon_tree/Tools/bin/../target/hexagon/lib/v60/G0/fini.o" // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -// -nostdlib, -nostartfiles, -nodefaultlibs +// -nostdlib, -nostartfiles, -nodefaultlibs, -nolibc // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - // RUN: %clangxx -### --target=hexagon-unknown-elf \ // RUN: -ccc-install-dir %S/Inputs/hexagon_tree/Tools/bin \ @@ -337,6 +337,27 @@ // CHECK338-NOT: "--end-group" // CHECK338: "{{.*}}/Inputs/hexagon_tree/Tools/bin/../target/hexagon/lib/v60/fini.o" +// RUN: %clangxx -### --target=hexagon-unknown-elf \ +// RUN: -ccc-install-dir %S/Inputs/hexagon_tree/Tools/bin -mcpu=hexagonv60 \ +// RUN: -fuse-ld=lld -nolibc %s 2>&1 | FileCheck -check-prefix=CHECK-NOLIBC %s +// CHECK-NOLIBC: "-cc1" +// CHECK-NOLIBC: ld.lld +// CHECK-NOLIBC-SAME: "{{.*}}/Inputs/hexagon_tree/Tools/bin/../target/hexagon/lib/v60/crt0_standalone.o" +// CHECK-NOLIBC-SAME: "{{.*}}/Inputs/hexagon_tree/Tools/bin/../target/hexagon/lib/v60/crt0.o" +// CHECK-NOLIBC-SAME: "{{.*}}/Inputs/hexagon_tree/Tools/bin/../target/hexagon/lib/v60/init.o" +// CHECK-NOLIBC-SAME: "-L{{.*}}/Inputs/hexagon_tree/Tools/bin/../target/hexagon/lib/v60" +// CHECK-NOLIBC-SAME: "-L{{.*}}/Inputs/hexagon_tree/Tools/bin/../target/hexagon/lib" +// CHECK-NOLIBC-SAME: "{{[^"]+}}.o" +// CHECK-NOLIBC-SAME: "-lstdc++" +// CHECK-NOLIBC-SAME: "-lm" +// CHECK-NOLIBC-SAME: "--start-group" +// CHECK-NOLIBC-SAME: "-lstandalone" +// CHECK-NOLIBC-NOT: "-lc" +// CHECK-NOLIBC-SAME: "-lgcc" +// CHECK-NOLIBC-SAME: "--end-group" +// CHECK-NOLIBC-SAME: "{{.*}}/Inputs/hexagon_tree/Tools/bin/../target/hexagon/lib/v60/fini.o" + + // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - // -moslib // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/clang/test/Driver/hexagon-toolchain-linux.c b/clang/test/Driver/hexagon-toolchain-linux.c index 51aa6ec90dc017b..fe32638417ea4ad 100644 --- a/clang/test/Driver/hexagon-toolchain-linux.c +++ b/clang/test/Driver/hexagon-toolchain-linux.c @@ -58,6 +58,16 @@ // CHECK004-NOT: "-lclang_rt.builtins-hexagon" // CHECK004-NOT: "-lc" // - +// Passing --musl -nolibc +// - +// RUN: %clang -### --target=hexagon-unknown-linux-musl \ +// RUN: -ccc-install-dir %S/Inputs/hexagon_tree/Tools/bin \ +// RUN: -mcpu=hexagonv60 --sysroot=%S/Inputs/basic_linux_libcxx_tree \ +// RUN: -nolibc %s 2>&1 | FileCheck -check-prefix=CHECK-NOLIBC %s +// CHECK-NOLIBC: "-dynamic-linker={{/|}}lib{{/|}}ld-musl-hexagon.so.1" +// CHECK-NOLIBC-SAME: "{{.*}}basic_linux_libcxx_tree{{/|}}usr{{/|}}lib{{/|}}crt1.o" +// CHECK-NOLIBC-NOT: "-lc" +// - // Not Passing -fno-use-init-array when musl is selected // - // RUN: %clang -### --target=hexagon-unknown-linux-musl \
[clang] [clang][hexagon] Add support for -nolibc (PR #67515)
https://github.com/MaskRay approved this pull request. https://github.com/llvm/llvm-project/pull/67515 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [clang][hexagon] Add support for -nolibc (PR #67515)
https://github.com/MaskRay edited https://github.com/llvm/llvm-project/pull/67515 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [clang][hexagon] Add support for -nolibc (PR #67515)
@@ -401,6 +401,30 @@ // CHECK338-NOT: "--end-group" // CHECK338: "{{.*}}/Inputs/hexagon_tree/Tools/bin/../target/hexagon/lib/v60/fini.o" +// RUN: %clangxx -### -target hexagon-unknown-elf \ +// RUN: -ccc-install-dir %S/Inputs/hexagon_tree/Tools/bin \ +// RUN: -mcpu=hexagonv60 \ +// RUN: -nolibc \ +// RUN: %s 2>&1 \ +// RUN: | FileCheck -check-prefix=CHECK-NOLIBC %s +// CHECK-NOLIBC: "-cc1" +// CHECK-NOLIBC: {{hexagon-link|ld}} +// CHECK-NOLIBC: "{{.*}}/Inputs/hexagon_tree/Tools/bin/../target/hexagon/lib/v60/crt0_standalone.o" +// CHECK-NOLIBC: "{{.*}}/Inputs/hexagon_tree/Tools/bin/../target/hexagon/lib/v60/crt0.o" +// CHECK-NOLIBC: "{{.*}}/Inputs/hexagon_tree/Tools/bin/../target/hexagon/lib/v60/init.o" +// CHECK-NOLIBC: "-L{{.*}}/Inputs/hexagon_tree/Tools/bin/../target/hexagon/lib/v60" +// CHECK-NOLIBC: "-L{{.*}}/Inputs/hexagon_tree/Tools/bin/../target/hexagon/lib" +// CHECK-NOLIBC: "{{[^"]+}}.o" +// CHECK-NOLIBC: "-lstdc++" +// CHECK-NOLIBC: "-lm" MaskRay wrote: The pattern `{{hexagon-link|ld}}` is too broad. The `ld` part may match `clang -cc1 .../build/` if someone's build directory is called `build` (`ld` is a substring!). With `-fuse-ld=lld`, we can ensure that the linker is not affected by `CLANG_DEFAULT_LINKER` and `"{{.*}}ld.lld"` will occur... https://github.com/llvm/llvm-project/pull/67515 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [clang][hexagon] Add support for -nolibc (PR #67515)
@@ -401,6 +401,30 @@ // CHECK338-NOT: "--end-group" // CHECK338: "{{.*}}/Inputs/hexagon_tree/Tools/bin/../target/hexagon/lib/v60/fini.o" +// RUN: %clangxx -### -target hexagon-unknown-elf \ +// RUN: -ccc-install-dir %S/Inputs/hexagon_tree/Tools/bin \ +// RUN: -mcpu=hexagonv60 \ +// RUN: -nolibc \ +// RUN: %s 2>&1 \ +// RUN: | FileCheck -check-prefix=CHECK-NOLIBC %s +// CHECK-NOLIBC: "-cc1" +// CHECK-NOLIBC: {{hexagon-link|ld}} +// CHECK-NOLIBC: "{{.*}}/Inputs/hexagon_tree/Tools/bin/../target/hexagon/lib/v60/crt0_standalone.o" +// CHECK-NOLIBC: "{{.*}}/Inputs/hexagon_tree/Tools/bin/../target/hexagon/lib/v60/crt0.o" +// CHECK-NOLIBC: "{{.*}}/Inputs/hexagon_tree/Tools/bin/../target/hexagon/lib/v60/init.o" +// CHECK-NOLIBC: "-L{{.*}}/Inputs/hexagon_tree/Tools/bin/../target/hexagon/lib/v60" +// CHECK-NOLIBC: "-L{{.*}}/Inputs/hexagon_tree/Tools/bin/../target/hexagon/lib" +// CHECK-NOLIBC: "{{[^"]+}}.o" +// CHECK-NOLIBC: "-lstdc++" +// CHECK-NOLIBC: "-lm" androm3da wrote: I may have done `-SAME` to excess. This test passes locally but fails on some of the bots because `hexagon-link` isn't on the same line as the subsequent `... crt0_standalone.o`. Wouldn't have thought that behavior would be system-dependent but perhaps we can be less strict about this test. https://github.com/llvm/llvm-project/pull/67515 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [clang][hexagon] Add support for -nolibc (PR #67515)
@@ -401,6 +401,30 @@ // CHECK338-NOT: "--end-group" // CHECK338: "{{.*}}/Inputs/hexagon_tree/Tools/bin/../target/hexagon/lib/v60/fini.o" +// RUN: %clangxx -### -target hexagon-unknown-elf \ +// RUN: -ccc-install-dir %S/Inputs/hexagon_tree/Tools/bin \ +// RUN: -mcpu=hexagonv60 \ +// RUN: -nolibc \ +// RUN: %s 2>&1 \ +// RUN: | FileCheck -check-prefix=CHECK-NOLIBC %s +// CHECK-NOLIBC: "-cc1" +// CHECK-NOLIBC: {{hexagon-link|ld}} +// CHECK-NOLIBC: "{{.*}}/Inputs/hexagon_tree/Tools/bin/../target/hexagon/lib/v60/crt0_standalone.o" +// CHECK-NOLIBC: "{{.*}}/Inputs/hexagon_tree/Tools/bin/../target/hexagon/lib/v60/crt0.o" +// CHECK-NOLIBC: "{{.*}}/Inputs/hexagon_tree/Tools/bin/../target/hexagon/lib/v60/init.o" +// CHECK-NOLIBC: "-L{{.*}}/Inputs/hexagon_tree/Tools/bin/../target/hexagon/lib/v60" +// CHECK-NOLIBC: "-L{{.*}}/Inputs/hexagon_tree/Tools/bin/../target/hexagon/lib" +// CHECK-NOLIBC: "{{[^"]+}}.o" +// CHECK-NOLIBC: "-lstdc++" +// CHECK-NOLIBC: "-lm" androm3da wrote: > I'll tidy this test a bit first... Oh whoops I didn't see this. I'll rebase. https://github.com/llvm/llvm-project/pull/67515 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [clang][hexagon] Add support for -nolibc (PR #67515)
https://github.com/androm3da updated https://github.com/llvm/llvm-project/pull/67515 >From 87db8df7385b87f92f3bba2f80041e79039de78e Mon Sep 17 00:00:00 2001 From: Brian Cain Date: Wed, 27 Sep 2023 21:07:05 -0700 Subject: [PATCH 1/2] [clang][hexagon] Change driver tests to "--target=" `-target` has been deprecated, we can switch the tests to using `--target` instead. --- clang/test/Driver/hexagon-hvx-ieee-fp.c | 6 +- clang/test/Driver/hexagon-hvx-qfloat.c | 6 +- clang/test/Driver/hexagon-hvx.c | 174 ++-- clang/test/Driver/hexagon-long-calls.c | 6 +- clang/test/Driver/hexagon-memops.c | 4 +- clang/test/Driver/hexagon-nvj.c | 4 +- clang/test/Driver/hexagon-nvs.c | 4 +- clang/test/Driver/hexagon-packets.c | 4 +- clang/test/Driver/hexagon-toolchain-elf.c | 86 +- clang/test/Driver/hexagon-toolchain-linux.c | 20 +-- clang/test/Driver/hexagon-vectorize.c | 8 +- 11 files changed, 161 insertions(+), 161 deletions(-) diff --git a/clang/test/Driver/hexagon-hvx-ieee-fp.c b/clang/test/Driver/hexagon-hvx-ieee-fp.c index 4166d640b6faa51..0e502941d62a999 100644 --- a/clang/test/Driver/hexagon-hvx-ieee-fp.c +++ b/clang/test/Driver/hexagon-hvx-ieee-fp.c @@ -2,13 +2,13 @@ // Tests for the hvx ieee fp feature and errors. // - -// RUN: %clang -c %s -### -target hexagon-unknown-elf -mv68 -mhvx -mhvx-ieee-fp \ +// RUN: %clang -c %s -### --target=hexagon-unknown-elf -mv68 -mhvx -mhvx-ieee-fp \ // RUN: 2>&1 | FileCheck -check-prefix=CHECK-IEEEFP %s -// RUN: %clang -c %s -### -target hexagon-unknown-elf -mv66 -mhvx=v68 -mhvx-ieee-fp \ +// RUN: %clang -c %s -### --target=hexagon-unknown-elf -mv66 -mhvx=v68 -mhvx-ieee-fp \ // RUN: 2>&1 | FileCheck -check-prefix=CHECK-IEEEFP %s // CHECK-IEEEFP: "-target-feature" "+hvx-ieee-fp" -// RUN: %clang -c %s -### -target hexagon-unknown-elf -mv68 -mhvx -mhvx-ieee-fp \ +// RUN: %clang -c %s -### --target=hexagon-unknown-elf -mv68 -mhvx -mhvx-ieee-fp \ // RUN: -mno-hvx-ieee-fp 2>&1 | FileCheck -check-prefix=CHECK-NO-IEEEFP %s // CHECK-NO-IEEEFP: "-target-feature" "-hvx-ieee-fp" diff --git a/clang/test/Driver/hexagon-hvx-qfloat.c b/clang/test/Driver/hexagon-hvx-qfloat.c index ac3de8ded16ebd6..f3662da040a8fcf 100644 --- a/clang/test/Driver/hexagon-hvx-qfloat.c +++ b/clang/test/Driver/hexagon-hvx-qfloat.c @@ -2,13 +2,13 @@ // Tests for the hvx qfloat feature and errors. // - -// RUN: %clang -c %s -### -target hexagon-unknown-elf -mv68 -mhvx -mhvx-qfloat \ +// RUN: %clang -c %s -### --target=hexagon-unknown-elf -mv68 -mhvx -mhvx-qfloat \ // RUN: 2>&1 | FileCheck -check-prefix=CHECK-QFLOAT %s -// RUN: %clang -c %s -### -target hexagon-unknown-elf -mv66 -mhvx=v68 -mhvx-qfloat \ +// RUN: %clang -c %s -### --target=hexagon-unknown-elf -mv66 -mhvx=v68 -mhvx-qfloat \ // RUN: 2>&1 | FileCheck -check-prefix=CHECK-QFLOAT %s // CHECK-QFLOAT: "-target-feature" "+hvx-qfloat" -// RUN: %clang -c %s -### -target hexagon-unknown-elf -mv68 -mhvx -mhvx-qfloat \ +// RUN: %clang -c %s -### --target=hexagon-unknown-elf -mv68 -mhvx -mhvx-qfloat \ // RUN: -mno-hvx-qfloat 2>&1 | FileCheck -check-prefix=CHECK-NO-QFLOAT %s // CHECK-NO-QFLOAT: "-target-feature" "-hvx-qfloat" diff --git a/clang/test/Driver/hexagon-hvx.c b/clang/test/Driver/hexagon-hvx.c index b57cc22515c2979..d21d88701ba5eff 100644 --- a/clang/test/Driver/hexagon-hvx.c +++ b/clang/test/Driver/hexagon-hvx.c @@ -8,31 +8,31 @@ // CHECK-HVX-ON-NOT: "-target-feature" "-hvx // CHECK-HVX-OFF-NOT: "-target-feature" "+hvx -// RUN: %clang -c %s -### -target hexagon-unknown-elf -mv5 \ +// RUN: %clang -c %s -### --target=hexagon-unknown-elf -mv5 \ // RUN: 2>&1 | FileCheck -check-prefix=CHECK-HVX-OFF %s -// RUN: %clang -c %s -### -target hexagon-unknown-elf -mv55 \ +// RUN: %clang -c %s -### --target=hexagon-unknown-elf -mv55 \ // RUN: 2>&1 | FileCheck -check-prefix=CHECK-HVX-OFF %s -// RUN: %clang -c %s -### -target hexagon-unknown-elf -mv60 \ +// RUN: %clang -c %s -### --target=hexagon-unknown-elf -mv60 \ // RUN: 2>&1 | FileCheck -check-prefix=CHECK-HVX-OFF %s -// RUN: %clang -c %s -### -target hexagon-unknown-elf -mv62 \ +// RUN: %clang -c %s -### --target=hexagon-unknown-elf -mv62 \ // RUN: 2>&1 | FileCheck -check-prefix=CHECK-HVX-OFF %s -// RUN: %clang -c %s -### -target hexagon-unknown-elf -mv65 \ +// RUN: %clang -c %s -### --target=hexagon-unknown-elf -mv65 \ // RUN: 2>&1 | FileCheck -check-prefix=CHECK-HVX-OFF %s -// RUN: %clang -c %s -### -target hexagon-unknown-elf -mv66 \ +// RUN: %clang -c %s -### --target=hexagon-unknown-elf -mv66 \ // RUN: 2>&1 | FileCheck -check-prefix=CHECK-HVX-OFF %s -// RUN: %clang -c %s -### -target hexagon-unknown-elf -mv67 \ +// RUN: %clang -c %s -### --target=hexagon-unknown-elf -mv67 \ //
[clang] [clang][hexagon] Add support for -nolibc (PR #67515)
@@ -401,6 +401,30 @@ // CHECK338-NOT: "--end-group" // CHECK338: "{{.*}}/Inputs/hexagon_tree/Tools/bin/../target/hexagon/lib/v60/fini.o" +// RUN: %clangxx -### -target hexagon-unknown-elf \ +// RUN: -ccc-install-dir %S/Inputs/hexagon_tree/Tools/bin \ +// RUN: -mcpu=hexagonv60 \ MaskRay wrote: These files wrap too quickly. Most tests pack more than one options on one line and don't start a new line just for `%s 2>&1`. https://github.com/llvm/llvm-project/pull/67515 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [clang][hexagon] Add support for -nolibc (PR #67515)
@@ -401,6 +401,30 @@ // CHECK338-NOT: "--end-group" // CHECK338: "{{.*}}/Inputs/hexagon_tree/Tools/bin/../target/hexagon/lib/v60/fini.o" +// RUN: %clangxx -### -target hexagon-unknown-elf \ +// RUN: -ccc-install-dir %S/Inputs/hexagon_tree/Tools/bin \ +// RUN: -mcpu=hexagonv60 \ +// RUN: -nolibc \ +// RUN: %s 2>&1 \ +// RUN: | FileCheck -check-prefix=CHECK-NOLIBC %s +// CHECK-NOLIBC: "-cc1" +// CHECK-NOLIBC: {{hexagon-link|ld}} +// CHECK-NOLIBC: "{{.*}}/Inputs/hexagon_tree/Tools/bin/../target/hexagon/lib/v60/crt0_standalone.o" +// CHECK-NOLIBC: "{{.*}}/Inputs/hexagon_tree/Tools/bin/../target/hexagon/lib/v60/crt0.o" +// CHECK-NOLIBC: "{{.*}}/Inputs/hexagon_tree/Tools/bin/../target/hexagon/lib/v60/init.o" +// CHECK-NOLIBC: "-L{{.*}}/Inputs/hexagon_tree/Tools/bin/../target/hexagon/lib/v60" +// CHECK-NOLIBC: "-L{{.*}}/Inputs/hexagon_tree/Tools/bin/../target/hexagon/lib" +// CHECK-NOLIBC: "{{[^"]+}}.o" +// CHECK-NOLIBC: "-lstdc++" +// CHECK-NOLIBC: "-lm" MaskRay wrote: Use -SAME whether applicable. I'll tidy this test a bit first... https://github.com/llvm/llvm-project/pull/67515 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [clang][hexagon] Add support for -nolibc (PR #67515)
@@ -401,6 +401,30 @@ // CHECK338-NOT: "--end-group" // CHECK338: "{{.*}}/Inputs/hexagon_tree/Tools/bin/../target/hexagon/lib/v60/fini.o" +// RUN: %clangxx -### -target hexagon-unknown-elf \ MaskRay wrote: use `--target=` for new tests. `-target ` has been deprecated since Clang 3.4 https://github.com/llvm/llvm-project/pull/67515 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [clang][hexagon] Add support for -nolibc (PR #67515)
https://github.com/kparzysz-quic approved this pull request. https://github.com/llvm/llvm-project/pull/67515 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [clang][hexagon] Add support for -nolibc (PR #67515)
https://github.com/androm3da created https://github.com/llvm/llvm-project/pull/67515 None >From 41a8826e647917042e8e5eaf0922f60e16d98839 Mon Sep 17 00:00:00 2001 From: Brian Cain Date: Tue, 26 Sep 2023 19:57:47 -0700 Subject: [PATCH] [clang][hexagon] Add support for -nolibc --- clang/lib/Driver/ToolChains/Hexagon.cpp | 6 +++-- clang/test/Driver/hexagon-toolchain-elf.c | 26 - clang/test/Driver/hexagon-toolchain-linux.c | 12 ++ 3 files changed, 41 insertions(+), 3 deletions(-) diff --git a/clang/lib/Driver/ToolChains/Hexagon.cpp b/clang/lib/Driver/ToolChains/Hexagon.cpp index e7dca1053dc8d8a..d81e022708932f7 100644 --- a/clang/lib/Driver/ToolChains/Hexagon.cpp +++ b/clang/lib/Driver/ToolChains/Hexagon.cpp @@ -377,7 +377,8 @@ constructHexagonLinkArgs(Compilation , const JobAction , linkXRayRuntimeDeps(HTC, Args, CmdArgs); CmdArgs.push_back("-lclang_rt.builtins-hexagon"); - CmdArgs.push_back("-lc"); + if (!Args.hasArg(options::OPT_nolibc)) +CmdArgs.push_back("-lc"); } if (D.CCCIsCXX()) { if (HTC.ShouldLinkCXXStdlib(Args)) @@ -470,7 +471,8 @@ constructHexagonLinkArgs(Compilation , const JobAction , if (!IsShared) { for (StringRef Lib : OsLibs) CmdArgs.push_back(Args.MakeArgString("-l" + Lib)); - CmdArgs.push_back("-lc"); + if (!Args.hasArg(options::OPT_nolibc)) +CmdArgs.push_back("-lc"); } CmdArgs.push_back("-lgcc"); diff --git a/clang/test/Driver/hexagon-toolchain-elf.c b/clang/test/Driver/hexagon-toolchain-elf.c index 039b87347436d51..48b9aa2c22bffaa 100644 --- a/clang/test/Driver/hexagon-toolchain-elf.c +++ b/clang/test/Driver/hexagon-toolchain-elf.c @@ -330,7 +330,7 @@ // CHECK335: "{{.*}}/Inputs/hexagon_tree/Tools/bin/../target/hexagon/lib/v60/G0/fini.o" // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -// -nostdlib, -nostartfiles, -nodefaultlibs +// -nostdlib, -nostartfiles, -nodefaultlibs, -nolibc // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - // RUN: %clangxx -### -target hexagon-unknown-elf \ // RUN: -ccc-install-dir %S/Inputs/hexagon_tree/Tools/bin \ @@ -401,6 +401,30 @@ // CHECK338-NOT: "--end-group" // CHECK338: "{{.*}}/Inputs/hexagon_tree/Tools/bin/../target/hexagon/lib/v60/fini.o" +// RUN: %clangxx -### -target hexagon-unknown-elf \ +// RUN: -ccc-install-dir %S/Inputs/hexagon_tree/Tools/bin \ +// RUN: -mcpu=hexagonv60 \ +// RUN: -nolibc \ +// RUN: %s 2>&1 \ +// RUN: | FileCheck -check-prefix=CHECK-NOLIBC %s +// CHECK-NOLIBC: "-cc1" +// CHECK-NOLIBC: {{hexagon-link|ld}} +// CHECK-NOLIBC: "{{.*}}/Inputs/hexagon_tree/Tools/bin/../target/hexagon/lib/v60/crt0_standalone.o" +// CHECK-NOLIBC: "{{.*}}/Inputs/hexagon_tree/Tools/bin/../target/hexagon/lib/v60/crt0.o" +// CHECK-NOLIBC: "{{.*}}/Inputs/hexagon_tree/Tools/bin/../target/hexagon/lib/v60/init.o" +// CHECK-NOLIBC: "-L{{.*}}/Inputs/hexagon_tree/Tools/bin/../target/hexagon/lib/v60" +// CHECK-NOLIBC: "-L{{.*}}/Inputs/hexagon_tree/Tools/bin/../target/hexagon/lib" +// CHECK-NOLIBC: "{{[^"]+}}.o" +// CHECK-NOLIBC: "-lstdc++" +// CHECK-NOLIBC: "-lm" +// CHECK-NOLIBC: "--start-group" +// CHECK-NOLIBC: "-lstandalone" +// CHECK-NOLIBC-NOT: "-lc" +// CHECK-NOLIBC: "-lgcc" +// CHECK-NOLIBC: "--end-group" +// CHECK-NOLIBC: "{{.*}}/Inputs/hexagon_tree/Tools/bin/../target/hexagon/lib/v60/fini.o" + + // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - // -moslib // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/clang/test/Driver/hexagon-toolchain-linux.c b/clang/test/Driver/hexagon-toolchain-linux.c index 423306affdce3ac..90a92900020fcda 100644 --- a/clang/test/Driver/hexagon-toolchain-linux.c +++ b/clang/test/Driver/hexagon-toolchain-linux.c @@ -68,6 +68,18 @@ // CHECK004-NOT: "-lclang_rt.builtins-hexagon" // CHECK004-NOT: "-lc" // - +// Passing --musl -nolibc +// - +// RUN: %clang -### -target hexagon-unknown-linux-musl \ +// RUN: -ccc-install-dir %S/Inputs/hexagon_tree/Tools/bin \ +// RUN: -mcpu=hexagonv60 \ +// RUN: --sysroot=%S/Inputs/basic_linux_libcxx_tree -nolibc \ +// RUN: %s 2>&1 \ +// RUN: | FileCheck -check-prefix=CHECK-NOLIBC %s +// CHECK-NOLIBC: "-dynamic-linker={{/|}}lib{{/|}}ld-musl-hexagon.so.1" +// CHECK-NOLIBC: "{{.*}}basic_linux_libcxx_tree{{/|}}usr{{/|}}lib{{/|}}crt1.o" +// CHECK-NOLIBC-NOT: "-lc" +// - // Not Passing -fno-use-init-array when musl is selected // - // RUN: %clang -### -target hexagon-unknown-linux-musl \