Skip to content

Commit

Permalink
Change -gz and -Wa,--compress-debug-sections to use gABI compression …
Browse files Browse the repository at this point in the history
…(SHF_COMPRESSED)

Since July 15, 2015 (binutils-gdb commit
19a7fe52ae3d0971e67a134bcb1648899e21ae1c, included in 2.26), gas
--compress-debug-sections=zlib (gcc -gz) means zlib-gabi:
SHF_COMPRESSED. Before that it meant zlib-gnu (.zdebug).

clang's -gz was introduced in rC306115 (Jun 2017) to indicate zlib-gnu. It
is 2019 now and it is not unreasonable to assume users of the new
feature to have new linkers (ld.bfd/gold >= 2.26, lld >= rLLD273661).

Change clang's default accordingly to improve standard conformance.
zlib-gnu becomes out of fashion and gets poorer toolchain support.
Its mangled names confuse tools and are more likely to cause problems.

Reviewed By: compnerd

Differential Revision: https://reviews.llvm.org/D61689

llvm-svn: 360403
  • Loading branch information
MaskRay authored and MrSidims committed May 17, 2019
1 parent 3fdf919 commit 0b5b5ab
Show file tree
Hide file tree
Showing 3 changed files with 6 additions and 5 deletions.
5 changes: 4 additions & 1 deletion clang/docs/ReleaseNotes.rst
Expand Up @@ -77,7 +77,10 @@ Modified Compiler Flags

- `clang -dumpversion` now returns the version of Clang itself.

- ...
- On ELF, ``-gz`` now defaults to ``-gz=zlib``. It produces ``SHF_COMPRESSED``
style compression of debug information. GNU binutils 2.26 or newer, or lld is
required to link produced object files. Use ``-gz=zlib-gnu`` to get the old
behavior.

New Pragmas in Clang
--------------------
Expand Down
3 changes: 1 addition & 2 deletions clang/lib/Frontend/CompilerInvocation.cpp
Expand Up @@ -1053,8 +1053,7 @@ static bool ParseCodeGenArgs(CodeGenOptions &Opts, ArgList &Args, InputKind IK,
if (const Arg *A = Args.getLastArg(OPT_compress_debug_sections,
OPT_compress_debug_sections_EQ)) {
if (A->getOption().getID() == OPT_compress_debug_sections) {
// TODO: be more clever about the compression type auto-detection
Opts.setCompressDebugSections(llvm::DebugCompressionType::GNU);
Opts.setCompressDebugSections(llvm::DebugCompressionType::Z);
} else {
auto DCT = llvm::StringSwitch<llvm::DebugCompressionType>(A->getValue())
.Case("none", llvm::DebugCompressionType::None)
Expand Down
3 changes: 1 addition & 2 deletions clang/tools/driver/cc1as_main.cpp
Expand Up @@ -221,8 +221,7 @@ bool AssemblerInvocation::CreateFromArgs(AssemblerInvocation &Opts,
if (const Arg *A = Args.getLastArg(OPT_compress_debug_sections,
OPT_compress_debug_sections_EQ)) {
if (A->getOption().getID() == OPT_compress_debug_sections) {
// TODO: be more clever about the compression type auto-detection
Opts.CompressDebugSections = llvm::DebugCompressionType::GNU;
Opts.CompressDebugSections = llvm::DebugCompressionType::Z;
} else {
Opts.CompressDebugSections =
llvm::StringSwitch<llvm::DebugCompressionType>(A->getValue())
Expand Down

0 comments on commit 0b5b5ab

Please sign in to comment.