Commit 339f5f72 authored by Fangrui Song's avatar Fangrui Song
Browse files

[ELF] Set `file` for synthesized _binary_ symbols

Ensure the property that non-null `section` implies non-null `file`.
parent f2d8a0ac
Loading
Loading
Loading
Loading
+7 −7
Original line number Diff line number Diff line
@@ -1769,15 +1769,15 @@ void BinaryFile::parse() {

  llvm::StringSaver &saver = lld::saver();

  symtab.addAndCheckDuplicate(Defined{nullptr, saver.save(s + "_start"),
  symtab.addAndCheckDuplicate(Defined{this, saver.save(s + "_start"),
                                      STB_GLOBAL, STV_DEFAULT, STT_OBJECT, 0, 0,
                                      section});
  symtab.addAndCheckDuplicate(Defined{nullptr, saver.save(s + "_end"),
                                      STB_GLOBAL, STV_DEFAULT, STT_OBJECT,
                                      data.size(), 0, section});
  symtab.addAndCheckDuplicate(Defined{nullptr, saver.save(s + "_size"),
                                      STB_GLOBAL, STV_DEFAULT, STT_OBJECT,
                                      data.size(), 0, nullptr});
  symtab.addAndCheckDuplicate(Defined{this, saver.save(s + "_end"), STB_GLOBAL,
                                      STV_DEFAULT, STT_OBJECT, data.size(), 0,
                                      section});
  symtab.addAndCheckDuplicate(Defined{this, saver.save(s + "_size"), STB_GLOBAL,
                                      STV_DEFAULT, STT_OBJECT, data.size(), 0,
                                      nullptr});
}

ELFFileBase *elf::createObjFile(MemoryBufferRef mb, StringRef archiveName,
+1 −1
Original line number Diff line number Diff line
@@ -10,7 +10,7 @@

// CHECK:      duplicate symbol: _binary_file_bin_start
// CHECK-NEXT: defined in {{.*}}.o
// CHECK-NEXT: defined in <internal>
// CHECK-NEXT: defined in file.bin

.globl  _binary_file_bin_start
_binary_file_bin_start: