OSDN Git Service

[llvm-objcopy] - Fix incorrect CompressedSection creation.
authorGeorge Rimar <grimar@accesssoftek.com>
Wed, 6 Mar 2019 14:01:54 +0000 (14:01 +0000)
committerGeorge Rimar <grimar@accesssoftek.com>
Wed, 6 Mar 2019 14:01:54 +0000 (14:01 +0000)
We should create CompressedSection only if the section has SHF_COMPRESSED flag
or it's name starts from '.zdebug'.
Currently, we create it if section's data starts from ZLIB signature.

Differential revision: https://reviews.llvm.org/D59018

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@355501 91177308-0d34-0410-b5e6-96231b3b80d8

tools/llvm-objcopy/ELF/Object.cpp

index e2944ae..c90e7c6 100644 (file)
@@ -1111,7 +1111,8 @@ SectionBase &ELFBuilder<ELFT>::makeSection(const Elf_Shdr &Shdr) {
   default: {
     Data = unwrapOrError(ElfFile.getSectionContents(&Shdr));
 
-    if (isDataGnuCompressed(Data) || (Shdr.sh_flags & ELF::SHF_COMPRESSED)) {
+    StringRef Name = unwrapOrError(ElfFile.getSectionName(&Shdr));
+    if (Name.startswith(".zdebug") || (Shdr.sh_flags & ELF::SHF_COMPRESSED)) {
       uint64_t DecompressedSize, DecompressedAlign;
       std::tie(DecompressedSize, DecompressedAlign) =
           getDecompressedSizeAndAlignment<ELFT>(Data);