Skip to content

Commit

Permalink
cmd/link: set alignment of compressed section based on arch
Browse files Browse the repository at this point in the history
The ELF compression header(Chdr) has Addralign field that is set to the
alignment of the uncompressed section which makes section able to have
a different alignment than the decompressed section. However `file` and
other tools require both Chdr.Addralign and Addralign to be equal.

Ref https://sourceware.org/bugzilla/show_bug.cgi?id=23919
Related #42136

Fixes #51769

Change-Id: I3cf99dbd2359932576420a3c0d342c7e91b99227
Reviewed-on: https://go-review.googlesource.com/c/go/+/393916
Trust: mzh <mzh@golangcn.org>
Reviewed-by: Alessandro Arzilli <alessandro.arzilli@gmail.com>
Reviewed-by: Cherry Mui <cherryyz@google.com>
Run-TryBot: Cherry Mui <cherryyz@google.com>
TryBot-Result: Gopher Robot <gobot@golang.org>
Reviewed-by: Fangrui Song <maskray@google.com>
  • Loading branch information
mengzhuo authored and cherrymui committed Mar 21, 2022
1 parent b810a74 commit b9d6cea
Showing 1 changed file with 1 addition and 1 deletion.
2 changes: 1 addition & 1 deletion src/cmd/link/internal/ld/dwarf.go
Original file line number Diff line number Diff line change
Expand Up @@ -2234,7 +2234,7 @@ func dwarfcompress(ctxt *Link) {
compressedSegName = ".zdebug_" + ldr.SymSect(s).Name[len(".debug_"):]
}
sect := addsection(ctxt.loader, ctxt.Arch, &Segdwarf, compressedSegName, 04)
sect.Align = 1
sect.Align = int32(ctxt.Arch.Alignment)
sect.Length = uint64(len(z.compressed))
sect.Compressed = true
newSym := ldr.MakeSymbolBuilder(compressedSegName)
Expand Down

0 comments on commit b9d6cea

Please sign in to comment.