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
71
devel/llvm/17/patches/patch-lld_ELF_InputFiles_cpp
Normal file
71
devel/llvm/17/patches/patch-lld_ELF_InputFiles_cpp
Normal file
|
@ -0,0 +1,71 @@
|
|||
Index: lld/ELF/InputFiles.cpp
|
||||
--- lld/ELF/InputFiles.cpp.orig
|
||||
+++ lld/ELF/InputFiles.cpp
|
||||
@@ -45,6 +45,8 @@ uint32_t InputFile::nextGroupId;
|
||||
|
||||
std::unique_ptr<TarWriter> elf::tar;
|
||||
|
||||
+DenseMap<StringRef, StringRef> elf::gnuWarnings;
|
||||
+
|
||||
// Returns "<internal>", "foo.a(bar.o)" or "baz.o".
|
||||
std::string lld::toString(const InputFile *f) {
|
||||
static std::mutex mu;
|
||||
@@ -63,6 +65,19 @@ std::string lld::toString(const InputFile *f) {
|
||||
return std::string(f->toStringCache);
|
||||
}
|
||||
|
||||
+// .gnu.warning.SYMBOL are treated as warning symbols for the given symbol
|
||||
+void lld::parseGNUWarning(StringRef name, ArrayRef<char> data, size_t size) {
|
||||
+ static std::mutex mu;
|
||||
+ if (!name.empty() && name.startswith(".gnu.warning.")) {
|
||||
+ std::lock_guard<std::mutex> lock(mu);
|
||||
+ StringRef wsym = name.substr(13);
|
||||
+ StringRef s(data.begin());
|
||||
+ StringRef wng(s.substr(0, size));
|
||||
+ symtab.insert(wsym)->gwarn = true;
|
||||
+ gnuWarnings.insert({wsym, wng});
|
||||
+ }
|
||||
+}
|
||||
+
|
||||
static ELFKind getELFKind(MemoryBufferRef mb, StringRef archiveName) {
|
||||
unsigned char size;
|
||||
unsigned char endian;
|
||||
@@ -787,6 +802,14 @@ void ObjFile<ELFT>::initializeSections(bool ignoreComd
|
||||
case SHT_RELA:
|
||||
case SHT_NULL:
|
||||
break;
|
||||
+ case SHT_PROGBITS: {
|
||||
+ this->sections[i] = createInputSection(i, sec, check(obj.getSectionName(sec, shstrtab)));
|
||||
+ StringRef name = check(obj.getSectionName(sec, shstrtab));
|
||||
+ ArrayRef<char> data =
|
||||
+ CHECK(obj.template getSectionContentsAsArray<char>(sec), this);
|
||||
+ parseGNUWarning(name, data, sec.sh_size);
|
||||
+ }
|
||||
+ break;
|
||||
case SHT_LLVM_SYMPART:
|
||||
ctx.hasSympart.store(true, std::memory_order_relaxed);
|
||||
[[fallthrough]];
|
||||
@@ -1390,6 +1413,9 @@ template <class ELFT> void SharedFile::parse() {
|
||||
const ELFFile<ELFT> obj = this->getObj<ELFT>();
|
||||
ArrayRef<Elf_Shdr> sections = getELFShdrs<ELFT>();
|
||||
|
||||
+ StringRef sectionStringTable =
|
||||
+ CHECK(obj.getSectionStringTable(sections), this);
|
||||
+
|
||||
const Elf_Shdr *versymSec = nullptr;
|
||||
const Elf_Shdr *verdefSec = nullptr;
|
||||
const Elf_Shdr *verneedSec = nullptr;
|
||||
@@ -1412,6 +1438,13 @@ template <class ELFT> void SharedFile::parse() {
|
||||
case SHT_GNU_verneed:
|
||||
verneedSec = &sec;
|
||||
break;
|
||||
+ case SHT_PROGBITS: {
|
||||
+ StringRef name = CHECK(obj.getSectionName(sec, sectionStringTable), this);
|
||||
+ ArrayRef<char> data =
|
||||
+ CHECK(obj.template getSectionContentsAsArray<char>(sec), this);
|
||||
+ parseGNUWarning(name, data, sec.sh_size);
|
||||
+ break;
|
||||
+ }
|
||||
}
|
||||
}
|
||||
|
Loading…
Add table
Add a link
Reference in a new issue