Alternative fix for reloc tareting discarded section
r283984 introduced a problem of too many warning messages being shown
when -ffunction-sections and -fdata-sections were used in conjunction
with --gc-sections linker flag and debugging information present. This
happens because lot of relocations from .debug_line section may become
invalid in such case. The newer fix doesn't show any warning message but
zeroes OutSec pointer in createInputSectionList() to avoid crash, when
relocations are written
llvm-svn: 284010
diff --git a/lld/ELF/LinkerScript.cpp b/lld/ELF/LinkerScript.cpp
index a700295..f1fe241 100644
--- a/lld/ELF/LinkerScript.cpp
+++ b/lld/ELF/LinkerScript.cpp
@@ -239,6 +239,12 @@
Ret.push_back(static_cast<InputSectionBase<ELFT> *>(S));
}
+ // After we created final list we should now set OutSec pointer to null,
+ // instead of -1. Otherwise we may get a crash when writing relocs, in
+ // case section is discarded by linker script
+ for (InputSectionBase<ELFT> *S : Ret)
+ S->OutSec = nullptr;
+
return Ret;
}