ckissane updated this revision to Diff 458875. ckissane added a comment. - remove lldb changes
Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D133525/new/ https://reviews.llvm.org/D133525 Files: llvm/lib/ObjCopy/ELF/ELFObjcopy.cpp llvm/lib/ObjCopy/ELF/ELFObject.cpp llvm/lib/ObjCopy/ELF/ELFObject.h
Index: llvm/lib/ObjCopy/ELF/ELFObject.h =================================================================== --- llvm/lib/ObjCopy/ELF/ELFObject.h +++ llvm/lib/ObjCopy/ELF/ELFObject.h @@ -537,6 +537,7 @@ MAKE_SEC_WRITER_FRIEND uint32_t ChType = 0; + bool Is64Bits; DebugCompressionType CompressionType; uint64_t DecompressedSize; uint64_t DecompressedAlign; @@ -544,9 +545,10 @@ public: CompressedSection(const SectionBase &Sec, - DebugCompressionType CompressionType); + DebugCompressionType CompressionType, bool Is64Bits); CompressedSection(ArrayRef<uint8_t> CompressedData, uint32_t ChType, - uint64_t DecompressedSize, uint64_t DecompressedAlign); + uint64_t DecompressedSize, uint64_t DecompressedAlign, + bool Is64Bits); uint64_t getDecompressedSize() const { return DecompressedSize; } uint64_t getDecompressedAlign() const { return DecompressedAlign; } Index: llvm/lib/ObjCopy/ELF/ELFObject.cpp =================================================================== --- llvm/lib/ObjCopy/ELF/ELFObject.cpp +++ llvm/lib/ObjCopy/ELF/ELFObject.cpp @@ -527,26 +527,28 @@ } CompressedSection::CompressedSection(const SectionBase &Sec, - DebugCompressionType CompressionType) - : SectionBase(Sec), CompressionType(CompressionType), + DebugCompressionType CompressionType, + bool Is64Bits) + : SectionBase(Sec), Is64Bits(Is64Bits), CompressionType(CompressionType), DecompressedSize(Sec.OriginalData.size()), DecompressedAlign(Sec.Align) { compression::compress(compression::Params(CompressionType), OriginalData, CompressedData); Flags |= ELF::SHF_COMPRESSED; size_t ChdrSize = - std::max(std::max(sizeof(object::Elf_Chdr_Impl<object::ELF64LE>), - sizeof(object::Elf_Chdr_Impl<object::ELF64BE>)), - std::max(sizeof(object::Elf_Chdr_Impl<object::ELF32LE>), - sizeof(object::Elf_Chdr_Impl<object::ELF32BE>))); + Is64Bits ? std::max(sizeof(object::Elf_Chdr_Impl<object::ELF64LE>), + sizeof(object::Elf_Chdr_Impl<object::ELF64BE>)) + : std::max(sizeof(object::Elf_Chdr_Impl<object::ELF32LE>), + sizeof(object::Elf_Chdr_Impl<object::ELF32BE>)); Size = ChdrSize + CompressedData.size(); Align = 8; } CompressedSection::CompressedSection(ArrayRef<uint8_t> CompressedData, uint32_t ChType, uint64_t DecompressedSize, - uint64_t DecompressedAlign) - : ChType(ChType), CompressionType(DebugCompressionType::None), + uint64_t DecompressedAlign, bool Is64Bits) + : ChType(ChType), Is64Bits(Is64Bits), + CompressionType(DebugCompressionType::None), DecompressedSize(DecompressedSize), DecompressedAlign(DecompressedAlign) { OriginalData = CompressedData; } @@ -1724,8 +1726,9 @@ if (!(Shdr.sh_flags & ELF::SHF_COMPRESSED)) return Obj.addSection<Section>(*Data); auto *Chdr = reinterpret_cast<const Elf_Chdr_Impl<ELFT> *>(Data->data()); - return Obj.addSection<CompressedSection>(CompressedSection( - *Data, Chdr->ch_type, Chdr->ch_size, Chdr->ch_addralign)); + return Obj.addSection<CompressedSection>( + CompressedSection(*Data, Chdr->ch_type, Chdr->ch_size, + Chdr->ch_addralign, ELFT::Is64Bits)); } } } Index: llvm/lib/ObjCopy/ELF/ELFObjcopy.cpp =================================================================== --- llvm/lib/ObjCopy/ELF/ELFObjcopy.cpp +++ llvm/lib/ObjCopy/ELF/ELFObjcopy.cpp @@ -505,12 +505,17 @@ if (Error E = Obj.removeSections(ELFConfig.AllowBrokenLinks, RemovePred)) return E; + const ElfType OutputElfType = + getOutputElfType(Config.OutputArch.value_or(MachineInfo())); + const bool Is64Bit = + OutputElfType == ELFT_ELF64LE || OutputElfType == ELFT_ELF64BE; if (Config.CompressionType != DebugCompressionType::None) { if (Error Err = replaceDebugSections( Obj, isCompressable, - [&Config, &Obj](const SectionBase *S) -> Expected<SectionBase *> { + [&Config, &Obj, + Is64Bit](const SectionBase *S) -> Expected<SectionBase *> { return &Obj.addSection<CompressedSection>( - CompressedSection(*S, Config.CompressionType)); + CompressedSection(*S, Config.CompressionType, Is64Bit)); })) return Err; } else if (Config.DecompressDebugSections) {
_______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits