-
Notifications
You must be signed in to change notification settings - Fork 727
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
devel/llvm16: change clang to allow -m32 on arm64
This is a backport from upstream and will be merged to FreeBSD head soon. See D40943 for more info. Sponsored by: DARPA
- Loading branch information
1 parent
2eae095
commit 3509504
Showing
2 changed files
with
34 additions
and
1 deletion.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,33 @@ | ||
commit 3450272fc281979388bb845a9fffb59b42cc2e7e | ||
Author: Jessica Clarke <jrtc27@jrtc27.com> | ||
Date: Mon Jul 10 01:40:58 2023 +0100 | ||
|
||
[Driver][FreeBSD] Generalise lib32 handling to support arm | ||
|
||
The current code maintains its own list of 32-bit architectures for | ||
which there is a 64-bit FreeBSD architecture that supports it for lib32. | ||
This is unnecessary (if it's not supported, the directory just won't | ||
exist), and means that, when FreeBSD gains lib32 support for a new | ||
architecture, you need an updated toolchain that knows about it. | ||
Instead we can check for any 32-bit architecture and have forwards | ||
compatibility. | ||
|
||
This is motivated by FreeBSD adding support for building arm lib32 | ||
libraries on aarch64. | ||
|
||
Co-authored-by: Mike Karels <karels@FreeBSD.org> | ||
|
||
diff --git clang/lib/Driver/ToolChains/FreeBSD.cpp clang/lib/Driver/ToolChains/FreeBSD.cpp | ||
index ac336598a78c..84e257741702 100644 | ||
--- clang/lib/Driver/ToolChains/FreeBSD.cpp | ||
+++ clang/lib/Driver/ToolChains/FreeBSD.cpp | ||
@@ -376,8 +376,7 @@ FreeBSD::FreeBSD(const Driver &D, const llvm::Triple &Triple, | ||
|
||
// When targeting 32-bit platforms, look for '/usr/lib32/crt1.o' and fall | ||
// back to '/usr/lib' if it doesn't exist. | ||
- if ((Triple.getArch() == llvm::Triple::x86 || Triple.isMIPS32() || | ||
- Triple.isPPC32()) && | ||
+ if (Triple.isArch32Bit() && | ||
D.getVFS().exists(concat(getDriver().SysRoot, "/usr/lib32/crt1.o"))) | ||
getFilePaths().push_back(concat(getDriver().SysRoot, "/usr/lib32")); | ||
else |