]> Cypherpunks repositories - gostls13.git/commitdiff
cmd/link/internal/ld: don't set IMAGE_FILE_DEBUG_STRIPPED on PE binaries
authorqmuntal <quimmuntal@gmail.com>
Mon, 3 Apr 2023 08:01:43 +0000 (10:01 +0200)
committerQuim Muntal <quimmuntal@gmail.com>
Fri, 7 Apr 2023 11:34:41 +0000 (11:34 +0000)
The IMAGE_FILE_DEBUG_STRIPPED characteristic is used to inform that
the debugging information have been removed from the PE files and moved
into a DBG file, but the Go linker doesn't generate DBG files.

Having this characteristic can confuse debugging tools, so better
don't set it.

While here, remove also IMAGE_FILE_LINE_NUMS_STRIPPED, which is
deprecated and should be zero [1].

Fixes #59391

[1] https://learn.microsoft.com/en-us/windows/win32/debug/pe-format#characteristics

Change-Id: Ia6b1dc3353bfa292a17c4bef17c9bac8dc95189a
Reviewed-on: https://go-review.googlesource.com/c/go/+/481615
Reviewed-by: Alex Brainman <alex.brainman@gmail.com>
TryBot-Result: Gopher Robot <gobot@golang.org>
Reviewed-by: Than McIntosh <thanm@google.com>
Run-TryBot: Quim Muntal <quimmuntal@gmail.com>
Reviewed-by: Bryan Mills <bcmills@google.com>
src/cmd/link/internal/ld/pe.go

index 27f2b0305adac03cbde6496502b0c5e6563bf255..a3bb47d232e9a9aacd221543e1f6c29e394bf777 100644 (file)
@@ -888,10 +888,8 @@ func (f *peFile) writeFileHeader(ctxt *Link) {
        // much more beneficial than having build timestamp in the header.
        fh.TimeDateStamp = 0
 
-       if ctxt.LinkMode == LinkExternal {
-               fh.Characteristics = pe.IMAGE_FILE_LINE_NUMS_STRIPPED
-       } else {
-               fh.Characteristics = pe.IMAGE_FILE_EXECUTABLE_IMAGE | pe.IMAGE_FILE_DEBUG_STRIPPED
+       if ctxt.LinkMode != LinkExternal {
+               fh.Characteristics = pe.IMAGE_FILE_EXECUTABLE_IMAGE
                switch ctxt.Arch.Family {
                case sys.AMD64, sys.I386:
                        if ctxt.BuildMode != BuildModePIE {