As we discussed in the last meeting, we reset the ports tree and began from scratch, even though this change involves porting all the packages. Starting small and growing gradually, this approach will reduce build times and consequently lower energy consumption in a world affected by climate change. We will add new ports as users needs arise; ok h3artbl33d@
This commit is contained in:
parent
83a0aaf92c
commit
9a3af55370
59377 changed files with 98673 additions and 4712155 deletions
53
devel/llvm/17/patches/patch-lld_ELF_DriverUtils_cpp
Normal file
53
devel/llvm/17/patches/patch-lld_ELF_DriverUtils_cpp
Normal file
|
@ -0,0 +1,53 @@
|
|||
Index: lld/ELF/DriverUtils.cpp
|
||||
--- lld/ELF/DriverUtils.cpp.orig
|
||||
+++ lld/ELF/DriverUtils.cpp
|
||||
@@ -231,13 +231,48 @@ std::optional<std::string> elf::findFromSearchPaths(St
|
||||
return std::nullopt;
|
||||
}
|
||||
|
||||
+namespace {
|
||||
+// Must be in sync with findMajMinShlib in clang/lib/Driver/Driver.cpp.
|
||||
+ std::optional<std::string> findMajMinShlib(StringRef dir, const Twine& libNameSo) {
|
||||
+ // Handle OpenBSD-style maj/min shlib scheme
|
||||
+ llvm::SmallString<128> Scratch;
|
||||
+ const StringRef LibName = (libNameSo + ".").toStringRef(Scratch);
|
||||
+ int MaxMaj = -1, MaxMin = -1;
|
||||
+ std::error_code EC;
|
||||
+ for (llvm::sys::fs::directory_iterator LI(dir, EC), LE;
|
||||
+ LI != LE; LI = LI.increment(EC)) {
|
||||
+ StringRef FilePath = LI->path();
|
||||
+ StringRef FileName = llvm::sys::path::filename(FilePath);
|
||||
+ if (!(FileName.startswith(LibName)))
|
||||
+ continue;
|
||||
+ std::pair<StringRef, StringRef> MajMin =
|
||||
+ FileName.substr(LibName.size()).split('.');
|
||||
+ int Maj, Min;
|
||||
+ if (MajMin.first.getAsInteger(10, Maj) || Maj < 0)
|
||||
+ continue;
|
||||
+ if (MajMin.second.getAsInteger(10, Min) || Min < 0)
|
||||
+ continue;
|
||||
+ if (Maj > MaxMaj)
|
||||
+ MaxMaj = Maj, MaxMin = Min;
|
||||
+ if (MaxMaj == Maj && Min > MaxMin)
|
||||
+ MaxMin = Min;
|
||||
+ }
|
||||
+ if (MaxMaj >= 0)
|
||||
+ return findFile(dir, LibName + Twine(MaxMaj) + "." + Twine(MaxMin));
|
||||
+ return std::nullopt;
|
||||
+}
|
||||
+} // namespace
|
||||
+
|
||||
// This is for -l<basename>. We'll look for lib<basename>.so or lib<basename>.a from
|
||||
// search paths.
|
||||
std::optional<std::string> elf::searchLibraryBaseName(StringRef name) {
|
||||
for (StringRef dir : config->searchPaths) {
|
||||
- if (!config->isStatic)
|
||||
+ if (!config->isStatic) {
|
||||
if (std::optional<std::string> s = findFile(dir, "lib" + name + ".so"))
|
||||
return s;
|
||||
+ if (std::optional<std::string> s = findMajMinShlib(dir, "lib" + name + ".so"))
|
||||
+ return s;
|
||||
+ }
|
||||
if (std::optional<std::string> s = findFile(dir, "lib" + name + ".a"))
|
||||
return s;
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue