[llvm] d63ec44 - Remove zlibgnu support in llvm-mc
David Blaikie via llvm-commits
llvm-commits at lists.llvm.org
Thu Jul 14 15:43:34 PDT 2022
Author: David Blaikie
Date: 2022-07-14T22:38:59Z
New Revision: d63ec445caa8e812685805afd458fb28bf7e6875
URL: https://github.com/llvm/llvm-project/commit/d63ec445caa8e812685805afd458fb28bf7e6875
DIFF: https://github.com/llvm/llvm-project/commit/d63ec445caa8e812685805afd458fb28bf7e6875.diff
LOG: Remove zlibgnu support in llvm-mc
The feature's been removed from most other tools in LLVM at this point.
Added:
Modified:
llvm/lib/MC/ELFObjectWriter.cpp
llvm/test/MC/ELF/compression.s
llvm/tools/llvm-mc/llvm-mc.cpp
Removed:
################################################################################
diff --git a/llvm/lib/MC/ELFObjectWriter.cpp b/llvm/lib/MC/ELFObjectWriter.cpp
index 78204ffe4c3bd..e2e98d38289d7 100644
--- a/llvm/lib/MC/ELFObjectWriter.cpp
+++ b/llvm/lib/MC/ELFObjectWriter.cpp
@@ -146,7 +146,7 @@ struct ELFWriter {
bool maybeWriteCompression(uint64_t Size,
SmallVectorImpl<uint8_t> &CompressedContents,
- bool ZLibStyle, unsigned Alignment);
+ unsigned Alignment);
public:
ELFWriter(ELFObjectWriter &OWriter, raw_pwrite_stream &OS,
@@ -819,36 +819,25 @@ MCSectionELF *ELFWriter::createRelocationSection(MCContext &Ctx,
// Include the debug info compression header.
bool ELFWriter::maybeWriteCompression(
- uint64_t Size, SmallVectorImpl<uint8_t> &CompressedContents, bool ZLibStyle,
+ uint64_t Size, SmallVectorImpl<uint8_t> &CompressedContents,
unsigned Alignment) {
- if (ZLibStyle) {
- uint64_t HdrSize =
- is64Bit() ? sizeof(ELF::Elf32_Chdr) : sizeof(ELF::Elf64_Chdr);
- if (Size <= HdrSize + CompressedContents.size())
- return false;
- // Platform specific header is followed by compressed data.
- if (is64Bit()) {
- // Write Elf64_Chdr header.
- write(static_cast<ELF::Elf64_Word>(ELF::ELFCOMPRESS_ZLIB));
- write(static_cast<ELF::Elf64_Word>(0)); // ch_reserved field.
- write(static_cast<ELF::Elf64_Xword>(Size));
- write(static_cast<ELF::Elf64_Xword>(Alignment));
- } else {
- // Write Elf32_Chdr header otherwise.
- write(static_cast<ELF::Elf32_Word>(ELF::ELFCOMPRESS_ZLIB));
- write(static_cast<ELF::Elf32_Word>(Size));
- write(static_cast<ELF::Elf32_Word>(Alignment));
- }
- return true;
- }
-
- // "ZLIB" followed by 8 bytes representing the uncompressed size of the section,
- // useful for consumers to preallocate a buffer to decompress into.
- const StringRef Magic = "ZLIB";
- if (Size <= Magic.size() + sizeof(Size) + CompressedContents.size())
+ uint64_t HdrSize =
+ is64Bit() ? sizeof(ELF::Elf32_Chdr) : sizeof(ELF::Elf64_Chdr);
+ if (Size <= HdrSize + CompressedContents.size())
return false;
- W.OS << Magic;
- support::endian::write(W.OS, Size, support::big);
+ // Platform specific header is followed by compressed data.
+ if (is64Bit()) {
+ // Write Elf64_Chdr header.
+ write(static_cast<ELF::Elf64_Word>(ELF::ELFCOMPRESS_ZLIB));
+ write(static_cast<ELF::Elf64_Word>(0)); // ch_reserved field.
+ write(static_cast<ELF::Elf64_Xword>(Size));
+ write(static_cast<ELF::Elf64_Xword>(Alignment));
+ } else {
+ // Write Elf32_Chdr header otherwise.
+ write(static_cast<ELF::Elf32_Word>(ELF::ELFCOMPRESS_ZLIB));
+ write(static_cast<ELF::Elf32_Word>(Size));
+ write(static_cast<ELF::Elf32_Word>(Alignment));
+ }
return true;
}
@@ -883,7 +872,7 @@ void ELFWriter::writeSectionData(const MCAssembler &Asm, MCSection &Sec,
bool ZlibStyle = MAI->compressDebugSections() == DebugCompressionType::Z;
if (!maybeWriteCompression(UncompressedData.size(), CompressedContents,
- ZlibStyle, Sec.getAlignment())) {
+ Sec.getAlignment())) {
W.OS << UncompressedData;
return;
}
diff --git a/llvm/test/MC/ELF/compression.s b/llvm/test/MC/ELF/compression.s
index 36f8bd80d5e8a..942c7823fc98d 100644
--- a/llvm/test/MC/ELF/compression.s
+++ b/llvm/test/MC/ELF/compression.s
@@ -1,69 +1,48 @@
// REQUIRES: zlib
-// Check zlib-gnu style
-// RUN: llvm-mc -filetype=obj -compress-debug-sections=zlib-gnu -triple x86_64-pc-linux-gnu < %s -o %t
-// RUN: llvm-objdump -s %t | FileCheck --check-prefix=CHECK-GNU-STYLE %s
-// RUN: llvm-dwarfdump -debug-str %t | FileCheck --check-prefix=STR %s
-// RUN: llvm-mc -filetype=obj -compress-debug-sections=zlib-gnu -triple i386-pc-linux-gnu --defsym I386=1 %s \
-// RUN: | llvm-readelf -s - | FileCheck --check-prefix=386-SYMBOLS-GNU %s
// Check zlib style
// RUN: llvm-mc -filetype=obj -compress-debug-sections=zlib -triple x86_64-pc-linux-gnu < %s -o %t
-// RUN: llvm-objdump -s %t | FileCheck --check-prefix=CHECK-ZLIB-STYLE %s
+// RUN: llvm-objdump -s %t | FileCheck %s
// RUN: llvm-dwarfdump -debug-str %t | FileCheck --check-prefix=STR %s
-// RUN: llvm-readelf --sections %t | FileCheck --check-prefixes=ZLIB-FLAGS,ZLIB-FLAGS64 %s
+// RUN: llvm-readelf --sections %t | FileCheck --check-prefixes=FLAGS,FLAGS64 %s
// RUN: llvm-mc -filetype=obj -compress-debug-sections=zlib -triple i386-pc-linux-gnu --defsym I386=1 %s -o %t
-// RUN: llvm-readelf -S -s %t | FileCheck --check-prefixes=386-SYMBOLS-ZLIB,ZLIB-FLAGS,ZLIB-FLAGS32 %s
-
-// Don't compress small sections, such as this simple debug_abbrev example
-// CHECK-GNU-STYLE: Contents of section .debug_abbrev:
-// CHECK-GNU-STYLE-NOT: ZLIB
-// CHECK-GNU-STYLE-NOT: Contents of
-
-// CHECK-GNU-STYLE: Contents of section .debug_info:
-
-// CHECK-GNU-STYLE: Contents of section .zdebug_str:
-// Check for the 'ZLIB' file magic at the start of the section only
-// CHECK-GNU-STYLE-NEXT: ZLIB
-// CHECK-GNU-STYLE-NOT: ZLIB
-// CHECK-GNU-STYLE: Contents of section
+// RUN: llvm-readelf -S -s %t | FileCheck --check-prefixes=386-SYMBOLS,FLAGS,FLAGS32 %s
// Decompress one valid dwarf section just to check that this roundtrips,
-// we use .zdebug_str section for that
+// we use .debug_str section for that
// STR: perfectly compressable data sample *****************************************
// Now check the zlib style output:
// Don't compress small sections, such as this simple debug_abbrev example
-// CHECK-ZLIB-STYLE: Contents of section .debug_abbrev:
-// CHECK-ZLIB-STYLE-NOT: ZLIB
-// CHECK-ZLIB-STYLE-NOT: Contents of
-// CHECK-ZLIB-STYLE: Contents of section .debug_info:
+// CHECK: Contents of section .debug_abbrev:
+// CHECK-NOT: ZLIB
+// CHECK-NOT: Contents of
+// CHECK: Contents of section .debug_info:
// FIXME: Handle compressing alignment fragments to support compressing debug_frame
-// CHECK-ZLIB-STYLE: Contents of section .debug_frame:
-// CHECK-ZLIB-STYLE-NOT: ZLIB
-// CHECK-ZLIB-STYLE: Contents of
+// CHECK: Contents of section .debug_frame:
+// CHECK-NOT: ZLIB
+// CHECK: Contents of
-# ZLIB-FLAGS: .text PROGBITS [[#%x,]] [[#%x,]] [[#%x,]] 00 AX 0 0 4
-# ZLIB-FLAGS: .nonalloc PROGBITS [[#%x,]] [[#%x,]] 000226 00 0 0 1
+# FLAGS: .text PROGBITS [[#%x,]] [[#%x,]] [[#%x,]] 00 AX 0 0 4
+# FLAGS: .nonalloc PROGBITS [[#%x,]] [[#%x,]] 000226 00 0 0 1
## Check that the large .debug_line and .debug_frame have the SHF_COMPRESSED
## flag.
-# ZLIB-FLAGS32: .debug_line PROGBITS [[#%x,]] [[#%x,]] [[#%x,]] 00 C 0 0 4
-# ZLIB-FLAGS32: .debug_abbrev PROGBITS [[#%x,]] [[#%x,]] [[#%x,]] 00 0 0 1
-# ZLIB-FLAGS32: .debug_info PROGBITS [[#%x,]] [[#%x,]] [[#%x,]] 00 0 0 1
-# ZLIB-FLAGS32: .debug_frame PROGBITS [[#%x,]] [[#%x,]] [[#%x,]] 00 C 0 0 4
-
-# ZLIB-FLAGS64: .debug_line PROGBITS [[#%x,]] [[#%x,]] [[#%x,]] 00 C 0 0 8
-# ZLIB-FLAGS64: .debug_abbrev PROGBITS [[#%x,]] [[#%x,]] [[#%x,]] 00 0 0 1
-# ZLIB-FLAGS64: .debug_info PROGBITS [[#%x,]] [[#%x,]] [[#%x,]] 00 0 0 1
-# ZLIB-FLAGS64: .debug_frame PROGBITS [[#%x,]] [[#%x,]] [[#%x,]] 00 C 0 0 8
-
-# 386-SYMBOLS-ZLIB: Symbol table '.symtab'
-# 386-SYMBOLS-ZLIB: .debug_str
-# 386-SYMBOLS-GNU: Symbol table '.symtab'
-# 386-SYMBOLS-GNU: .zdebug_str
+# FLAGS32: .debug_line PROGBITS [[#%x,]] [[#%x,]] [[#%x,]] 00 C 0 0 4
+# FLAGS32: .debug_abbrev PROGBITS [[#%x,]] [[#%x,]] [[#%x,]] 00 0 0 1
+# FLAGS32: .debug_info PROGBITS [[#%x,]] [[#%x,]] [[#%x,]] 00 0 0 1
+# FLAGS32: .debug_frame PROGBITS [[#%x,]] [[#%x,]] [[#%x,]] 00 C 0 0 4
+
+# FLAGS64: .debug_line PROGBITS [[#%x,]] [[#%x,]] [[#%x,]] 00 C 0 0 8
+# FLAGS64: .debug_abbrev PROGBITS [[#%x,]] [[#%x,]] [[#%x,]] 00 0 0 1
+# FLAGS64: .debug_info PROGBITS [[#%x,]] [[#%x,]] [[#%x,]] 00 0 0 1
+# FLAGS64: .debug_frame PROGBITS [[#%x,]] [[#%x,]] [[#%x,]] 00 C 0 0 8
+
+# 386-SYMBOLS: Symbol table '.symtab'
+# 386-SYMBOLS: .debug_str
## Don't compress a section not named .debug_*.
.section .nonalloc,"", at progbits
diff --git a/llvm/tools/llvm-mc/llvm-mc.cpp b/llvm/tools/llvm-mc/llvm-mc.cpp
index 3e737b9fbaa0e..aa380d3fe9bc1 100644
--- a/llvm/tools/llvm-mc/llvm-mc.cpp
+++ b/llvm/tools/llvm-mc/llvm-mc.cpp
@@ -77,9 +77,7 @@ static cl::opt<DebugCompressionType> CompressDebugSections(
cl::desc("Choose DWARF debug sections compression:"),
cl::values(clEnumValN(DebugCompressionType::None, "none", "No compression"),
clEnumValN(DebugCompressionType::Z, "zlib",
- "Use zlib compression"),
- clEnumValN(DebugCompressionType::GNU, "zlib-gnu",
- "Use zlib-gnu compression (deprecated)")),
+ "Use zlib compression")),
cl::cat(MCCategory));
static cl::opt<bool>
More information about the llvm-commits
mailing list