aboutsummaryrefslogtreecommitdiff
path: root/src/debug
diff options
context:
space:
mode:
authorAlex Brainman <alex.brainman@gmail.com>2020-03-09 17:49:13 +1100
committerAlex Brainman <alex.brainman@gmail.com>2020-03-10 08:18:53 +0000
commitda07c59f246dad0119c486559bee89c86a8fc952 (patch)
treed0a944bf95dbe9b0195a55ef5a95e6ce4c0edd37 /src/debug
parent38ad3baf0054e926136d8a2cfe6458f41b544841 (diff)
downloadgo-da07c59f246dad0119c486559bee89c86a8fc952.tar.gz
go-da07c59f246dad0119c486559bee89c86a8fc952.zip
debug/pe: copy some consts from cmd/link/internal/ld
This CL copies IMAGE_FILE_*, IMAGE_SUBSYSTEM_* and IMAGE_DLLCHARACTERISTICS_* consts from cmd/link/internal/ld package. The consts are also used in cmd/go and debug/pe tests. So avoid the duplication. The consts are defined in https://docs.microsoft.com/en-us/windows/win32/debug/pe-format and might be useful to other Go users. The CL also adds some related consts. RELNOTE=yes Change-Id: Iaa868deaffc7c61051f2273397f3e7e101880a5b Reviewed-on: https://go-review.googlesource.com/c/go/+/222637 Run-TryBot: Alex Brainman <alex.brainman@gmail.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Ian Lance Taylor <iant@golang.org>
Diffstat (limited to 'src/debug')
-rw-r--r--src/debug/pe/file_test.go10
-rw-r--r--src/debug/pe/pe.go53
2 files changed, 57 insertions, 6 deletions
diff --git a/src/debug/pe/file_test.go b/src/debug/pe/file_test.go
index bc41be2669..26a65941e1 100644
--- a/src/debug/pe/file_test.go
+++ b/src/debug/pe/file_test.go
@@ -621,16 +621,14 @@ func TestBuildingWindowsGUI(t *testing.T) {
}
defer f.Close()
- const _IMAGE_SUBSYSTEM_WINDOWS_GUI = 2
-
switch oh := f.OptionalHeader.(type) {
case *OptionalHeader32:
- if oh.Subsystem != _IMAGE_SUBSYSTEM_WINDOWS_GUI {
- t.Errorf("unexpected Subsystem value: have %d, but want %d", oh.Subsystem, _IMAGE_SUBSYSTEM_WINDOWS_GUI)
+ if oh.Subsystem != IMAGE_SUBSYSTEM_WINDOWS_GUI {
+ t.Errorf("unexpected Subsystem value: have %d, but want %d", oh.Subsystem, IMAGE_SUBSYSTEM_WINDOWS_GUI)
}
case *OptionalHeader64:
- if oh.Subsystem != _IMAGE_SUBSYSTEM_WINDOWS_GUI {
- t.Errorf("unexpected Subsystem value: have %d, but want %d", oh.Subsystem, _IMAGE_SUBSYSTEM_WINDOWS_GUI)
+ if oh.Subsystem != IMAGE_SUBSYSTEM_WINDOWS_GUI {
+ t.Errorf("unexpected Subsystem value: have %d, but want %d", oh.Subsystem, IMAGE_SUBSYSTEM_WINDOWS_GUI)
}
default:
t.Fatalf("unexpected OptionalHeader type: have %T, but want *pe.OptionalHeader32 or *pe.OptionalHeader64", oh)
diff --git a/src/debug/pe/pe.go b/src/debug/pe/pe.go
index 3f8099dfab..db112fe7ad 100644
--- a/src/debug/pe/pe.go
+++ b/src/debug/pe/pe.go
@@ -129,3 +129,56 @@ const (
IMAGE_DIRECTORY_ENTRY_DELAY_IMPORT = 13
IMAGE_DIRECTORY_ENTRY_COM_DESCRIPTOR = 14
)
+
+// Values of IMAGE_FILE_HEADER.Characteristics. These can be combined together.
+const (
+ IMAGE_FILE_RELOCS_STRIPPED = 0x0001
+ IMAGE_FILE_EXECUTABLE_IMAGE = 0x0002
+ IMAGE_FILE_LINE_NUMS_STRIPPED = 0x0004
+ IMAGE_FILE_LOCAL_SYMS_STRIPPED = 0x0008
+ IMAGE_FILE_AGGRESIVE_WS_TRIM = 0x0010
+ IMAGE_FILE_LARGE_ADDRESS_AWARE = 0x0020
+ IMAGE_FILE_BYTES_REVERSED_LO = 0x0080
+ IMAGE_FILE_32BIT_MACHINE = 0x0100
+ IMAGE_FILE_DEBUG_STRIPPED = 0x0200
+ IMAGE_FILE_REMOVABLE_RUN_FROM_SWAP = 0x0400
+ IMAGE_FILE_NET_RUN_FROM_SWAP = 0x0800
+ IMAGE_FILE_SYSTEM = 0x1000
+ IMAGE_FILE_DLL = 0x2000
+ IMAGE_FILE_UP_SYSTEM_ONLY = 0x4000
+ IMAGE_FILE_BYTES_REVERSED_HI = 0x8000
+)
+
+// OptionalHeader64.Subsystem and OptionalHeader32.Subsystem values.
+const (
+ IMAGE_SUBSYSTEM_UNKNOWN = 0
+ IMAGE_SUBSYSTEM_NATIVE = 1
+ IMAGE_SUBSYSTEM_WINDOWS_GUI = 2
+ IMAGE_SUBSYSTEM_WINDOWS_CUI = 3
+ IMAGE_SUBSYSTEM_OS2_CUI = 5
+ IMAGE_SUBSYSTEM_POSIX_CUI = 7
+ IMAGE_SUBSYSTEM_NATIVE_WINDOWS = 8
+ IMAGE_SUBSYSTEM_WINDOWS_CE_GUI = 9
+ IMAGE_SUBSYSTEM_EFI_APPLICATION = 10
+ IMAGE_SUBSYSTEM_EFI_BOOT_SERVICE_DRIVER = 11
+ IMAGE_SUBSYSTEM_EFI_RUNTIME_DRIVER = 12
+ IMAGE_SUBSYSTEM_EFI_ROM = 13
+ IMAGE_SUBSYSTEM_XBOX = 14
+ IMAGE_SUBSYSTEM_WINDOWS_BOOT_APPLICATION = 16
+)
+
+// OptionalHeader64.DllCharacteristics and OptionalHeader32.DllCharacteristics
+// values. These can be combined together.
+const (
+ IMAGE_DLLCHARACTERISTICS_HIGH_ENTROPY_VA = 0x0020
+ IMAGE_DLLCHARACTERISTICS_DYNAMIC_BASE = 0x0040
+ IMAGE_DLLCHARACTERISTICS_FORCE_INTEGRITY = 0x0080
+ IMAGE_DLLCHARACTERISTICS_NX_COMPAT = 0x0100
+ IMAGE_DLLCHARACTERISTICS_NO_ISOLATION = 0x0200
+ IMAGE_DLLCHARACTERISTICS_NO_SEH = 0x0400
+ IMAGE_DLLCHARACTERISTICS_NO_BIND = 0x0800
+ IMAGE_DLLCHARACTERISTICS_APPCONTAINER = 0x1000
+ IMAGE_DLLCHARACTERISTICS_WDM_DRIVER = 0x2000
+ IMAGE_DLLCHARACTERISTICS_GUARD_CF = 0x4000
+ IMAGE_DLLCHARACTERISTICS_TERMINAL_SERVER_AWARE = 0x8000
+)