Add -{no,}-check-sections flags to enable/disable section overlchecking
GNU linkers have this option. Differential Revision: https://reviews.llvm.org/D42858 llvm-svn: 324150
This commit is contained in:
parent
38af2eed51
commit
6a8e79b8e5
|
@ -112,6 +112,7 @@ struct Configuration {
|
|||
bool AsNeeded = false;
|
||||
bool Bsymbolic;
|
||||
bool BsymbolicFunctions;
|
||||
bool CheckSections;
|
||||
bool CompressDebugSections;
|
||||
bool DefineCommon;
|
||||
bool Demangle = true;
|
||||
|
|
|
@ -600,6 +600,8 @@ void LinkerDriver::readConfigs(opt::InputArgList &Args) {
|
|||
Config->AuxiliaryList = args::getStrings(Args, OPT_auxiliary);
|
||||
Config->Bsymbolic = Args.hasArg(OPT_Bsymbolic);
|
||||
Config->BsymbolicFunctions = Args.hasArg(OPT_Bsymbolic_functions);
|
||||
Config->CheckSections =
|
||||
Args.hasFlag(OPT_check_sections, OPT_no_check_sections, true);
|
||||
Config->Chroot = Args.getLastArgValue(OPT_chroot);
|
||||
Config->CompressDebugSections = getCompressDebugSections(Args);
|
||||
Config->DefineCommon = Args.hasFlag(OPT_define_common, OPT_no_define_common,
|
||||
|
|
|
@ -31,6 +31,10 @@ def build_id: F<"build-id">, HelpText<"Generate build ID note">;
|
|||
|
||||
def build_id_eq: J<"build-id=">, HelpText<"Generate build ID note">;
|
||||
|
||||
defm check_sections : B<"check-sections",
|
||||
"Check section addresses for overlaps",
|
||||
"Do not check section addresses for overlaps">;
|
||||
|
||||
defm compress_debug_sections : Eq<"compress-debug-sections">,
|
||||
HelpText<"Compress DWARF debug sections">;
|
||||
|
||||
|
|
|
@ -455,7 +455,8 @@ template <class ELFT> void Writer<ELFT>::run() {
|
|||
Sec->Addr = 0;
|
||||
}
|
||||
|
||||
checkNoOverlappingSections();
|
||||
if (Config->CheckSections)
|
||||
checkNoOverlappingSections();
|
||||
|
||||
// It does not make sense try to open the file if we have error already.
|
||||
if (errorCount())
|
||||
|
|
|
@ -66,8 +66,10 @@
|
|||
# LMA-OVERLAP-ERR-NEXT: >>> .sec1 range is [0x8000 -> 0x80FF]
|
||||
# LMA-OVERLAP-ERR-NEXT: >>> .sec2 range is [0x8080 -> 0x817F]
|
||||
|
||||
# check that we create the expected binary with --noinhibit-exec:
|
||||
# Check that we create the expected binary with --noinhibit-exec or --no-check-sections:
|
||||
# RUN: ld.lld -o %t.so --script %t-lma.script %t.o -shared --noinhibit-exec
|
||||
# RUN: ld.lld -o %t.so --script %t-lma.script %t.o -shared --no-check-sections
|
||||
# RUN: ld.lld -o %t.so --script %t-lma.script %t.o -shared --check-sections --no-check-sections
|
||||
|
||||
# Verify that the .sec2 was indeed placed in a PT_LOAD where the PhysAddr
|
||||
# overlaps with where .sec1 is loaded:
|
||||
|
|
Loading…
Reference in New Issue