[PATCH] D37561: [ELF] - Don't crash when --emit-relocs is used with --gc-sections
Rui Ueyama via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Fri Sep 15 14:01:05 PDT 2017
ruiu added inline comments.
================
Comment at: ELF/InputSection.cpp:86-88
+ Live = !Config->GcSections;
+ if (!(Flags & SHF_ALLOC))
+ Live = Type != SHT_REL && Type != SHT_RELA;
----------------
grimar wrote:
> ruiu wrote:
> > This is too magical that it needs comment.
> Oh, I am sorry, looks I put `=` instead of `|=` at last minute by mistake.
> Fixed, added comment.
It is better to define a helper function. You can use this.
// Return true if a section with given section flags is live (will never be
// GCed) by default. If a section can be GCed, this function returns false.
static bool isLiveByDefault(uint64_t Flags, uint32_t Type) {
// If GC is enabled, all memory-mapped sections are subject of GC.
if (!Config->GcSections)
return true;
if (Flags & SHF_ALLOC)
return false;
// Besides that, relocation sections can also be GCed because their
// relocation target sections may be GCed. This doesn't really matter
// in most cases because the linker usually consumes relocation
// sections instead of emitting them, but -emit-reloc needs this.
return Type != SHT_REL && Type != SHT_RELA;
}
https://reviews.llvm.org/D37561
More information about the llvm-commits
mailing list