aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorColin Cross <ccross@android.com>2018-03-03 03:52:06 +0000
committerandroid-build-merger <android-build-merger@google.com>2018-03-03 03:52:06 +0000
commitd2fc244b060ebd37f0ed8ee766fde151aea45fd6 (patch)
tree85dabae5bb3b43dc0eb72b9d525c34a936853b83
parent4c26b7818359207371fb26151a81854ab056d681 (diff)
parent4335ca3cd63217235c42b249dac81d9c530683cf (diff)
downloadbuild_soong-d2fc244b060ebd37f0ed8ee766fde151aea45fd6.tar.gz
build_soong-d2fc244b060ebd37f0ed8ee766fde151aea45fd6.tar.bz2
build_soong-d2fc244b060ebd37f0ed8ee766fde151aea45fd6.zip
Merge changes I6f7d40b7,I25654032 am: 83a495830b am: dfcdeec8b2
am: 4335ca3cd6 Change-Id: I9a9e3adfb61a27fc387f90bf56571ec5dbdf512d
-rw-r--r--cc/binary.go6
-rw-r--r--cc/libbuildversion/Android.bp12
-rw-r--r--cc/libbuildversion/include/build/version.h30
-rw-r--r--cc/libbuildversion/libbuildversion.cpp55
-rw-r--r--cc/libbuildversion/tests/Android.bp35
-rw-r--r--cc/libbuildversion/tests/build_version_test.cpp36
-rw-r--r--cc/libbuildversion/tests/build_version_test_lib.cpp23
-rw-r--r--cc/libbuildversion/tests/build_version_test_lib.h24
-rw-r--r--cc/library.go16
-rw-r--r--cc/linker.go36
-rw-r--r--cmd/symbol_inject/Android.bp9
-rw-r--r--cmd/symbol_inject/elf.go154
-rw-r--r--cmd/symbol_inject/elf_symboldata_test.go241
-rw-r--r--cmd/symbol_inject/elf_test.go63
-rw-r--r--cmd/symbol_inject/macho.go77
-rw-r--r--cmd/symbol_inject/macho_symboldata_test.go88
-rw-r--r--cmd/symbol_inject/macho_test.go64
-rw-r--r--cmd/symbol_inject/pe.go78
-rw-r--r--cmd/symbol_inject/pe_symboldata_test.go2102
-rw-r--r--cmd/symbol_inject/pe_test.go141
-rw-r--r--cmd/symbol_inject/symbol_inject.go193
-rw-r--r--cmd/symbol_inject/symbol_inject_test.go67
22 files changed, 3408 insertions, 142 deletions
diff --git a/cc/binary.go b/cc/binary.go
index 630a68df..7794eab6 100644
--- a/cc/binary.go
+++ b/cc/binary.go
@@ -323,6 +323,12 @@ func (binary *binaryDecorator) link(ctx ModuleContext,
flagsToBuilderFlags(flags), afterPrefixSymbols)
}
+ if Bool(binary.baseLinker.Properties.Use_version_lib) && ctx.Host() {
+ versionedOutputFile := outputFile
+ outputFile = android.PathForModuleOut(ctx, "unversioned", fileName)
+ binary.injectVersionSymbol(ctx, outputFile, versionedOutputFile)
+ }
+
linkerDeps = append(linkerDeps, deps.SharedLibsDeps...)
linkerDeps = append(linkerDeps, deps.LateSharedLibsDeps...)
linkerDeps = append(linkerDeps, objs.tidyFiles...)
diff --git a/cc/libbuildversion/Android.bp b/cc/libbuildversion/Android.bp
new file mode 100644
index 00000000..fd563e6d
--- /dev/null
+++ b/cc/libbuildversion/Android.bp
@@ -0,0 +1,12 @@
+cc_library_static {
+ name: "libbuildversion",
+ host_supported: true,
+ srcs: ["libbuildversion.cpp"],
+ export_include_dirs: ["include"],
+ cflags: ["-fvisibility=hidden"],
+ target: {
+ windows: {
+ enabled: true,
+ },
+ },
+}
diff --git a/cc/libbuildversion/include/build/version.h b/cc/libbuildversion/include/build/version.h
new file mode 100644
index 00000000..0cc60820
--- /dev/null
+++ b/cc/libbuildversion/include/build/version.h
@@ -0,0 +1,30 @@
+/*
+ * Copyright (C) 2018 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef BUILD_VERSION_H
+#define BUILD_VERSION_H
+
+#include <string>
+
+namespace android {
+namespace build {
+
+std::string GetBuildNumber();
+
+} // namespace build
+} // namespace android
+
+#endif // BUILD_VERSION_H
diff --git a/cc/libbuildversion/libbuildversion.cpp b/cc/libbuildversion/libbuildversion.cpp
new file mode 100644
index 00000000..d80d587c
--- /dev/null
+++ b/cc/libbuildversion/libbuildversion.cpp
@@ -0,0 +1,55 @@
+/*
+ * Copyright (C) 2018 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include <build/version.h>
+
+#ifdef __ANDROID__
+#include <sys/system_properties.h>
+#endif
+
+namespace android {
+namespace build {
+
+#ifdef __ANDROID__
+
+std::string GetBuildNumber() {
+ const prop_info* pi = __system_property_find("ro.build.version.incremental");
+ if (pi == nullptr) return "";
+
+ std::string property_value;
+ __system_property_read_callback(pi,
+ [](void* cookie, const char*, const char* value, unsigned) {
+ auto property_value = reinterpret_cast<std::string*>(cookie);
+ *property_value = value;
+ },
+ &property_value);
+
+ return property_value;
+}
+
+#else
+
+extern "C" {
+ char soong_build_number[128] = "SOONG BUILD NUMBER PLACEHOLDER";
+}
+
+std::string GetBuildNumber() {
+ return soong_build_number;
+}
+
+#endif
+} // namespace build
+} // namespace android
diff --git a/cc/libbuildversion/tests/Android.bp b/cc/libbuildversion/tests/Android.bp
new file mode 100644
index 00000000..a18bc6cc
--- /dev/null
+++ b/cc/libbuildversion/tests/Android.bp
@@ -0,0 +1,35 @@
+cc_defaults {
+ name: "build_version_test_defaults",
+ use_version_lib: true,
+ host_supported: true,
+ target: {
+ windows: {
+ enabled: true,
+ },
+ },
+}
+
+cc_test {
+ name: "build_version_test",
+ defaults: ["build_version_test_defaults"],
+ srcs: ["build_version_test.cpp"],
+ target: {
+ android: {
+ shared_libs: ["libbuild_version_test"],
+ },
+ not_windows: {
+ shared_libs: ["libbuild_version_test"],
+ },
+ },
+}
+
+cc_library_shared {
+ name: "libbuild_version_test",
+ defaults: ["build_version_test_defaults"],
+ srcs: ["build_version_test_lib.cpp"],
+ target: {
+ windows: {
+ enabled: false,
+ },
+ },
+}
diff --git a/cc/libbuildversion/tests/build_version_test.cpp b/cc/libbuildversion/tests/build_version_test.cpp
new file mode 100644
index 00000000..9a920654
--- /dev/null
+++ b/cc/libbuildversion/tests/build_version_test.cpp
@@ -0,0 +1,36 @@
+/*
+ * Copyright (C) 2018 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include <stdio.h>
+
+#include <gtest/gtest.h>
+
+#include <build/version.h>
+
+#include "build_version_test_lib.h"
+
+TEST(BuildNumber, binary) {
+ printf("binary version: %s\n", android::build::GetBuildNumber().c_str());
+ EXPECT_NE(android::build::GetBuildNumber(), "SOONG BUILD NUMBER PLACEHOLDER");
+}
+
+ // symbol_inject doesn't support dlls
+#ifndef __WIN32__
+TEST(BuildNumber, library) {
+ printf("shared library version: %s\n", LibGetBuildNumber().c_str());
+ EXPECT_NE(LibGetBuildNumber(), "SOONG BUILD NUMBER PLACEHOLDER");
+}
+#endif
diff --git a/cc/libbuildversion/tests/build_version_test_lib.cpp b/cc/libbuildversion/tests/build_version_test_lib.cpp
new file mode 100644
index 00000000..2876a63c
--- /dev/null
+++ b/cc/libbuildversion/tests/build_version_test_lib.cpp
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2018 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include <build/version.h>
+
+#include "build_version_test_lib.h"
+
+std::string LibGetBuildNumber() {
+ return android::build::GetBuildNumber();
+}
diff --git a/cc/libbuildversion/tests/build_version_test_lib.h b/cc/libbuildversion/tests/build_version_test_lib.h
new file mode 100644
index 00000000..ca975afe
--- /dev/null
+++ b/cc/libbuildversion/tests/build_version_test_lib.h
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2018 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef BUILD_VERSION_TEST_LIB_H_
+#define BUILD_VERSION_TEST_LIB_H_
+
+#include <string>
+
+std::string __attribute__((visibility("default"))) LibGetBuildNumber();
+
+#endif // BUILD_VERSION_TEST_LIB_H_
diff --git a/cc/library.go b/cc/library.go
index d3717dd9..6fe9ca4e 100644
--- a/cc/library.go
+++ b/cc/library.go
@@ -492,10 +492,16 @@ func (library *libraryDecorator) linkStatic(ctx ModuleContext,
library.objects = deps.WholeStaticLibObjs.Copy()
library.objects = library.objects.Append(objs)
- outputFile := android.PathForModuleOut(ctx,
- ctx.ModuleName()+library.MutatedProperties.VariantName+staticLibraryExtension)
+ fileName := ctx.ModuleName() + library.MutatedProperties.VariantName + staticLibraryExtension
+ outputFile := android.PathForModuleOut(ctx, fileName)
builderFlags := flagsToBuilderFlags(flags)
+ if Bool(library.baseLinker.Properties.Use_version_lib) && ctx.Host() {
+ versionedOutputFile := outputFile
+ outputFile = android.PathForModuleOut(ctx, "unversioned", fileName)
+ library.injectVersionSymbol(ctx, outputFile, versionedOutputFile)
+ }
+
TransformObjToStaticLib(ctx, library.objects.objFiles, builderFlags, outputFile, objs.tidyFiles)
library.coverageOutputFile = TransformCoverageFilesToLib(ctx, library.objects, builderFlags,
@@ -585,6 +591,12 @@ func (library *libraryDecorator) linkShared(ctx ModuleContext,
library.stripper.strip(ctx, outputFile, strippedOutputFile, builderFlags)
}
+ if Bool(library.baseLinker.Properties.Use_version_lib) && ctx.Host() {
+ versionedOutputFile := outputFile
+ outputFile = android.PathForModuleOut(ctx, "unversioned", fileName)
+ library.injectVersionSymbol(ctx, outputFile, versionedOutputFile)
+ }
+
sharedLibs := deps.SharedLibs
sharedLibs = append(sharedLibs, deps.LateSharedLibs...)
diff --git a/cc/linker.go b/cc/linker.go
index fae55425..bcedc8da 100644
--- a/cc/linker.go
+++ b/cc/linker.go
@@ -18,6 +18,7 @@ import (
"android/soong/android"
"fmt"
+ "github.com/google/blueprint"
"github.com/google/blueprint/proptools"
)
@@ -95,6 +96,9 @@ type BaseLinkerProperties struct {
Exclude_static_libs []string
}
}
+
+ // make android::build:GetBuildNumber() available containing the build ID.
+ Use_version_lib *bool `android:"arch_variant"`
}
func NewBaseLinker() *baseLinker {
@@ -136,6 +140,10 @@ func (linker *baseLinker) linkerDeps(ctx BaseModuleContext, deps Deps) Deps {
deps.ReexportSharedLibHeaders = append(deps.ReexportSharedLibHeaders, linker.Properties.Export_shared_lib_headers...)
deps.ReexportGeneratedHeaders = append(deps.ReexportGeneratedHeaders, linker.Properties.Export_generated_headers...)
+ if Bool(linker.Properties.Use_version_lib) {
+ deps.WholeStaticLibs = append(deps.WholeStaticLibs, "libbuildversion")
+ }
+
if ctx.useVndk() {
deps.SharedLibs = removeListFromList(deps.SharedLibs, linker.Properties.Target.Vendor.Exclude_shared_libs)
deps.ReexportSharedLibHeaders = removeListFromList(deps.ReexportSharedLibHeaders, linker.Properties.Target.Vendor.Exclude_shared_libs)
@@ -278,3 +286,31 @@ func (linker *baseLinker) link(ctx ModuleContext,
flags Flags, deps PathDeps, objs Objects) android.Path {
panic(fmt.Errorf("baseLinker doesn't know how to link"))
}
+
+// Injecting version symbols
+// Some host modules want a version number, but we don't want to rebuild it every time. Optionally add a step
+// after linking that injects a constant placeholder with the current version number.
+
+func init() {
+ pctx.HostBinToolVariable("symbolInjectCmd", "symbol_inject")
+}
+
+var injectVersionSymbol = pctx.AndroidStaticRule("injectVersionSymbol",
+ blueprint.RuleParams{
+ Command: "$symbolInjectCmd -i $in -o $out -s soong_build_number " +
+ "-from 'SOONG BUILD NUMBER PLACEHOLDER' -v $buildNumberFromFile",
+ CommandDeps: []string{"$symbolInjectCmd"},
+ },
+ "buildNumberFromFile")
+
+func (linker *baseLinker) injectVersionSymbol(ctx ModuleContext, in android.Path, out android.WritablePath) {
+ ctx.Build(pctx, android.BuildParams{
+ Rule: injectVersionSymbol,
+ Description: "inject version symbol",
+ Input: in,
+ Output: out,
+ Args: map[string]string{
+ "buildNumberFromFile": ctx.Config().BuildNumberFromFile(),
+ },
+ })
+}
diff --git a/cmd/symbol_inject/Android.bp b/cmd/symbol_inject/Android.bp
index 5f9c4a41..a2ea12bf 100644
--- a/cmd/symbol_inject/Android.bp
+++ b/cmd/symbol_inject/Android.bp
@@ -20,4 +20,13 @@ blueprint_go_binary {
"macho.go",
"pe.go",
],
+ testSrcs: [
+ "elf_symboldata_test.go",
+ "elf_test.go",
+ "macho_symboldata_test.go",
+ "macho_test.go",
+ "pe_symboldata_test.go",
+ "pe_test.go",
+ "symbol_inject_test.go",
+ ],
}
diff --git a/cmd/symbol_inject/elf.go b/cmd/symbol_inject/elf.go
index 12253f6a..d94877d4 100644
--- a/cmd/symbol_inject/elf.go
+++ b/cmd/symbol_inject/elf.go
@@ -20,57 +20,141 @@ import (
"io"
)
-func findElfSymbol(r io.ReaderAt, symbol string) (uint64, uint64, error) {
+type mockableElfFile interface {
+ Symbols() ([]elf.Symbol, error)
+ Sections() []elf.SectionHeader
+ Type() elf.Type
+}
+
+var _ mockableElfFile = elfFileWrapper{}
+
+type elfFileWrapper struct {
+ *elf.File
+}
+
+func (f elfFileWrapper) Sections() []elf.SectionHeader {
+ ret := make([]elf.SectionHeader, len(f.File.Sections))
+ for i, section := range f.File.Sections {
+ ret[i] = section.SectionHeader
+ }
+
+ return ret
+}
+
+func (f elfFileWrapper) Type() elf.Type {
+ return f.File.Type
+}
+
+type mockElfFile struct {
+ symbols []elf.Symbol
+ sections []elf.SectionHeader
+ t elf.Type
+}
+
+func (f mockElfFile) Sections() []elf.SectionHeader { return f.sections }
+func (f mockElfFile) Symbols() ([]elf.Symbol, error) { return f.symbols, nil }
+func (f mockElfFile) Type() elf.Type { return f.t }
+
+func elfSymbolsFromFile(r io.ReaderAt) (*File, error) {
elfFile, err := elf.NewFile(r)
if err != nil {
- return maxUint64, maxUint64, cantParseError{err}
+ return nil, cantParseError{err}
}
+ return extractElfSymbols(elfFileWrapper{elfFile})
+}
+func extractElfSymbols(elfFile mockableElfFile) (*File, error) {
symbols, err := elfFile.Symbols()
if err != nil {
- return maxUint64, maxUint64, err
+ return nil, err
}
- for _, s := range symbols {
- if elf.ST_TYPE(s.Info) != elf.STT_OBJECT {
+ file := &File{}
+
+ for _, section := range elfFile.Sections() {
+ file.Sections = append(file.Sections, &Section{
+ Name: section.Name,
+ Addr: section.Addr,
+ Offset: section.Offset,
+ Size: section.Size,
+ })
+ }
+
+ _ = elf.Section{}
+
+ for _, symbol := range symbols {
+ if elf.ST_TYPE(symbol.Info) != elf.STT_OBJECT {
+ continue
+ }
+ if symbol.Section == elf.SHN_UNDEF || symbol.Section >= elf.SHN_LORESERVE {
continue
}
- if s.Name == symbol {
- offset, err := calculateElfSymbolOffset(elfFile, s)
- if err != nil {
- return maxUint64, maxUint64, err
+ if int(symbol.Section) >= len(file.Sections) {
+ return nil, fmt.Errorf("invalid section index %d", symbol.Section)
+ }
+
+ section := file.Sections[symbol.Section]
+
+ var addr uint64
+ switch elfFile.Type() {
+ case elf.ET_REL:
+ // "In relocatable files, st_value holds a section offset for a defined symbol.
+ // That is, st_value is an offset from the beginning of the section that st_shndx identifies."
+ addr = symbol.Value
+ case elf.ET_EXEC, elf.ET_DYN:
+ // "In executable and shared object files, st_value holds a virtual address. To make these
+ // files’ symbols more useful for the dynamic linker, the section offset (file interpretation)
+ // gives way to a virtual address (memory interpretation) for which the section number is
+ // irrelevant."
+ if symbol.Value < section.Addr {
+ return nil, fmt.Errorf("symbol starts before the start of its section")
+ }
+ addr = symbol.Value - section.Addr
+ if addr+symbol.Size > section.Size {
+ return nil, fmt.Errorf("symbol extends past the end of its section")
}
- return offset, s.Size, nil
+ default:
+ return nil, fmt.Errorf("unsupported elf file type %d", elfFile.Type())
}
+
+ file.Symbols = append(file.Symbols, &Symbol{
+ Name: symbol.Name,
+ Addr: addr,
+ Size: symbol.Size,
+ Section: section,
+ })
}
- return maxUint64, maxUint64, fmt.Errorf("symbol not found")
+ return file, nil
}
-func calculateElfSymbolOffset(file *elf.File, symbol elf.Symbol) (uint64, error) {
- if symbol.Section == elf.SHN_UNDEF || int(symbol.Section) >= len(file.Sections) {
- return maxUint64, fmt.Errorf("invalid section index %d", symbol.Section)
+func dumpElfSymbols(r io.ReaderAt) error {
+ elfFile, err := elf.NewFile(r)
+ if err != nil {
+ return cantParseError{err}
}
- section := file.Sections[symbol.Section]
- switch file.Type {
- case elf.ET_REL:
- // "In relocatable files, st_value holds a section offset for a defined symbol.
- // That is, st_value is an offset from the beginning of the section that st_shndx identifies."
- return section.Offset + symbol.Value, nil
- case elf.ET_EXEC, elf.ET_DYN:
- // "In executable and shared object files, st_value holds a virtual address. To make these
- // files’ symbols more useful for the dynamic linker, the section offset (file interpretation)
- // gives way to a virtual address (memory interpretation) for which the section number is
- // irrelevant."
- if symbol.Value < section.Addr {
- return maxUint64, fmt.Errorf("symbol starts before the start of its section")
- }
- section_offset := symbol.Value - section.Addr
- if section_offset+symbol.Size > section.Size {
- return maxUint64, fmt.Errorf("symbol extends past the end of its section")
- }
- return section.Offset + section_offset, nil
- default:
- return maxUint64, fmt.Errorf("unsupported elf file type %d", file.Type)
+
+ symbols, err := elfFile.Symbols()
+ if err != nil {
+ return err
+ }
+
+ fmt.Println("mockElfFile{")
+ fmt.Printf("\tt: %#v,\n", elfFile.Type)
+
+ fmt.Println("\tsections: []elf.SectionHeader{")
+ for _, section := range elfFile.Sections {
+ fmt.Printf("\t\t%#v,\n", section.SectionHeader)
+ }
+ fmt.Println("\t},")
+
+ fmt.Println("\tsymbols: []elf.Symbol{")
+ for _, symbol := range symbols {
+ fmt.Printf("\t\t%#v,\n", symbol)
}
+ fmt.Println("\t},")
+
+ fmt.Println("}")
+
+ return nil
}
diff --git a/cmd/symbol_inject/elf_symboldata_test.go b/cmd/symbol_inject/elf_symboldata_test.go
new file mode 100644
index 00000000..9ba7153f
--- /dev/null
+++ b/cmd/symbol_inject/elf_symboldata_test.go
@@ -0,0 +1,241 @@
+// Copyright 2018 Google Inc. All rights reserved.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package main
+
+import "debug/elf"
+
+/* Generated from: clang -o a.out test.c
+
+#include <unistd.h>
+
+char soong_build_number[128] = "PLACEHOLDER";
+
+int main() {
+ write(STDOUT_FILENO, soong_build_number, sizeof(soong_build_number));
+}
+*/
+
+var elfSymbolTable1 = &mockElfFile{
+ t: elf.ET_EXEC,
+ sections: []elf.SectionHeader{
+ elf.SectionHeader{Name: "", Type: elf.SHT_NULL, Flags: 0x0, Addr: 0x0, Offset: 0x0, Size: 0x0, Link: 0x0, Info: 0x0, Addralign: 0x0, Entsize: 0x0, FileSize: 0x0},
+ elf.SectionHeader{Name: ".interp", Type: elf.SHT_PROGBITS, Flags: elf.SHF_ALLOC, Addr: 0x400238, Offset: 0x238, Size: 0x1c, Link: 0x0, Info: 0x0, Addralign: 0x1, Entsize: 0x0, FileSize: 0x1c},
+ elf.SectionHeader{Name: ".note.ABI-tag", Type: elf.SHT_NOTE, Flags: elf.SHF_ALLOC, Addr: 0x400254, Offset: 0x254, Size: 0x20, Link: 0x0, Info: 0x0, Addralign: 0x4, Entsize: 0x0, FileSize: 0x20},
+ elf.SectionHeader{Name: ".hash", Type: elf.SHT_HASH, Flags: elf.SHF_ALLOC, Addr: 0x400278, Offset: 0x278, Size: 0x24, Link: 0x4, Info: 0x0, Addralign: 0x8, Entsize: 0x4, FileSize: 0x24},
+ elf.SectionHeader{Name: ".dynsym", Type: elf.SHT_DYNSYM, Flags: elf.SHF_ALLOC, Addr: 0x4002a0, Offset: 0x2a0, Size: 0x60, Link: 0x5, Info: 0x1, Addralign: 0x8, Entsize: 0x18, FileSize: 0x60},
+ elf.SectionHeader{Name: ".dynstr", Type: elf.SHT_STRTAB, Flags: elf.SHF_ALLOC, Addr: 0x400300, Offset: 0x300, Size: 0x3e, Link: 0x0, Info: 0x0, Addralign: 0x1, Entsize: 0x0, FileSize: 0x3e},
+ elf.SectionHeader{Name: ".gnu.version", Type: elf.SHT_GNU_VERSYM, Flags: elf.SHF_ALLOC, Addr: 0x40033e, Offset: 0x33e, Size: 0x8, Link: 0x4, Info: 0x0, Addralign: 0x2, Entsize: 0x2, FileSize: 0x8},
+ elf.SectionHeader{Name: ".gnu.version_r", Type: elf.SHT_GNU_VERNEED, Flags: elf.SHF_ALLOC, Addr: 0x400348, Offset: 0x348, Size: 0x20, Link: 0x5, Info: 0x1, Addralign: 0x8, Entsize: 0x0, FileSize: 0x20},
+ elf.SectionHeader{Name: ".rela.dyn", Type: elf.SHT_RELA, Flags: elf.SHF_ALLOC, Addr: 0x400368, Offset: 0x368, Size: 0x30, Link: 0x4, Info: 0x0, Addralign: 0x8, Entsize: 0x18, FileSize: 0x30},
+ elf.SectionHeader{Name: ".rela.plt", Type: elf.SHT_RELA, Flags: elf.SHF_ALLOC + elf.SHF_INFO_LINK, Addr: 0x400398, Offset: 0x398, Size: 0x18, Link: 0x4, Info: 0x16, Addralign: 0x8, Entsize: 0x18, FileSize: 0x18},
+ elf.SectionHeader{Name: ".init", Type: elf.SHT_PROGBITS, Flags: elf.SHF_ALLOC + elf.SHF_EXECINSTR, Addr: 0x4003b0, Offset: 0x3b0, Size: 0x17, Link: 0x0, Info: 0x0, Addralign: 0x4, Entsize: 0x0, FileSize: 0x17},
+ elf.SectionHeader{Name: ".plt", Type: elf.SHT_PROGBITS, Flags: elf.SHF_ALLOC + elf.SHF_EXECINSTR, Addr: 0x4003d0, Offset: 0x3d0, Size: 0x20, Link: 0x0, Info: 0x0, Addralign: 0x10, Entsize: 0x10, FileSize: 0x20},
+ elf.SectionHeader{Name: ".text", Type: elf.SHT_PROGBITS, Flags: elf.SHF_ALLOC + elf.SHF_EXECINSTR, Addr: 0x4003f0, Offset: 0x3f0, Size: 0x1b2, Link: 0x0, Info: 0x0, Addralign: 0x10, Entsize: 0x0, FileSize: 0x1b2},
+ elf.SectionHeader{Name: ".fini", Type: elf.SHT_PROGBITS, Flags: elf.SHF_ALLOC + elf.SHF_EXECINSTR, Addr: 0x4005a4, Offset: 0x5a4, Size: 0x9, Link: 0x0, Info: 0x0, Addralign: 0x4, Entsize: 0x0, FileSize: 0x9},
+ elf.SectionHeader{Name: ".rodata", Type: elf.SHT_PROGBITS, Flags: elf.SHF_ALLOC + elf.SHF_MERGE, Addr: 0x4005b0, Offset: 0x5b0, Size: 0x4, Link: 0x0, Info: 0x0, Addralign: 0x4, Entsize: 0x4, FileSize: 0x4},
+ elf.SectionHeader{Name: ".eh_frame_hdr", Type: elf.SHT_PROGBITS, Flags: elf.SHF_ALLOC, Addr: 0x4005b4, Offset: 0x5b4, Size: 0x34, Link: 0x0, Info: 0x0, Addralign: 0x4, Entsize: 0x0, FileSize: 0x34},
+ elf.SectionHeader{Name: ".eh_frame", Type: elf.SHT_PROGBITS, Flags: elf.SHF_ALLOC, Addr: 0x4005e8, Offset: 0x5e8, Size: 0xf0, Link: 0x0, Info: 0x0, Addralign: 0x8, Entsize: 0x0, FileSize: 0xf0},
+ elf.SectionHeader{Name: ".init_array", Type: elf.SHT_INIT_ARRAY, Flags: elf.SHF_WRITE + elf.SHF_ALLOC, Addr: 0x600e08, Offset: 0xe08, Size: 0x8, Link: 0x0, Info: 0x0, Addralign: 0x8, Entsize: 0x8, FileSize: 0x8},
+ elf.SectionHeader{Name: ".fini_array", Type: elf.SHT_FINI_ARRAY, Flags: elf.SHF_WRITE + elf.SHF_ALLOC, Addr: 0x600e10, Offset: 0xe10, Size: 0x8, Link: 0x0, Info: 0x0, Addralign: 0x8, Entsize: 0x8, FileSize: 0x8},
+ elf.SectionHeader{Name: ".jcr", Type: elf.SHT_PROGBITS, Flags: elf.SHF_WRITE + elf.SHF_ALLOC, Addr: 0x600e18, Offset: 0xe18, Size: 0x8, Link: 0x0, Info: 0x0, Addralign: 0x8, Entsize: 0x0, FileSize: 0x8},
+ elf.SectionHeader{Name: ".dynamic", Type: elf.SHT_DYNAMIC, Flags: elf.SHF_WRITE + elf.SHF_ALLOC, Addr: 0x600e20, Offset: 0xe20, Size: 0x1d0, Link: 0x5, Info: 0x0, Addralign: 0x8, Entsize: 0x10, FileSize: 0x1d0},
+ elf.SectionHeader{Name: ".got", Type: elf.SHT_PROGBITS, Flags: elf.SHF_WRITE + elf.SHF_ALLOC, Addr: 0x600ff0, Offset: 0xff0, Size: 0x10, Link: 0x0, Info: 0x0, Addralign: 0x8, Entsize: 0x8, FileSize: 0x10},
+ elf.SectionHeader{Name: ".got.plt", Type: elf.SHT_PROGBITS, Flags: elf.SHF_WRITE + elf.SHF_ALLOC, Addr: 0x601000, Offset: 0x1000, Size: 0x20, Link: 0x0, Info: 0x0, Addralign: 0x8, Entsize: 0x8, FileSize: 0x20},
+ elf.SectionHeader{Name: ".data", Type: elf.SHT_PROGBITS, Flags: elf.SHF_WRITE + elf.SHF_ALLOC, Addr: 0x601020, Offset: 0x1020, Size: 0x90, Link: 0x0, Info: 0x0, Addralign: 0x10, Entsize: 0x0, FileSize: 0x90},
+ elf.SectionHeader{Name: ".bss", Type: elf.SHT_NOBITS, Flags: elf.SHF_WRITE + elf.SHF_ALLOC, Addr: 0x6010b0, Offset: 0x10b0, Size: 0x8, Link: 0x0, Info: 0x0, Addralign: 0x1, Entsize: 0x0, FileSize: 0x8},
+ elf.SectionHeader{Name: ".comment", Type: elf.SHT_PROGBITS, Flags: elf.SHF_MERGE + elf.SHF_STRINGS, Addr: 0x0, Offset: 0x10b0, Size: 0x56, Link: 0x0, Info: 0x0, Addralign: 0x1, Entsize: 0x1, FileSize: 0x56},
+ elf.SectionHeader{Name: ".symtab", Type: elf.SHT_SYMTAB, Flags: 0x0, Addr: 0x0, Offset: 0x1108, Size: 0x5e8, Link: 0x1b, Info: 0x2d, Addralign: 0x8, Entsize: 0x18, FileSize: 0x5e8},
+ elf.SectionHeader{Name: ".strtab", Type: elf.SHT_STRTAB, Flags: 0x0, Addr: 0x0, Offset: 0x16f0, Size: 0x1dd, Link: 0x0, Info: 0x0, Addralign: 0x1, Entsize: 0x0, FileSize: 0x1dd},
+ elf.SectionHeader{Name: ".shstrtab", Type: elf.SHT_STRTAB, Flags: 0x0, Addr: 0x0, Offset: 0x18cd, Size: 0xf1, Link: 0x0, Info: 0x0, Addralign: 0x1, Entsize: 0x0, FileSize: 0xf1},
+ },
+ symbols: []elf.Symbol{
+ elf.Symbol{Name: "", Info: 0x3, Other: 0x0, Section: elf.SHN_UNDEF + 1, Value: 0x400238, Size: 0x0},
+ elf.Symbol{Name: "", Info: 0x3, Other: 0x0, Section: elf.SHN_UNDEF + 2, Value: 0x400254, Size: 0x0},
+ elf.Symbol{Name: "", Info: 0x3, Other: 0x0, Section: elf.SHN_UNDEF + 3, Value: 0x400278, Size: 0x0},
+ elf.Symbol{Name: "", Info: 0x3, Other: 0x0, Section: elf.SHN_UNDEF + 4, Value: 0x4002a0, Size: 0x0},
+ elf.Symbol{Name: "", Info: 0x3, Other: 0x0, Section: elf.SHN_UNDEF + 5, Value: 0x400300, Size: 0x0},
+ elf.Symbol{Name: "", Info: 0x3, Other: 0x0, Section: elf.SHN_UNDEF + 6, Value: 0x40033e, Size: 0x0},
+ elf.Symbol{Name: "", Info: 0x3, Other: 0x0, Section: elf.SHN_UNDEF + 7, Value: 0x400348, Size: 0x0},
+ elf.Symbol{Name: "", Info: 0x3, Other: 0x0, Section: elf.SHN_UNDEF + 8, Value: 0x400368, Size: 0x0},
+ elf.Symbol{Name: "", Info: 0x3, Other: 0x0, Section: elf.SHN_UNDEF + 9, Value: 0x400398, Size: 0x0},
+ elf.Symbol{Name: "", Info: 0x3, Other: 0x0, Section: elf.SHN_UNDEF + 10, Value: 0x4003b0, Size: 0x0},
+ elf.Symbol{Name: "", Info: 0x3, Other: 0x0, Section: elf.SHN_UNDEF + 11, Value: 0x4003d0, Size: 0x0},
+ elf.Symbol{Name: "", Info: 0x3, Other: 0x0, Section: elf.SHN_UNDEF + 12, Value: 0x4003f0, Size: 0x0},
+ elf.Symbol{Name: "", Info: 0x3, Other: 0x0, Section: elf.SHN_UNDEF + 13, Value: 0x4005a4, Size: 0x0},
+ elf.Symbol{Name: "", Info: 0x3, Other: 0x0, Section: elf.SHN_UNDEF + 14, Value: 0x4005b0, Size: 0x0},
+ elf.Symbol{Name: "", Info: 0x3, Other: 0x0, Section: elf.SHN_UNDEF + 15, Value: 0x4005b4, Size: 0x0},
+ elf.Symbol{Name: "", Info: 0x3, Other: 0x0, Section: elf.SHN_UNDEF + 16, Value: 0x4005e8, Size: 0x0},
+ elf.Symbol{Name: "", Info: 0x3, Other: 0x0, Section: elf.SHN_UNDEF + 17, Value: 0x600e08, Size: 0x0},
+ elf.Symbol{Name: "", Info: 0x3, Other: 0x0, Section: elf.SHN_UNDEF + 18, Value: 0x600e10, Size: 0x0},
+ elf.Symbol{Name: "", Info: 0x3, Other: 0x0, Section: elf.SHN_UNDEF + 19, Value: 0x600e18, Size: 0x0},
+ elf.Symbol{Name: "", Info: 0x3, Other: 0x0, Section: elf.SHN_UNDEF + 20, Value: 0x600e20, Size: 0x0},
+ elf.Symbol{Name: "", Info: 0x3, Other: 0x0, Section: elf.SHN_UNDEF + 21, Value: 0x600ff0, Size: 0x0},
+ elf.Symbol{Name: "", Info: 0x3, Other: 0x0, Section: elf.SHN_UNDEF + 22, Value: 0x601000, Size: 0x0},
+ elf.Symbol{Name: "", Info: 0x3, Other: 0x0, Section: elf.SHN_UNDEF + 23, Value: 0x601020, Size: 0x0},
+ elf.Symbol{Name: "", Info: 0x3, Other: 0x0, Section: elf.SHN_UNDEF + 24, Value: 0x6010b0, Size: 0x0},
+ elf.Symbol{Name: "", Info: 0x3, Other: 0x0, Section: elf.SHN_UNDEF + 25, Value: 0x0, Size: 0x0},
+ elf.Symbol{Name: "crtstuff.c", Info: 0x4, Other: 0x0, Section: elf.SHN_ABS, Value: 0x0, Size: 0x0},
+ elf.Symbol{Name: "__JCR_LIST__", Info: 0x1, Other: 0x0, Section: elf.SHN_UNDEF + 19, Value: 0x600e18, Size: 0x0},
+ elf.Symbol{Name: "deregister_tm_clones", Info: 0x2, Other: 0x0, Section: elf.SHN_UNDEF + 12, Value: 0x400420, Size: 0x0},
+ elf.Symbol{Name: "register_tm_clones", Info: 0x2, Other: 0x0, Section: elf.SHN_UNDEF + 12, Value: 0x400460, Size: 0x0},
+ elf.Symbol{Name: "__do_global_dtors_aux", Info: 0x2, Other: 0x0, Section: elf.SHN_UNDEF + 12, Value: 0x4004a0, Size: 0x0},
+ elf.Symbol{Name: "completed.6963", Info: 0x1, Other: 0x0, Section: elf.SHN_UNDEF + 24, Value: 0x6010b0, Size: 0x1},
+ elf.Symbol{Name: "__do_global_dtors_aux_fini_array_entry", Info: 0x1, Other: 0x0, Section: elf.SHN_UNDEF + 18, Value: 0x600e10, Size: 0x0},
+ elf.Symbol{Name: "frame_dummy", Info: 0x2, Other: 0x0, Section: elf.SHN_UNDEF + 12, Value: 0x4004c0, Size: 0x0},
+ elf.Symbol{Name: "__frame_dummy_init_array_entry", Info: 0x1, Other: 0x0, Section: elf.SHN_UNDEF + 17, Value: 0x600e08, Size: 0x0},
+ elf.Symbol{Name: "test.c", Info: 0x4, Other: 0x0, Section: elf.SHN_ABS, Value: 0x0, Size: 0x0},
+ elf.Symbol{Name: "crtstuff.c", Info: 0x4, Other: 0x0, Section: elf.SHN_ABS, Value: 0x0, Size: 0x0},
+ elf.Symbol{Name: "__FRAME_END__", Info: 0x1, Other: 0x0, Section: elf.SHN_UNDEF + 16, Value: 0x4006d4, Size: 0x0},
+ elf.Symbol{Name: "__JCR_END__", Info: 0x1, Other: 0x0, Section: elf.SHN_UNDEF + 19, Value: 0x600e18, Size: 0x0},
+ elf.Symbol{Name: "", Info: 0x4, Other: 0x0, Section: elf.SHN_ABS, Value: 0x0, Size: 0x0},
+ elf.Symbol{Name: "__init_array_end", Info: 0x0, Other: 0x0, Section: elf.SHN_UNDEF + 17, Value: 0x600e10, Size: 0x0},
+ elf.Symbol{Name: "_DYNAMIC", Info: 0x1, Other: 0x0, Section: elf.SHN_UNDEF + 20, Value: 0x600e20, Size: 0x0},
+ elf.Symbol{Name: "__init_array_start", Info: 0x0, Other: 0x0, Section: elf.SHN_UNDEF + 17, Value: 0x600e08, Size: 0x0},
+ elf.Symbol{Name: "__GNU_EH_FRAME_HDR", Info: 0x0, Other: 0x0, Section: elf.SHN_UNDEF + 15, Value: 0x4005b4, Size: 0x0},
+ elf.Symbol{Name: "_GLOBAL_OFFSET_TABLE_", Info: 0x1, Other: 0x0, Section: elf.SHN_UNDEF + 22, Value: 0x601000, Size: 0x0},
+ elf.Symbol{Name: "__libc_csu_fini", Info: 0x12, Other: 0x0, Section: elf.SHN_UNDEF + 12, Value: 0x4005a0, Size: 0x2},
+ elf.Symbol{Name: "soong_build_number", Info: 0x11, Other: 0x0, Section: elf.SHN_UNDEF + 23, Value: 0x601030, Size: 0x80},
+ elf.Symbol{Name: "data_start", Info: 0x20, Other: 0x0, Section: elf.SHN_UNDEF + 23, Value: 0x601020, Size: 0x0},
+ elf.Symbol{Name: "write@@GLIBC_2.2.5", Info: 0x12, Other: 0x0, Section: elf.SHN_UNDEF, Value: 0x0, Size: 0x0},
+ elf.Symbol{Name: "_edata", Info: 0x10, Other: 0x0, Section: elf.SHN_UNDEF + 23, Value: 0x6010b0, Size: 0x0},
+ elf.Symbol{Name: "_fini", Info: 0x12, Other: 0x0, Section: elf.SHN_UNDEF + 13, Value: 0x4005a4, Size: 0x0},
+ elf.Symbol{Name: "__libc_start_main@@GLIBC_2.2.5", Info: 0x12, Other: 0x0, Section: elf.SHN_UNDEF, Value: 0x0, Size: 0x0},
+ elf.Symbol{Name: "__data_start", Info: 0x10, Other: 0x0, Section: elf.SHN_UNDEF + 23, Value: 0x601020, Size: 0x0},
+ elf.Symbol{Name: "__gmon_start__", Info: 0x20, Other: 0x0, Section: elf.SHN_UNDEF, Value: 0x0, Size: 0x0},
+ elf.Symbol{Name: "__dso_handle", Info: 0x11, Other: 0x2, Section: elf.SHN_UNDEF + 23, Value: 0x601028, Size: 0x0},
+ elf.Symbol{Name: "_IO_stdin_used", Info: 0x11, Other: 0x0, Section: elf.SHN_UNDEF + 14, Value: 0x4005b0, Size: 0x4},
+ elf.Symbol{Name: "__libc_csu_init", Info: 0x12, Other: 0x0, Section: elf.SHN_UNDEF + 12, Value: 0x400530, Size: 0x65},
+ elf.Symbol{Name: "_end", Info: 0x10, Other: 0x0, Section: elf.SHN_UNDEF + 24, Value: 0x6010b8, Size: 0x0},
+ elf.Symbol{Name: "_start", Info: 0x12, Other: 0x0, Section: elf.SHN_UNDEF + 12, Value: 0x4003f0, Size: 0x2b},
+ elf.Symbol{Name: "__bss_start", Info: 0x10, Other: 0x0, Section: elf.SHN_UNDEF + 24, Value: 0x6010b0, Size: 0x0},
+ elf.Symbol{Name: "main", Info: 0x12, Other: 0x0, Section: elf.SHN_UNDEF + 12, Value: 0x4004f0, Size: 0x31},
+ elf.Symbol{Name: "__TMC_END__", Info: 0x11, Other: 0x2, Section: elf.SHN_UNDEF + 23, Value: 0x6010b0, Size: 0x0},
+ elf.Symbol{Name: "_init", Info: 0x12, Other: 0x0, Section: elf.SHN_UNDEF + 10, Value: 0x4003b0, Size: 0x0},
+ },
+}
+
+/* Generated from: clang -o a.out test2.c
+
+#include <unistd.h>
+
+char symbol1[128] = "PLACEHOLDER1";
+char symbol2[128] = "PLACEHOLDER2";
+
+int main() {
+ write(STDOUT_FILENO, symbol1, sizeof(symbol1));
+ write(STDOUT_FILENO, symbol2, sizeof(symbol2));
+}
+
+*/
+
+var elfSymbolTable2 = &mockElfFile{
+ t: elf.ET_EXEC,
+ sections: []elf.SectionHeader{
+ elf.SectionHeader{Name: "", Type: elf.SHT_NULL, Flags: 0x0, Addr: 0x0, Offset: 0x0, Size: 0x0, Link: 0x0, Info: 0x0, Addralign: 0x0, Entsize: 0x0, FileSize: 0x0},
+ elf.SectionHeader{Name: ".interp", Type: elf.SHT_PROGBITS, Flags: elf.SHF_ALLOC, Addr: 0x400238, Offset: 0x238, Size: 0x1c, Link: 0x0, Info: 0x0, Addralign: 0x1, Entsize: 0x0, FileSize: 0x1c},
+ elf.SectionHeader{Name: ".note.ABI-tag", Type: elf.SHT_NOTE, Flags: elf.SHF_ALLOC, Addr: 0x400254, Offset: 0x254, Size: 0x20, Link: 0x0, Info: 0x0, Addralign: 0x4, Entsize: 0x0, FileSize: 0x20},
+ elf.SectionHeader{Name: ".hash", Type: elf.SHT_HASH, Flags: elf.SHF_ALLOC, Addr: 0x400278, Offset: 0x278, Size: 0x24, Link: 0x4, Info: 0x0, Addralign: 0x8, Entsize: 0x4, FileSize: 0x24},
+ elf.SectionHeader{Name: ".dynsym", Type: elf.SHT_DYNSYM, Flags: elf.SHF_ALLOC, Addr: 0x4002a0, Offset: 0x2a0, Size: 0x60, Link: 0x5, Info: 0x1, Addralign: 0x8, Entsize: 0x18, FileSize: 0x60},
+ elf.SectionHeader{Name: ".dynstr", Type: elf.SHT_STRTAB, Flags: elf.SHF_ALLOC, Addr: 0x400300, Offset: 0x300, Size: 0x3e, Link: 0x0, Info: 0x0, Addralign: 0x1, Entsize: 0x0, FileSize: 0x3e},
+ elf.SectionHeader{Name: ".gnu.version", Type: elf.SHT_GNU_VERSYM, Flags: elf.SHF_ALLOC, Addr: 0x40033e, Offset: 0x33e, Size: 0x8, Link: 0x4, Info: 0x0, Addralign: 0x2, Entsize: 0x2, FileSize: 0x8},
+ elf.SectionHeader{Name: ".gnu.version_r", Type: elf.SHT_GNU_VERNEED, Flags: elf.SHF_ALLOC, Addr: 0x400348, Offset: 0x348, Size: 0x20, Link: 0x5, Info: 0x1, Addralign: 0x8, Entsize: 0x0, FileSize: 0x20},
+ elf.SectionHeader{Name: ".rela.dyn", Type: elf.SHT_RELA, Flags: elf.SHF_ALLOC, Addr: 0x400368, Offset: 0x368, Size: 0x30, Link: 0x4, Info: 0x0, Addralign: 0x8, Entsize: 0x18, FileSize: 0x30},
+ elf.SectionHeader{Name: ".rela.plt", Type: elf.SHT_RELA, Flags: elf.SHF_ALLOC + elf.SHF_INFO_LINK, Addr: 0x400398, Offset: 0x398, Size: 0x18, Link: 0x4, Info: 0x16, Addralign: 0x8, Entsize: 0x18, FileSize: 0x18},
+ elf.SectionHeader{Name: ".init", Type: elf.SHT_PROGBITS, Flags: elf.SHF_ALLOC + elf.SHF_EXECINSTR, Addr: 0x4003b0, Offset: 0x3b0, Size: 0x17, Link: 0x0, Info: 0x0, Addralign: 0x4, Entsize: 0x0, FileSize: 0x17},
+ elf.SectionHeader{Name: ".plt", Type: elf.SHT_PROGBITS, Flags: elf.SHF_ALLOC + elf.SHF_EXECINSTR, Addr: 0x4003d0, Offset: 0x3d0, Size: 0x20, Link: 0x0, Info: 0x0, Addralign: 0x10, Entsize: 0x10, FileSize: 0x20},
+ elf.SectionHeader{Name: ".text", Type: elf.SHT_PROGBITS, Flags: elf.SHF_ALLOC + elf.SHF_EXECINSTR, Addr: 0x4003f0, Offset: 0x3f0, Size: 0x1c2, Link: 0x0, Info: 0x0, Addralign: 0x10, Entsize: 0x0, FileSize: 0x1c2},
+ elf.SectionHeader{Name: ".fini", Type: elf.SHT_PROGBITS, Flags: elf.SHF_ALLOC + elf.SHF_EXECINSTR, Addr: 0x4005b4, Offset: 0x5b4, Size: 0x9, Link: 0x0, Info: 0x0, Addralign: 0x4, Entsize: 0x0, FileSize: 0x9},
+ elf.SectionHeader{Name: ".rodata", Type: elf.SHT_PROGBITS, Flags: elf.SHF_ALLOC + elf.SHF_MERGE, Addr: 0x4005c0, Offset: 0x5c0, Size: 0x4, Link: 0x0, Info: 0x0, Addralign: 0x4, Entsize: 0x4, FileSize: 0x4},
+ elf.SectionHeader{Name: ".eh_frame_hdr", Type: elf.SHT_PROGBITS, Flags: elf.SHF_ALLOC, Addr: 0x4005c4, Offset: 0x5c4, Size: 0x34, Link: 0x0, Info: 0x0, Addralign: 0x4, Entsize: 0x0, FileSize: 0x34},
+ elf.SectionHeader{Name: ".eh_frame", Type: elf.SHT_PROGBITS, Flags: elf.SHF_ALLOC, Addr: 0x4005f8, Offset: 0x5f8, Size: 0xf0, Link: 0x0, Info: 0x0, Addralign: 0x8, Entsize: 0x0, FileSize: 0xf0},
+ elf.SectionHeader{Name: ".init_array", Type: elf.SHT_INIT_ARRAY, Flags: elf.SHF_WRITE + elf.SHF_ALLOC, Addr: 0x600e08, Offset: 0xe08, Size: 0x8, Link: 0x0, Info: 0x0, Addralign: 0x8, Entsize: 0x8, FileSize: 0x8},
+ elf.SectionHeader{Name: ".fini_array", Type: elf.SHT_FINI_ARRAY, Flags: elf.SHF_WRITE + elf.SHF_ALLOC, Addr: 0x600e10, Offset: 0xe10, Size: 0x8, Link: 0x0, Info: 0x0, Addralign: 0x8, Entsize: 0x8, FileSize: 0x8},
+ elf.SectionHeader{Name: ".jcr", Type: elf.SHT_PROGBITS, Flags: elf.SHF_WRITE + elf.SHF_ALLOC, Addr: 0x600e18, Offset: 0xe18, Size: 0x8, Link: 0x0, Info: 0x0, Addralign: 0x8, Entsize: 0x0, FileSize: 0x8},
+ elf.SectionHeader{Name: ".dynamic", Type: elf.SHT_DYNAMIC, Flags: elf.SHF_WRITE + elf.SHF_ALLOC, Addr: 0x600e20, Offset: 0xe20, Size: 0x1d0, Link: 0x5, Info: 0x0, Addralign: 0x8, Entsize: 0x10, FileSize: 0x1d0},
+ elf.SectionHeader{Name: ".got", Type: elf.SHT_PROGBITS, Flags: elf.SHF_WRITE + elf.SHF_ALLOC, Addr: 0x600ff0, Offset: 0xff0, Size: 0x10, Link: 0x0, Info: 0x0, Addralign: 0x8, Entsize: 0x8, FileSize: 0x10},
+ elf.SectionHeader{Name: ".got.plt", Type: elf.SHT_PROGBITS, Flags: elf.SHF_WRITE + elf.SHF_ALLOC, Addr: 0x601000, Offset: 0x1000, Size: 0x20, Link: 0x0, Info: 0x0, Addralign: 0x8, Entsize: 0x8, FileSize: 0x20},
+ elf.SectionHeader{Name: ".data", Type: elf.SHT_PROGBITS, Flags: elf.SHF_WRITE + elf.SHF_ALLOC, Addr: 0x601020, Offset: 0x1020, Size: 0x110, Link: 0x0, Info: 0x0, Addralign: 0x10, Entsize: 0x0, FileSize: 0x110},
+ elf.SectionHeader{Name: ".bss", Type: elf.SHT_NOBITS, Flags: elf.SHF_WRITE + elf.SHF_ALLOC, Addr: 0x601130, Offset: 0x1130, Size: 0x8, Link: 0x0, Info: 0x0, Addralign: 0x1, Entsize: 0x0, FileSize: 0x8},
+ elf.SectionHeader{Name: ".comment", Type: elf.SHT_PROGBITS, Flags: elf.SHF_MERGE + elf.SHF_STRINGS, Addr: 0x0, Offset: 0x1130, Size: 0x56, Link: 0x0, Info: 0x0, Addralign: 0x1, Entsize: 0x1, FileSize: 0x56},
+ elf.SectionHeader{Name: ".symtab", Type: elf.SHT_SYMTAB, Flags: 0x0, Addr: 0x0, Offset: 0x1188, Size: 0x600, Link: 0x1b, Info: 0x2d, Addralign: 0x8, Entsize: 0x18, FileSize: 0x600},
+ elf.SectionHeader{Name: ".strtab", Type: elf.SHT_STRTAB, Flags: 0x0, Addr: 0x0, Offset: 0x1788, Size: 0x1db, Link: 0x0, Info: 0x0, Addralign: 0x1, Entsize: 0x0, FileSize: 0x1db},
+ elf.SectionHeader{Name: ".shstrtab", Type: elf.SHT_STRTAB, Flags: 0x0, Addr: 0x0, Offset: 0x1963, Size: 0xf1, Link: 0x0, Info: 0x0, Addralign: 0x1, Entsize: 0x0, FileSize: 0xf1},
+ },
+ symbols: []elf.Symbol{
+ elf.Symbol{Name: "", Info: 0x3, Other: 0x0, Section: elf.SHN_UNDEF + 1, Value: 0x400238, Size: 0x0},
+ elf.Symbol{Name: "", Info: 0x3, Other: 0x0, Section: elf.SHN_UNDEF + 2, Value: 0x400254, Size: 0x0},
+ elf.Symbol{Name: "", Info: 0x3, Other: 0x0, Section: elf.SHN_UNDEF + 3, Value: 0x400278, Size: 0x0},
+ elf.Symbol{Name: "", Info: 0x3, Other: 0x0, Section: elf.SHN_UNDEF + 4, Value: 0x4002a0, Size: 0x0},
+ elf.Symbol{Name: "", Info: 0x3, Other: 0x0, Section: elf.SHN_UNDEF + 5, Value: 0x400300, Size: 0x0},
+ elf.Symbol{Name: "", Info: 0x3, Other: 0x0, Section: elf.SHN_UNDEF + 6, Value: 0x40033e, Size: 0x0},
+ elf.Symbol{Name: "", Info: 0x3, Other: 0x0, Section: elf.SHN_UNDEF + 7, Value: 0x400348, Size: 0x0},
+ elf.Symbol{Name: "", Info: 0x3, Other: 0x0, Section: elf.SHN_UNDEF + 8, Value: 0x400368, Size: 0x0},
+ elf.Symbol{Name: "", Info: 0x3, Other: 0x0, Section: elf.SHN_UNDEF + 9, Value: 0x400398, Size: 0x0},
+ elf.Symbol{Name: "", Info: 0x3, Other: 0x0, Section: elf.SHN_UNDEF + 10, Value: 0x4003b0, Size: 0x0},
+ elf.Symbol{Name: "", Info: 0x3, Other: 0x0, Section: elf.SHN_UNDEF + 11, Value: 0x4003d0, Size: 0x0},
+ elf.Symbol{Name: "", Info: 0x3, Other: 0x0, Section: elf.SHN_UNDEF + 12, Value: 0x4003f0, Size: 0x0},
+ elf.Symbol{Name: "", Info: 0x3, Other: 0x0, Section: elf.SHN_UNDEF + 13, Value: 0x4005b4, Size: 0x0},
+ elf.Symbol{Name: "", Info: 0x3, Other: 0x0, Section: elf.SHN_UNDEF + 14, Value: 0x4005c0, Size: 0x0},
+ elf.Symbol{Name: "", Info: 0x3, Other: 0x0, Section: elf.SHN_UNDEF + 15, Value: 0x4005c4, Size: 0x0},
+ elf.Symbol{Name: "", Info: 0x3, Other: 0x0, Section: elf.SHN_UNDEF + 16, Value: 0x4005f8, Size: 0x0},
+ elf.Symbol{Name: "", Info: 0x3, Other: 0x0, Section: elf.SHN_UNDEF + 17, Value: 0x600e08, Size: 0x0},
+ elf.Symbol{Name: "", Info: 0x3, Other: 0x0, Section: elf.SHN_UNDEF + 18, Value: 0x600e10, Size: 0x0},
+ elf.Symbol{Name: "", Info: 0x3, Other: 0x0, Section: elf.SHN_UNDEF + 19, Value: 0x600e18, Size: 0x0},
+ elf.Symbol{Name: "", Info: 0x3, Other: 0x0, Section: elf.SHN_UNDEF + 20, Value: 0x600e20, Size: 0x0},
+ elf.Symbol{Name: "", Info: 0x3, Other: 0x0, Section: elf.SHN_UNDEF + 21, Value: 0x600ff0, Size: 0x0},
+ elf.Symbol{Name: "", Info: 0x3, Other: 0x0, Section: elf.SHN_UNDEF + 22, Value: 0x601000, Size: 0x0},
+ elf.Symbol{Name: "", Info: 0x3, Other: 0x0, Section: elf.SHN_UNDEF + 23, Value: 0x601020, Size: 0x0},
+ elf.Symbol{Name: "", Info: 0x3, Other: 0x0, Section: elf.SHN_UNDEF + 24, Value: 0x601130, Size: 0x0},
+ elf.Symbol{Name: "", Info: 0x3, Other: 0x0, Section: elf.SHN_UNDEF + 25, Value: 0x0, Size: 0x0},
+ elf.Symbol{Name: "crtstuff.c", Info: 0x4, Other: 0x0, Section: elf.SHN_ABS, Value: 0x0, Size: 0x0},
+ elf.Symbol{Name: "__JCR_LIST__", Info: 0x1, Other: 0x0, Section: elf.SHN_UNDEF + 19, Value: 0x600e18, Size: 0x0},
+ elf.Symbol{Name: "deregister_tm_clones", Info: 0x2, Other: 0x0, Section: elf.SHN_UNDEF + 12, Value: 0x400420, Size: 0x0},
+ elf.Symbol{Name: "register_tm_clones", Info: 0x2, Other: 0x0, Section: elf.SHN_UNDEF + 12, Value: 0x400460, Size: 0x0},
+ elf.Symbol{Name: "__do_global_dtors_aux", Info: 0x2, Other: 0x0, Section: elf.SHN_UNDEF + 12, Value: 0x4004a0, Size: 0x0},
+ elf.Symbol{Name: "completed.6963", Info: 0x1, Other: 0x0, Section: elf.SHN_UNDEF + 24, Value: 0x601130, Size: 0x1},
+ elf.Symbol{Name: "__do_global_dtors_aux_fini_array_entry", Info: 0x1, Other: 0x0, Section: elf.SHN_UNDEF + 18, Value: 0x600e10, Size: 0x0},
+ elf.Symbol{Name: "frame_dummy", Info: 0x2, Other: 0x0, Section: elf.SHN_UNDEF + 12, Value: 0x4004c0, Size: 0x0},
+ elf.Symbol{Name: "__frame_dummy_init_array_entry", Info: 0x1, Other: 0x0, Section: elf.SHN_UNDEF + 17, Value: 0x600e08, Size: 0x0},
+ elf.Symbol{Name: "test2.c", Info: 0x4, Other: 0x0, Section: elf.SHN_ABS, Value: 0x0, Size: 0x0},
+ elf.Symbol{Name: "crtstuff.c", Info: 0x4, Other: 0x0, Section: elf.SHN_ABS, Value: 0x0, Size: 0x0},
+ elf.Symbol{Name: "__FRAME_END__", Info: 0x1, Other: 0x0, Section: elf.SHN_UNDEF + 16, Value: 0x4006e4, Size: 0x0},
+ elf.Symbol{Name: "__JCR_END__", Info: 0x1, Other: 0x0, Section: elf.SHN_UNDEF + 19, Value: 0x600e18, Size: 0x0},
+ elf.Symbol{Name: "", Info: 0x4, Other: 0x0, Section: elf.SHN_ABS, Value: 0x0, Size: 0x0},
+ elf.Symbol{Name: "__init_array_end", Info: 0x0, Other: 0x0, Section: elf.SHN_UNDEF + 17, Value: 0x600e10, Size: 0x0},
+ elf.Symbol{Name: "_DYNAMIC", Info: 0x1, Other: 0x0, Section: elf.SHN_UNDEF + 20, Value: 0x600e20, Size: 0x0},
+ elf.Symbol{Name: "__init_array_start", Info: 0x0, Other: 0x0, Section: elf.SHN_UNDEF + 17, Value: 0x600e08, Size: 0x0},
+ elf.Symbol{Name: "__GNU_EH_FRAME_HDR", Info: 0x0, Other: 0x0, Section: elf.SHN_UNDEF + 15, Value: 0x4005c4, Size: 0x0},
+ elf.Symbol{Name: "_GLOBAL_OFFSET_TABLE_", Info: 0x1, Other: 0x0, Section: elf.SHN_UNDEF + 22, Value: 0x601000, Size: 0x0},
+ elf.Symbol{Name: "__libc_csu_fini", Info: 0x12, Other: 0x0, Section: elf.SHN_UNDEF + 12, Value: 0x4005b0, Size: 0x2},
+ elf.Symbol{Name: "symbol1", Info: 0x11, Other: 0x0, Section: elf.SHN_UNDEF + 23, Value: 0x601030, Size: 0x80},
+ elf.Symbol{Name: "data_start", Info: 0x20, Other: 0x0, Section: elf.SHN_UNDEF + 23, Value: 0x601020, Size: 0x0},
+ elf.Symbol{Name: "write@@GLIBC_2.2.5", Info: 0x12, Other: 0x0, Section: elf.SHN_UNDEF, Value: 0x0, Size: 0x0},
+ elf.Symbol{Name: "_edata", Info: 0x10, Other: 0x0, Section: elf.SHN_UNDEF + 23, Value: 0x601130, Size: 0x0},
+ elf.Symbol{Name: "_fini", Info: 0x12, Other: 0x0, Section: elf.SHN_UNDEF + 13, Value: 0x4005b4, Size: 0x0},
+ elf.Symbol{Name: "__libc_start_main@@GLIBC_2.2.5", Info: 0x12, Other: 0x0, Section: elf.SHN_UNDEF, Value: 0x0, Size: 0x0},
+ elf.Symbol{Name: "__data_start", Info: 0x10, Other: 0x0, Section: elf.SHN_UNDEF + 23, Value: 0x601020, Size: 0x0},
+ elf.Symbol{Name: "__gmon_start__", Info: 0x20, Other: 0x0, Section: elf.SHN_UNDEF, Value: 0x0, Size: 0x0},
+ elf.Symbol{Name: "__dso_handle", Info: 0x11, Other: 0x2, Section: elf.SHN_UNDEF + 23, Value: 0x601028, Size: 0x0},
+ elf.Symbol{Name: "_IO_stdin_used", Info: 0x11, Other: 0x0, Section: elf.SHN_UNDEF + 14, Value: 0x4005c0, Size: 0x4},
+ elf.Symbol{Name: "symbol2", Info: 0x11, Other: 0x0, Section: elf.SHN_UNDEF + 23, Value: 0x6010b0, Size: 0x80},
+ elf.Symbol{Name: "__libc_csu_init", Info: 0x12, Other: 0x0, Section: elf.SHN_UNDEF + 12, Value: 0x400540, Size: 0x65},
+ elf.Symbol{Name: "_end", Info: 0x10, Other: 0x0, Section: elf.SHN_UNDEF + 24, Value: 0x601138, Size: 0x0},
+ elf.Symbol{Name: "_start", Info: 0x12, Other: 0x0, Section: elf.SHN_UNDEF + 12, Value: 0x4003f0, Size: 0x2b},
+ elf.Symbol{Name: "__bss_start", Info: 0x10, Other: 0x0, Section: elf.SHN_UNDEF + 24, Value: 0x601130, Size: 0x0},
+ elf.Symbol{Name: "main", Info: 0x12, Other: 0x0, Section: elf.SHN_UNDEF + 12, Value: 0x4004f0, Size: 0x50},
+ elf.Symbol{Name: "__TMC_END__", Info: 0x11, Other: 0x2, Section: elf.SHN_UNDEF + 23, Value: 0x601130, Size: 0x0},
+ elf.Symbol{Name: "_init", Info: 0x12, Other: 0x0, Section: elf.SHN_UNDEF + 10, Value: 0x4003b0, Size: 0x0},
+ },
+}
diff --git a/cmd/symbol_inject/elf_test.go b/cmd/symbol_inject/elf_test.go
new file mode 100644
index 00000000..30b46a5e
--- /dev/null
+++ b/cmd/symbol_inject/elf_test.go
@@ -0,0 +1,63 @@
+// Copyright 2018 Google Inc. All rights reserved.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package main
+
+import (
+ "strconv"
+ "testing"
+)
+
+func TestElfSymbolTable(t *testing.T) {
+ testCases := []struct {
+ file *mockElfFile
+ symbol string
+ offset, size uint64
+ }{
+ {
+ file: elfSymbolTable1,
+ symbol: "soong_build_number",
+ offset: 0x1030,
+ size: 128,
+ },
+ {
+ file: elfSymbolTable2,
+ symbol: "symbol1",
+ offset: 0x1030,
+ size: 128,
+ },
+ {
+ file: elfSymbolTable2,
+ symbol: "symbol2",
+ offset: 0x10b0,
+ size: 128,
+ },
+ }
+
+ for i, testCase := range testCases {
+ t.Run(strconv.Itoa(i), func(t *testing.T) {
+ file, err := extractElfSymbols(testCase.file)
+ if err != nil {
+ t.Error(err.Error())
+ }
+ offset, size, err := findSymbol(file, testCase.symbol)
+ if err != nil {
+ t.Error(err.Error())
+ }
+ if offset != testCase.offset || size != testCase.size {
+ t.Errorf("expected %x:%x, got %x:%x", testCase.offset, testCase.size, offset, size)
+ }
+ })
+ }
+}
diff --git a/cmd/symbol_inject/macho.go b/cmd/symbol_inject/macho.go
index 478e6de8..be49f8b2 100644
--- a/cmd/symbol_inject/macho.go
+++ b/cmd/symbol_inject/macho.go
@@ -19,52 +19,79 @@ import (
"fmt"
"io"
"sort"
+ "strings"
)
-func findMachoSymbol(r io.ReaderAt, symbolName string) (uint64, uint64, error) {
+func machoSymbolsFromFile(r io.ReaderAt) (*File, error) {
machoFile, err := macho.NewFile(r)
if err != nil {
- return maxUint64, maxUint64, cantParseError{err}
+ return nil, cantParseError{err}
}
- // symbols in macho files seem to be prefixed with an underscore
- symbolName = "_" + symbolName
+ return extractMachoSymbols(machoFile)
+}
+func extractMachoSymbols(machoFile *macho.File) (*File, error) {
symbols := machoFile.Symtab.Syms
- sort.Slice(symbols, func(i, j int) bool {
+ sort.SliceStable(symbols, func(i, j int) bool {
if symbols[i].Sect != symbols[j].Sect {
return symbols[i].Sect < symbols[j].Sect
}
return symbols[i].Value < symbols[j].Value
})
+ file := &File{}
+
+ for _, section := range machoFile.Sections {
+ file.Sections = append(file.Sections, &Section{
+ Name: section.Name,
+ Addr: section.Addr,
+ Offset: uint64(section.Offset),
+ Size: section.Size,
+ })
+ }
+
for _, symbol := range symbols {
- if symbol.Name == symbolName && symbol.Sect != 0 {
- // Find the next symbol in the same section with a higher address
- n := sort.Search(len(symbols), func(i int) bool {
- return symbols[i].Sect == symbol.Sect &&
- symbols[i].Value > symbol.Value
+ if symbol.Sect > 0 {
+ section := file.Sections[symbol.Sect-1]
+ file.Symbols = append(file.Symbols, &Symbol{
+ // symbols in macho files seem to be prefixed with an underscore
+ Name: strings.TrimPrefix(symbol.Name, "_"),
+ // MachO symbol value is virtual address of the symbol, convert it to offset into the section.
+ Addr: symbol.Value - section.Addr,
+ // MachO symbols don't have size information.
+ Size: 0,
+ Section: section,
})
+ }
+ }
- section := machoFile.Sections[symbol.Sect-1]
+ return file, nil
+}
- var end uint64
- if n < len(symbols) {
- end = symbols[n].Value
- } else {
- end = section.Addr + section.Size
- }
+func dumpMachoSymbols(r io.ReaderAt) error {
+ machoFile, err := macho.NewFile(r)
+ if err != nil {
+ return cantParseError{err}
+ }
- if end <= symbol.Value && end > symbol.Value+4096 {
- return maxUint64, maxUint64, fmt.Errorf("symbol end address does not seem valid, %x:%x", symbol.Value, end)
- }
+ fmt.Println("&macho.File{")
- size := end - symbol.Value - 1
- offset := uint64(section.Offset) + (symbol.Value - section.Addr)
+ fmt.Println("\tSections: []*macho.Section{")
+ for _, section := range machoFile.Sections {
+ fmt.Printf("\t\t&macho.Section{SectionHeader: %#v},\n", section.SectionHeader)
+ }
+ fmt.Println("\t},")
- return offset, size, nil
- }
+ fmt.Println("\tSymtab: &macho.Symtab{")
+ fmt.Println("\t\tSyms: []macho.Symbol{")
+ for _, symbol := range machoFile.Symtab.Syms {
+ fmt.Printf("\t\t\t%#v,\n", symbol)
}
+ fmt.Println("\t\t},")
+ fmt.Println("\t},")
+
+ fmt.Println("}")
- return maxUint64, maxUint64, fmt.Errorf("symbol not found")
+ return nil
}
diff --git a/cmd/symbol_inject/macho_symboldata_test.go b/cmd/symbol_inject/macho_symboldata_test.go
new file mode 100644
index 00000000..3100a810
--- /dev/null
+++ b/cmd/symbol_inject/macho_symboldata_test.go
@@ -0,0 +1,88 @@
+// Copyright 2018 Google Inc. All rights reserved.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package main
+
+import (
+ "debug/macho"
+)
+
+/* Generated from: clang -o a.out test.c
+
+#include <unistd.h>
+
+char soong_build_number[128] = "PLACEHOLDER";
+
+int main() {
+ write(STDOUT_FILENO, soong_build_number, sizeof(soong_build_number));
+}
+*/
+
+var machoSymbolTable1 = &macho.File{
+ Sections: []*macho.Section{
+ &macho.Section{SectionHeader: macho.SectionHeader{Name: "__text", Seg: "__TEXT", Addr: 0x100000f50, Size: 0x2e, Offset: 0xf50, Align: 0x4, Reloff: 0x0, Nreloc: 0x0, Flags: 0x80000400}},
+ &macho.Section{SectionHeader: macho.SectionHeader{Name: "__stubs", Seg: "__TEXT", Addr: 0x100000f7e, Size: 0x6, Offset: 0xf7e, Align: 0x1, Reloff: 0x0, Nreloc: 0x0, Flags: 0x80000408}},
+ &macho.Section{SectionHeader: macho.SectionHeader{Name: "__stub_helper", Seg: "__TEXT", Addr: 0x100000f84, Size: 0x1a, Offset: 0xf84, Align: 0x2, Reloff: 0x0, Nreloc: 0x0, Flags: 0x80000400}},
+ &macho.Section{SectionHeader: macho.SectionHeader{Name: "__unwind_info", Seg: "__TEXT", Addr: 0x100000fa0, Size: 0x48, Offset: 0xfa0, Align: 0x2, Reloff: 0x0, Nreloc: 0x0, Flags: 0x0}},
+ &macho.Section{SectionHeader: macho.SectionHeader{Name: "__eh_frame", Seg: "__TEXT", Addr: 0x100000fe8, Size: 0x18, Offset: 0xfe8, Align: 0x3, Reloff: 0x0, Nreloc: 0x0, Flags: 0x0}},
+ &macho.Section{SectionHeader: macho.SectionHeader{Name: "__nl_symbol_ptr", Seg: "__DATA", Addr: 0x100001000, Size: 0x10, Offset: 0x1000, Align: 0x3, Reloff: 0x0, Nreloc: 0x0, Flags: 0x6}},
+ &macho.Section{SectionHeader: macho.SectionHeader{Name: "__la_symbol_ptr", Seg: "__DATA", Addr: 0x100001010, Size: 0x8, Offset: 0x1010, Align: 0x3, Reloff: 0x0, Nreloc: 0x0, Flags: 0x7}},
+ &macho.Section{SectionHeader: macho.SectionHeader{Name: "__data", Seg: "__DATA", Addr: 0x100001020, Size: 0x80, Offset: 0x1020, Align: 0x4, Reloff: 0x0, Nreloc: 0x0, Flags: 0x0}},
+ },
+ Symtab: &macho.Symtab{
+ Syms: []macho.Symbol{
+ macho.Symbol{Name: "__mh_execute_header", Type: 0xf, Sect: 0x1, Desc: 0x10, Value: 0x100000000},
+ macho.Symbol{Name: "_main", Type: 0xf, Sect: 0x1, Desc: 0x0, Value: 0x100000f50},
+ macho.Symbol{Name: "_soong_build_number", Type: 0xf, Sect: 0x8, Desc: 0x0, Value: 0x100001020},
+ macho.Symbol{Name: "_write", Type: 0x1, Sect: 0x0, Desc: 0x100, Value: 0x0},
+ macho.Symbol{Name: "dyld_stub_binder", Type: 0x1, Sect: 0x0, Desc: 0x100, Value: 0x0},
+ },
+ },
+}
+
+/* Generated from: clang -o a.out test2.c
+
+#include <unistd.h>
+
+char symbol1[128] = "PLACEHOLDER1";
+char symbol2[128] = "PLACEHOLDER2";
+
+int main() {
+ write(STDOUT_FILENO, symbol1, sizeof(symbol1));
+ write(STDOUT_FILENO, symbol2, sizeof(symbol2));
+}
+*/
+
+var machoSymbolTable2 = &macho.File{
+ Sections: []*macho.Section{
+ &macho.Section{SectionHeader: macho.SectionHeader{Name: "__text", Seg: "__TEXT", Addr: 0x100000f30, Size: 0x4a, Offset: 0xf30, Align: 0x4, Reloff: 0x0, Nreloc: 0x0, Flags: 0x80000400}},
+ &macho.Section{SectionHeader: macho.SectionHeader{Name: "__stubs", Seg: "__TEXT", Addr: 0x100000f7a, Size: 0x6, Offset: 0xf7a, Align: 0x1, Reloff: 0x0, Nreloc: 0x0, Flags: 0x80000408}},
+ &macho.Section{SectionHeader: macho.SectionHeader{Name: "__stub_helper", Seg: "__TEXT", Addr: 0x100000f80, Size: 0x1a, Offset: 0xf80, Align: 0x2, Reloff: 0x0, Nreloc: 0x0, Flags: 0x80000400}},
+ &macho.Section{SectionHeader: macho.SectionHeader{Name: "__unwind_info", Seg: "__TEXT", Addr: 0x100000f9c, Size: 0x48, Offset: 0xf9c, Align: 0x2, Reloff: 0x0, Nreloc: 0x0, Flags: 0x0}},
+ &macho.Section{SectionHeader: macho.SectionHeader{Name: "__eh_frame", Seg: "__TEXT", Addr: 0x100000fe8, Size: 0x18, Offset: 0xfe8, Align: 0x3, Reloff: 0x0, Nreloc: 0x0, Flags: 0x0}},
+ &macho.Section{SectionHeader: macho.SectionHeader{Name: "__nl_symbol_ptr", Seg: "__DATA", Addr: 0x100001000, Size: 0x10, Offset: 0x1000, Align: 0x3, Reloff: 0x0, Nreloc: 0x0, Flags: 0x6}},
+ &macho.Section{SectionHeader: macho.SectionHeader{Name: "__la_symbol_ptr", Seg: "__DATA", Addr: 0x100001010, Size: 0x8, Offset: 0x1010, Align: 0x3, Reloff: 0x0, Nreloc: 0x0, Flags: 0x7}},
+ &macho.Section{SectionHeader: macho.SectionHeader{Name: "__data", Seg: "__DATA", Addr: 0x100001020, Size: 0x100, Offset: 0x1020, Align: 0x4, Reloff: 0x0, Nreloc: 0x0, Flags: 0x0}},
+ },
+ Symtab: &macho.Symtab{
+ Syms: []macho.Symbol{
+ macho.Symbol{Name: "__mh_execute_header", Type: 0xf, Sect: 0x1, Desc: 0x10, Value: 0x100000000},
+ macho.Symbol{Name: "_main", Type: 0xf, Sect: 0x1, Desc: 0x0, Value: 0x100000f30},
+ macho.Symbol{Name: "_symbol1", Type: 0xf, Sect: 0x8, Desc: 0x0, Value: 0x100001020},
+ macho.Symbol{Name: "_symbol2", Type: 0xf, Sect: 0x8, Desc: 0x0, Value: 0x1000010a0},
+ macho.Symbol{Name: "_write", Type: 0x1, Sect: 0x0, Desc: 0x100, Value: 0x0},
+ macho.Symbol{Name: "dyld_stub_binder", Type: 0x1, Sect: 0x0, Desc: 0x100, Value: 0x0},
+ },
+ },
+}
diff --git a/cmd/symbol_inject/macho_test.go b/cmd/symbol_inject/macho_test.go
new file mode 100644
index 00000000..7acab23d
--- /dev/null
+++ b/cmd/symbol_inject/macho_test.go
@@ -0,0 +1,64 @@
+// Copyright 2018 Google Inc. All rights reserved.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package main
+
+import (
+ "debug/macho"
+ "strconv"
+ "testing"
+)
+
+func TestMachoSymbolTable(t *testing.T) {
+ testCases := []struct {
+ file *macho.File
+ symbol string
+ offset, size uint64
+ }{
+ {
+ file: machoSymbolTable1,
+ symbol: "soong_build_number",
+ offset: 0x1020,
+ size: 128,
+ },
+ {
+ file: machoSymbolTable2,
+ symbol: "symbol1",
+ offset: 0x1020,
+ size: 128,
+ },
+ {
+ file: machoSymbolTable2,
+ symbol: "symbol2",
+ offset: 0x10a0,
+ size: 128,
+ },
+ }
+
+ for i, testCase := range testCases {
+ t.Run(strconv.Itoa(i), func(t *testing.T) {
+ file, err := extractMachoSymbols(testCase.file)
+ if err != nil {
+ t.Error(err.Error())
+ }
+ offset, size, err := findSymbol(file, testCase.symbol)
+ if err != nil {
+ t.Error(err.Error())
+ }
+ if offset != testCase.offset || size != testCase.size {
+ t.Errorf("expected %x:%x, got %x:%x", testCase.offset, testCase.size, offset, size)
+ }
+ })
+ }
+}
diff --git a/cmd/symbol_inject/pe.go b/cmd/symbol_inject/pe.go
index 82fdff8c..12f35ee0 100644
--- a/cmd/symbol_inject/pe.go
+++ b/cmd/symbol_inject/pe.go
@@ -19,54 +19,84 @@ import (
"fmt"
"io"
"sort"
+ "strings"
)
-func findPESymbol(r io.ReaderAt, symbolName string) (uint64, uint64, error) {
+func peSymbolsFromFile(r io.ReaderAt) (*File, error) {
peFile, err := pe.NewFile(r)
if err != nil {
- return maxUint64, maxUint64, cantParseError{err}
+ return nil, cantParseError{err}
}
+ return extractPESymbols(peFile)
+}
+
+func extractPESymbols(peFile *pe.File) (*File, error) {
+ var prefix string
if peFile.FileHeader.Machine == pe.IMAGE_FILE_MACHINE_I386 {
// symbols in win32 exes seem to be prefixed with an underscore
- symbolName = "_" + symbolName
+ prefix = "_"
}
symbols := peFile.Symbols
- sort.Slice(symbols, func(i, j int) bool {
+ sort.SliceStable(symbols, func(i, j int) bool {
if symbols[i].SectionNumber != symbols[j].SectionNumber {
return symbols[i].SectionNumber < symbols[j].SectionNumber
}
return symbols[i].Value < symbols[j].Value
})
+ file := &File{}
+
+ for _, section := range peFile.Sections {
+ file.Sections = append(file.Sections, &Section{
+ Name: section.Name,
+ Addr: uint64(section.VirtualAddress),
+ Offset: uint64(section.Offset),
+ Size: uint64(section.VirtualSize),
+ })
+ }
+
for _, symbol := range symbols {
- if symbol.Name == symbolName {
- // Find the next symbol (n the same section with a higher address
- n := sort.Search(len(symbols), func(i int) bool {
- return symbols[i].SectionNumber == symbol.SectionNumber &&
- symbols[i].Value > symbol.Value
+ if symbol.SectionNumber > 0 {
+ file.Symbols = append(file.Symbols, &Symbol{
+ Name: strings.TrimPrefix(symbol.Name, prefix),
+ // PE symbol value is the offset of the symbol into the section
+ Addr: uint64(symbol.Value),
+ // PE symbols don't have size information
+ Size: 0,
+ Section: file.Sections[symbol.SectionNumber-1],
})
+ }
+ }
- section := peFile.Sections[symbol.SectionNumber-1]
+ return file, nil
+}
- var end uint32
- if n < len(symbols) {
- end = symbols[n].Value
- } else {
- end = section.Size
- }
+func dumpPESymbols(r io.ReaderAt) error {
+ peFile, err := pe.NewFile(r)
+ if err != nil {
+ return cantParseError{err}
+ }
- if end <= symbol.Value && end > symbol.Value+4096 {
- return maxUint64, maxUint64, fmt.Errorf("symbol end address does not seem valid, %x:%x", symbol.Value, end)
- }
+ fmt.Println("&pe.File{")
+ fmt.Println("\tFileHeader: pe.FileHeader{")
+ fmt.Printf("\t\tMachine: %#v,\n", peFile.FileHeader.Machine)
+ fmt.Println("\t},")
- size := end - symbol.Value - 1
- offset := section.Offset + symbol.Value
+ fmt.Println("\tSections: []*pe.Section{")
+ for _, section := range peFile.Sections {
+ fmt.Printf("\t\t&pe.Section{SectionHeader: %#v},\n", section.SectionHeader)
+ }
+ fmt.Println("\t},")
- return uint64(offset), uint64(size), nil
- }
+ fmt.Println("\tSymbols: []*pe.Symbol{")
+ for _, symbol := range peFile.Symbols {
+ fmt.Printf("\t\t%#v,\n", symbol)
}
+ fmt.Println("\t},")
+
+ fmt.Println("}")
- return maxUint64, maxUint64, fmt.Errorf("symbol not found")
+ return nil
}
diff --git a/cmd/symbol_inject/pe_symboldata_test.go b/cmd/symbol_inject/pe_symboldata_test.go
new file mode 100644
index 00000000..edc1c976
--- /dev/null
+++ b/cmd/symbol_inject/pe_symboldata_test.go
@@ -0,0 +1,2102 @@
+// Copyright 2018 Google Inc. All rights reserved.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package main
+
+import (
+ "debug/pe"
+)
+
+/*
+Generated from: prebuilts/gcc/linux-x86/host/x86_64-w64-mingw32-4.8/bin/x86_64-w64-mingw32-g++ -o a.exe test.c
+
+#include <unistd.h>
+
+char soong_build_number[128] = "PLACEHOLDER";
+
+int main() {
+ write(STDOUT_FILENO, soong_build_number, sizeof(soong_build_number));
+*/
+
+var peSymbolTable1 = &pe.File{
+ FileHeader: pe.FileHeader{
+ Machine: pe.IMAGE_FILE_MACHINE_AMD64,
+ },
+ Sections: []*pe.Section{
+ &pe.Section{SectionHeader: pe.SectionHeader{Name: ".text", VirtualSize: 0x1cc0, VirtualAddress: 0x1000, Size: 0x1e00, Offset: 0x600, PointerToRelocations: 0x0, PointerToLineNumbers: 0x0, NumberOfRelocations: 0x0, NumberOfLineNumbers: 0x0, Characteristics: 0x60500020}},
+ &pe.Section{SectionHeader: pe.SectionHeader{Name: ".data", VirtualSize: 0x120, VirtualAddress: 0x3000, Size: 0x200, Offset: 0x2400, PointerToRelocations: 0x0, PointerToLineNumbers: 0x0, NumberOfRelocations: 0x0, NumberOfLineNumbers: 0x0, Characteristics: 0xc0600040}},
+ &pe.Section{SectionHeader: pe.SectionHeader{Name: ".rdata", VirtualSize: 0x5e0, VirtualAddress: 0x4000, Size: 0x600, Offset: 0x2600, PointerToRelocations: 0x0, PointerToLineNumbers: 0x0, NumberOfRelocations: 0x0, NumberOfLineNumbers: 0x0, Characteristics: 0x40500040}},
+ &pe.Section{SectionHeader: pe.SectionHeader{Name: ".pdata", VirtualSize: 0x234, VirtualAddress: 0x5000, Size: 0x400, Offset: 0x2c00, PointerToRelocations: 0x0, PointerToLineNumbers: 0x0, NumberOfRelocations: 0x0, NumberOfLineNumbers: 0x0, Characteristics: 0x40300040}},
+ &pe.Section{SectionHeader: pe.SectionHeader{Name: ".xdata", VirtualSize: 0x200, VirtualAddress: 0x6000, Size: 0x200, Offset: 0x3000, PointerToRelocations: 0x0, PointerToLineNumbers: 0x0, NumberOfRelocations: 0x0, NumberOfLineNumbers: 0x0, Characteristics: 0x40300040}},
+ &pe.Section{SectionHeader: pe.SectionHeader{Name: ".bss", VirtualSize: 0x9b0, VirtualAddress: 0x7000, Size: 0x0, Offset: 0x0, PointerToRelocations: 0x0, PointerToLineNumbers: 0x0, NumberOfRelocations: 0x0, NumberOfLineNumbers: 0x0, Characteristics: 0xc0600080}},
+ &pe.Section{SectionHeader: pe.SectionHeader{Name: ".idata", VirtualSize: 0x7c8, VirtualAddress: 0x8000, Size: 0x800, Offset: 0x3200, PointerToRelocations: 0x0, PointerToLineNumbers: 0x0, NumberOfRelocations: 0x0, NumberOfLineNumbers: 0x0, Characteristics: 0xc0300040}},
+ &pe.Section{SectionHeader: pe.SectionHeader{Name: ".CRT", VirtualSize: 0x68, VirtualAddress: 0x9000, Size: 0x200, Offset: 0x3a00, PointerToRelocations: 0x0, PointerToLineNumbers: 0x0, NumberOfRelocations: 0x0, NumberOfLineNumbers: 0x0, Characteristics: 0xc0400040}},
+ &pe.Section{SectionHeader: pe.SectionHeader{Name: ".tls", VirtualSize: 0x68, VirtualAddress: 0xa000, Size: 0x200, Offset: 0x3c00, PointerToRelocations: 0x0, PointerToLineNumbers: 0x0, NumberOfRelocations: 0x0, NumberOfLineNumbers: 0x0, Characteristics: 0xc0600040}},
+ &pe.Section{SectionHeader: pe.SectionHeader{Name: ".debug_aranges", VirtualSize: 0x420, VirtualAddress: 0xb000, Size: 0x600, Offset: 0x3e00, PointerToRelocations: 0x0, PointerToLineNumbers: 0x0, NumberOfRelocations: 0x0, NumberOfLineNumbers: 0x0, Characteristics: 0x42500040}},
+ &pe.Section{SectionHeader: pe.SectionHeader{Name: ".debug_info", VirtualSize: 0xc125, VirtualAddress: 0xc000, Size: 0xc200, Offset: 0x4400, PointerToRelocations: 0x0, PointerToLineNumbers: 0x0, NumberOfRelocations: 0x0, NumberOfLineNumbers: 0x0, Characteristics: 0x42100040}},
+ &pe.Section{SectionHeader: pe.SectionHeader{Name: ".debug_abbrev", VirtualSize: 0x1a80, VirtualAddress: 0x19000, Size: 0x1c00, Offset: 0x10600, PointerToRelocations: 0x0, PointerToLineNumbers: 0x0, NumberOfRelocations: 0x0, NumberOfLineNumbers: 0x0, Characteristics: 0x42100040}},
+ &pe.Section{SectionHeader: pe.SectionHeader{Name: ".debug_line", VirtualSize: 0x2182, VirtualAddress: 0x1b000, Size: 0x2200, Offset: 0x12200, PointerToRelocations: 0x0, PointerToLineNumbers: 0x0, NumberOfRelocations: 0x0, NumberOfLineNumbers: 0x0, Characteristics: 0x42100040}},
+ &pe.Section{SectionHeader: pe.SectionHeader{Name: ".debug_frame", VirtualSize: 0xb28, VirtualAddress: 0x1e000, Size: 0xc00, Offset: 0x14400, PointerToRelocations: 0x0, PointerToLineNumbers: 0x0, NumberOfRelocations: 0x0, NumberOfLineNumbers: 0x0, Characteristics: 0x42400040}},
+ &pe.Section{SectionHeader: pe.SectionHeader{Name: ".debug_str", VirtualSize: 0x300, VirtualAddress: 0x1f000, Size: 0x400, Offset: 0x15000, PointerToRelocations: 0x0, PointerToLineNumbers: 0x0, NumberOfRelocations: 0x0, NumberOfLineNumbers: 0x0, Characteristics: 0x42100040}},
+ &pe.Section{SectionHeader: pe.SectionHeader{Name: ".debug_loc", VirtualSize: 0x2b76, VirtualAddress: 0x20000, Size: 0x2c00, Offset: 0x15400, PointerToRelocations: 0x0, PointerToLineNumbers: 0x0, NumberOfRelocations: 0x0, NumberOfLineNumbers: 0x0, Characteristics: 0x42100040}},
+ &pe.Section{SectionHeader: pe.SectionHeader{Name: ".debug_ranges", VirtualSize: 0x4f0, VirtualAddress: 0x23000, Size: 0x600, Offset: 0x18000, PointerToRelocations: 0x0, PointerToLineNumbers: 0x0, NumberOfRelocations: 0x0, NumberOfLineNumbers: 0x0, Characteristics: 0x42100040}},
+ },
+ Symbols: []*pe.Symbol{
+ &pe.Symbol{Name: ".file", Value: 0x35, SectionNumber: -2, Type: 0x0, StorageClass: 0x67},
+ &pe.Symbol{Name: "__mingw_invalidParameterHandler", Value: 0x0, SectionNumber: 1, Type: 0x20, StorageClass: 0x3},
+ &pe.Symbol{Name: "pre_c_init", Value: 0x10, SectionNumber: 1, Type: 0x20, StorageClass: 0x3},
+ &pe.Symbol{Name: "managedapp", Value: 0x8, SectionNumber: 6, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: "pre_cpp_init", Value: 0x130, SectionNumber: 1, Type: 0x20, StorageClass: 0x3},
+ &pe.Symbol{Name: "envp", Value: 0x18, SectionNumber: 6, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: "argv", Value: 0x20, SectionNumber: 6, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: "argc", Value: 0x28, SectionNumber: 6, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: "startinfo", Value: 0x0, SectionNumber: 6, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: "argret", Value: 0x10, SectionNumber: 6, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: "__tmainCRTStartup", Value: 0x180, SectionNumber: 1, Type: 0x20, StorageClass: 0x3},
+ &pe.Symbol{Name: "has_cctor", Value: 0x4, SectionNumber: 6, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: "mainret", Value: 0xc, SectionNumber: 6, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: "WinMainCRTStartup", Value: 0x4b0, SectionNumber: 1, Type: 0x20, StorageClass: 0x2},
+ &pe.Symbol{Name: ".l_startw", Value: 0x4b4, SectionNumber: 1, Type: 0x0, StorageClass: 0x6},
+ &pe.Symbol{Name: ".l_endw", Value: 0x4c9, SectionNumber: 1, Type: 0x0, StorageClass: 0x6},
+ &pe.Symbol{Name: "mainCRTStartup", Value: 0x4d0, SectionNumber: 1, Type: 0x20, StorageClass: 0x2},
+ &pe.Symbol{Name: ".l_start", Value: 0x4d4, SectionNumber: 1, Type: 0x0, StorageClass: 0x6},
+ &pe.Symbol{Name: ".l_end", Value: 0x4e9, SectionNumber: 1, Type: 0x0, StorageClass: 0x6},
+ &pe.Symbol{Name: ".text", Value: 0x0, SectionNumber: 1, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".data", Value: 0x0, SectionNumber: 2, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".bss", Value: 0x0, SectionNumber: 6, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".xdata", Value: 0x0, SectionNumber: 5, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".pdata", Value: 0x0, SectionNumber: 4, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".CRT$XCAA", Value: 0x8, SectionNumber: 8, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".CRT$XIAA", Value: 0x20, SectionNumber: 8, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".debug_info", Value: 0x0, SectionNumber: 11, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".debug_abbrev", Value: 0x0, SectionNumber: 12, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".debug_loc", Value: 0x0, SectionNumber: 16, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".debug_aranges", Value: 0x0, SectionNumber: 10, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".debug_ranges", Value: 0x0, SectionNumber: 17, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".debug_line", Value: 0x0, SectionNumber: 13, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".debug_str", Value: 0x0, SectionNumber: 15, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".rdata$zzz", Value: 0x280, SectionNumber: 3, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".debug_frame", Value: 0x0, SectionNumber: 14, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".file", Value: 0x3f, SectionNumber: -2, Type: 0x0, StorageClass: 0x67},
+ &pe.Symbol{Name: ".text", Value: 0x4f0, SectionNumber: 1, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".data", Value: 0x10, SectionNumber: 2, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".bss", Value: 0x30, SectionNumber: 6, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".rdata$zzz", Value: 0x2a0, SectionNumber: 3, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".file", Value: 0x4f, SectionNumber: -2, Type: 0x0, StorageClass: 0x67},
+ &pe.Symbol{Name: "main", Value: 0x4f0, SectionNumber: 1, Type: 0x20, StorageClass: 0x2},
+ &pe.Symbol{Name: ".text", Value: 0x4f0, SectionNumber: 1, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".data", Value: 0x20, SectionNumber: 2, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".bss", Value: 0x30, SectionNumber: 6, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".xdata", Value: 0x68, SectionNumber: 5, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".pdata", Value: 0x48, SectionNumber: 4, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".rdata$zzz", Value: 0x2c0, SectionNumber: 3, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".file", Value: 0x6c, SectionNumber: -2, Type: 0x0, StorageClass: 0x67},
+ &pe.Symbol{Name: "mingw_onexit", Value: 0x520, SectionNumber: 1, Type: 0x20, StorageClass: 0x2},
+ &pe.Symbol{Name: "atexit", Value: 0x5d0, SectionNumber: 1, Type: 0x20, StorageClass: 0x2},
+ &pe.Symbol{Name: ".text", Value: 0x520, SectionNumber: 1, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".data", Value: 0xa0, SectionNumber: 2, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".bss", Value: 0x30, SectionNumber: 6, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".xdata", Value: 0x74, SectionNumber: 5, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".pdata", Value: 0x54, SectionNumber: 4, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".debug_info", Value: 0x27d0, SectionNumber: 11, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".debug_abbrev", Value: 0x433, SectionNumber: 12, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".debug_loc", Value: 0x510, SectionNumber: 16, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".debug_aranges", Value: 0x30, SectionNumber: 10, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".debug_line", Value: 0x3de, SectionNumber: 13, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".rdata$zzz", Value: 0x2e0, SectionNumber: 3, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".debug_frame", Value: 0x120, SectionNumber: 14, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".file", Value: 0x8c, SectionNumber: -2, Type: 0x0, StorageClass: 0x67},
+ &pe.Symbol{Name: "__do_global_dtors", Value: 0x5f0, SectionNumber: 1, Type: 0x20, StorageClass: 0x2},
+ &pe.Symbol{Name: "p.68721", Value: 0xa0, SectionNumber: 2, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: "__do_global_ctors", Value: 0x630, SectionNumber: 1, Type: 0x20, StorageClass: 0x2},
+ &pe.Symbol{Name: "__main", Value: 0x690, SectionNumber: 1, Type: 0x20, StorageClass: 0x2},
+ &pe.Symbol{Name: "initialized", Value: 0x30, SectionNumber: 6, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".text", Value: 0x5f0, SectionNumber: 1, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".data", Value: 0xa0, SectionNumber: 2, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".bss", Value: 0x30, SectionNumber: 6, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".xdata", Value: 0x84, SectionNumber: 5, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".pdata", Value: 0x6c, SectionNumber: 4, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".debug_info", Value: 0x2ed5, SectionNumber: 11, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".debug_abbrev", Value: 0x5ae, SectionNumber: 12, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".debug_loc", Value: 0x607, SectionNumber: 16, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".debug_aranges", Value: 0x60, SectionNumber: 10, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".debug_line", Value: 0x5a3, SectionNumber: 13, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".rdata$zzz", Value: 0x300, SectionNumber: 3, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".debug_frame", Value: 0x190, SectionNumber: 14, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".file", Value: 0xa0, SectionNumber: -2, Type: 0x0, StorageClass: 0x67},
+ &pe.Symbol{Name: ".text", Value: 0x6b0, SectionNumber: 1, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".data", Value: 0xb0, SectionNumber: 2, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".bss", Value: 0x40, SectionNumber: 6, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".debug_info", Value: 0x34aa, SectionNumber: 11, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".debug_abbrev", Value: 0x6c2, SectionNumber: 12, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".debug_aranges", Value: 0x90, SectionNumber: 10, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".debug_line", Value: 0x710, SectionNumber: 13, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".debug_str", Value: 0x21f, SectionNumber: 15, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".rdata$zzz", Value: 0x320, SectionNumber: 3, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".file", Value: 0xb2, SectionNumber: -2, Type: 0x0, StorageClass: 0x67},
+ &pe.Symbol{Name: ".text", Value: 0x6b0, SectionNumber: 1, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".data", Value: 0xc0, SectionNumber: 2, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".bss", Value: 0x40, SectionNumber: 6, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".debug_info", Value: 0x3a06, SectionNumber: 11, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".debug_abbrev", Value: 0x744, SectionNumber: 12, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".debug_aranges", Value: 0xb0, SectionNumber: 10, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".debug_line", Value: 0x894, SectionNumber: 13, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".rdata$zzz", Value: 0x340, SectionNumber: 3, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".file", Value: 0xce, SectionNumber: -2, Type: 0x0, StorageClass: 0x67},
+ &pe.Symbol{Name: "my_lconv_init", Value: 0x6b0, SectionNumber: 1, Type: 0x20, StorageClass: 0x3},
+ &pe.Symbol{Name: ".text", Value: 0x6b0, SectionNumber: 1, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".data", Value: 0xc0, SectionNumber: 2, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".bss", Value: 0x50, SectionNumber: 6, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".xdata", Value: 0x9c, SectionNumber: 5, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".pdata", Value: 0x90, SectionNumber: 4, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".CRT$XIC", Value: 0x28, SectionNumber: 8, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".debug_info", Value: 0x3ae7, SectionNumber: 11, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".debug_abbrev", Value: 0x76e, SectionNumber: 12, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".debug_aranges", Value: 0xd0, SectionNumber: 10, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".debug_line", Value: 0x91f, SectionNumber: 13, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".rdata$zzz", Value: 0x360, SectionNumber: 3, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".debug_frame", Value: 0x218, SectionNumber: 14, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".file", Value: 0xe8, SectionNumber: -2, Type: 0x0, StorageClass: 0x67},
+ &pe.Symbol{Name: "_setargv", Value: 0x6c0, SectionNumber: 1, Type: 0x20, StorageClass: 0x2},
+ &pe.Symbol{Name: ".text", Value: 0x6c0, SectionNumber: 1, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".data", Value: 0xd0, SectionNumber: 2, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".bss", Value: 0x60, SectionNumber: 6, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".xdata", Value: 0xa0, SectionNumber: 5, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".pdata", Value: 0x9c, SectionNumber: 4, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".debug_info", Value: 0x3ffe, SectionNumber: 11, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".debug_abbrev", Value: 0x808, SectionNumber: 12, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".debug_aranges", Value: 0x100, SectionNumber: 10, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".debug_line", Value: 0xab8, SectionNumber: 13, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".rdata$zzz", Value: 0x380, SectionNumber: 3, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".debug_frame", Value: 0x248, SectionNumber: 14, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".file", Value: 0x110, SectionNumber: -2, Type: 0x0, StorageClass: 0x67},
+ &pe.Symbol{Name: "__security_init_cookie", Value: 0x6d0, SectionNumber: 1, Type: 0x20, StorageClass: 0x2},
+ &pe.Symbol{Name: ".data$__security_cookie", Value: 0x100, SectionNumber: 2, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".data$__security_cookie_complement", Value: 0x110, SectionNumber: 2, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: "__report_gsfailure", Value: 0x7a0, SectionNumber: 1, Type: 0x20, StorageClass: 0x2},
+ &pe.Symbol{Name: "GS_ContextRecord", Value: 0x60, SectionNumber: 6, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: "GS_ExceptionRecord", Value: 0x540, SectionNumber: 6, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: "GS_ExceptionPointers", Value: 0x0, SectionNumber: 3, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".text", Value: 0x6d0, SectionNumber: 1, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".data", Value: 0xd0, SectionNumber: 2, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".bss", Value: 0x60, SectionNumber: 6, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".xdata", Value: 0xa4, SectionNumber: 5, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".pdata", Value: 0xa8, SectionNumber: 4, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".rdata", Value: 0x0, SectionNumber: 3, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".debug_info", Value: 0x41c8, SectionNumber: 11, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".debug_abbrev", Value: 0x83f, SectionNumber: 12, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".debug_loc", Value: 0x6ae, SectionNumber: 16, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".debug_aranges", Value: 0x130, SectionNumber: 10, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".debug_line", Value: 0xb56, SectionNumber: 13, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".debug_str", Value: 0x237, SectionNumber: 15, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".rdata$zzz", Value: 0x3a0, SectionNumber: 3, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".debug_frame", Value: 0x278, SectionNumber: 14, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".file", Value: 0x122, SectionNumber: -2, Type: 0x0, StorageClass: 0x67},
+ &pe.Symbol{Name: ".text", Value: 0x8a0, SectionNumber: 1, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".data", Value: 0xd0, SectionNumber: 2, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".bss", Value: 0x5e0, SectionNumber: 6, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".debug_info", Value: 0x506e, SectionNumber: 11, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".debug_abbrev", Value: 0xa10, SectionNumber: 12, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".debug_aranges", Value: 0x160, SectionNumber: 10, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".debug_line", Value: 0xcde, SectionNumber: 13, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".rdata$zzz", Value: 0x3c0, SectionNumber: 3, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".file", Value: 0x158, SectionNumber: -2, Type: 0x0, StorageClass: 0x67},
+ &pe.Symbol{Name: "__dyn_tls_dtor", Value: 0x8a0, SectionNumber: 1, Type: 0x20, StorageClass: 0x3},
+ &pe.Symbol{Name: "__dyn_tls_init", Value: 0x8d0, SectionNumber: 1, Type: 0x20, StorageClass: 0x2},
+ &pe.Symbol{Name: "__xd_a", Value: 0x58, SectionNumber: 8, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: "__xd_z", Value: 0x60, SectionNumber: 8, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: "__tlregdtor", Value: 0x940, SectionNumber: 1, Type: 0x20, StorageClass: 0x2},
+ &pe.Symbol{Name: ".text", Value: 0x8a0, SectionNumber: 1, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".data", Value: 0xd0, SectionNumber: 2, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".bss", Value: 0x5f0, SectionNumber: 6, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".xdata", Value: 0xc4, SectionNumber: 5, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".pdata", Value: 0xc0, SectionNumber: 4, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".CRT$XLD", Value: 0x48, SectionNumber: 8, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".CRT$XLC", Value: 0x40, SectionNumber: 8, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".rdata", Value: 0x10, SectionNumber: 3, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".CRT$XDZ", Value: 0x60, SectionNumber: 8, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".CRT$XDA", Value: 0x58, SectionNumber: 8, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".tls", Value: 0x20, SectionNumber: 9, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".CRT$XLZ", Value: 0x50, SectionNumber: 8, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".CRT$XLA", Value: 0x38, SectionNumber: 8, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".tls$ZZZ", Value: 0x60, SectionNumber: 9, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".tls$AAA", Value: 0x0, SectionNumber: 9, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".debug_info", Value: 0x514c, SectionNumber: 11, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".debug_abbrev", Value: 0xa3a, SectionNumber: 12, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".debug_loc", Value: 0x816, SectionNumber: 16, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".debug_aranges", Value: 0x180, SectionNumber: 10, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".debug_line", Value: 0xd69, SectionNumber: 13, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".debug_str", Value: 0x250, SectionNumber: 15, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".rdata$zzz", Value: 0x3e0, SectionNumber: 3, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".debug_frame", Value: 0x330, SectionNumber: 14, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".file", Value: 0x172, SectionNumber: -2, Type: 0x0, StorageClass: 0x67},
+ &pe.Symbol{Name: ".text", Value: 0x950, SectionNumber: 1, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".data", Value: 0xd0, SectionNumber: 2, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".bss", Value: 0x600, SectionNumber: 6, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".CRT$XCZ", Value: 0x10, SectionNumber: 8, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".CRT$XCA", Value: 0x0, SectionNumber: 8, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".CRT$XIZ", Value: 0x30, SectionNumber: 8, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".CRT$XIA", Value: 0x18, SectionNumber: 8, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".debug_info", Value: 0x5854, SectionNumber: 11, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".debug_abbrev", Value: 0xbce, SectionNumber: 12, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".debug_aranges", Value: 0x1b0, SectionNumber: 10, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".debug_line", Value: 0xec8, SectionNumber: 13, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".rdata$zzz", Value: 0x400, SectionNumber: 3, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".file", Value: 0x193, SectionNumber: -2, Type: 0x0, StorageClass: 0x67},
+ &pe.Symbol{Name: "__mingw_raise_matherr", Value: 0x950, SectionNumber: 1, Type: 0x20, StorageClass: 0x2},
+ &pe.Symbol{Name: "stUserMathErr", Value: 0x600, SectionNumber: 6, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: "__mingw_setusermatherr", Value: 0x9a0, SectionNumber: 1, Type: 0x20, StorageClass: 0x2},
+ &pe.Symbol{Name: "_matherr", Value: 0x9b0, SectionNumber: 1, Type: 0x20, StorageClass: 0x2},
+ &pe.Symbol{Name: ".text", Value: 0x950, SectionNumber: 1, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".data", Value: 0xd0, SectionNumber: 2, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".bss", Value: 0x600, SectionNumber: 6, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".xdata", Value: 0xdc, SectionNumber: 5, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".pdata", Value: 0xe4, SectionNumber: 4, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".rdata", Value: 0x20, SectionNumber: 3, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".debug_info", Value: 0x5a33, SectionNumber: 11, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".debug_abbrev", Value: 0xc27, SectionNumber: 12, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".debug_loc", Value: 0xb6f, SectionNumber: 16, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".debug_aranges", Value: 0x1d0, SectionNumber: 10, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".debug_line", Value: 0xf53, SectionNumber: 13, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".rdata$zzz", Value: 0x420, SectionNumber: 3, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".debug_frame", Value: 0x3d0, SectionNumber: 14, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".file", Value: 0x1ae, SectionNumber: -2, Type: 0x0, StorageClass: 0x67},
+ &pe.Symbol{Name: "_fpreset", Value: 0xab0, SectionNumber: 1, Type: 0x20, StorageClass: 0x2},
+ &pe.Symbol{Name: "fpreset", Value: 0xab0, SectionNumber: 1, Type: 0x20, StorageClass: 0x2},
+ &pe.Symbol{Name: ".text", Value: 0xab0, SectionNumber: 1, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".data", Value: 0xd0, SectionNumber: 2, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".bss", Value: 0x610, SectionNumber: 6, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".xdata", Value: 0x100, SectionNumber: 5, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".pdata", Value: 0x108, SectionNumber: 4, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".debug_info", Value: 0x61bd, SectionNumber: 11, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".debug_abbrev", Value: 0xda1, SectionNumber: 12, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".debug_aranges", Value: 0x200, SectionNumber: 10, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".debug_line", Value: 0x1129, SectionNumber: 13, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".rdata$zzz", Value: 0x440, SectionNumber: 3, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".debug_frame", Value: 0x460, SectionNumber: 14, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".file", Value: 0x1c9, SectionNumber: -2, Type: 0x0, StorageClass: 0x67},
+ &pe.Symbol{Name: "_decode_pointer", Value: 0xac0, SectionNumber: 1, Type: 0x20, StorageClass: 0x2},
+ &pe.Symbol{Name: "_encode_pointer", Value: 0xad0, SectionNumber: 1, Type: 0x20, StorageClass: 0x2},
+ &pe.Symbol{Name: ".text", Value: 0xac0, SectionNumber: 1, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".data", Value: 0xd0, SectionNumber: 2, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".bss", Value: 0x610, SectionNumber: 6, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".xdata", Value: 0x104, SectionNumber: 5, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".pdata", Value: 0x114, SectionNumber: 4, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".debug_info", Value: 0x62a8, SectionNumber: 11, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".debug_abbrev", Value: 0xdcb, SectionNumber: 12, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".debug_aranges", Value: 0x230, SectionNumber: 10, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".debug_line", Value: 0x11c8, SectionNumber: 13, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".rdata$zzz", Value: 0x460, SectionNumber: 3, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".debug_frame", Value: 0x490, SectionNumber: 14, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".file", Value: 0x1f0, SectionNumber: -2, Type: 0x0, StorageClass: 0x67},
+ &pe.Symbol{Name: "__report_error", Value: 0xae0, SectionNumber: 1, Type: 0x20, StorageClass: 0x3},
+ &pe.Symbol{Name: "__write_memory.part.0", Value: 0xb50, SectionNumber: 1, Type: 0x20, StorageClass: 0x3},
+ &pe.Symbol{Name: "maxSections", Value: 0x624, SectionNumber: 6, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: "the_secs", Value: 0x628, SectionNumber: 6, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: "_pei386_runtime_relocator", Value: 0xcd0, SectionNumber: 1, Type: 0x20, StorageClass: 0x2},
+ &pe.Symbol{Name: "was_init.70054", Value: 0x620, SectionNumber: 6, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".text", Value: 0xae0, SectionNumber: 1, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".data", Value: 0xd0, SectionNumber: 2, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".bss", Value: 0x620, SectionNumber: 6, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".rdata", Value: 0x160, SectionNumber: 3, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".xdata", Value: 0x10c, SectionNumber: 5, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".pdata", Value: 0x12c, SectionNumber: 4, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".debug_info", Value: 0x67b9, SectionNumber: 11, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".debug_abbrev", Value: 0xe52, SectionNumber: 12, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".debug_loc", Value: 0xda1, SectionNumber: 16, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".debug_aranges", Value: 0x260, SectionNumber: 10, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".debug_ranges", Value: 0xe0, SectionNumber: 17, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".debug_line", Value: 0x12f7, SectionNumber: 13, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".debug_str", Value: 0x26f, SectionNumber: 15, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".rdata$zzz", Value: 0x480, SectionNumber: 3, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".debug_frame", Value: 0x4d8, SectionNumber: 14, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".file", Value: 0x202, SectionNumber: -2, Type: 0x0, StorageClass: 0x67},
+ &pe.Symbol{Name: ".text", Value: 0xff0, SectionNumber: 1, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".data", Value: 0xd0, SectionNumber: 2, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".bss", Value: 0x630, SectionNumber: 6, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".debug_info", Value: 0x79a7, SectionNumber: 11, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".debug_abbrev", Value: 0x1174, SectionNumber: 12, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".debug_aranges", Value: 0x290, SectionNumber: 10, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".debug_line", Value: 0x157b, SectionNumber: 13, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".rdata$zzz", Value: 0x4a0, SectionNumber: 3, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".file", Value: 0x227, SectionNumber: -2, Type: 0x0, StorageClass: 0x67},
+ &pe.Symbol{Name: "__mingw_SEH_error_handler", Value: 0xff0, SectionNumber: 1, Type: 0x20, StorageClass: 0x2},
+ &pe.Symbol{Name: "__mingw_init_ehandler", Value: 0x11b0, SectionNumber: 1, Type: 0x20, StorageClass: 0x2},
+ &pe.Symbol{Name: "was_here.69886", Value: 0x648, SectionNumber: 6, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: "emu_pdata", Value: 0x760, SectionNumber: 6, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: "emu_xdata", Value: 0x660, SectionNumber: 6, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: "_gnu_exception_handler", Value: 0x12a0, SectionNumber: 1, Type: 0x20, StorageClass: 0x2},
+ &pe.Symbol{Name: ".text", Value: 0xff0, SectionNumber: 1, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".data", Value: 0xd0, SectionNumber: 2, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".bss", Value: 0x640, SectionNumber: 6, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".xdata", Value: 0x144, SectionNumber: 5, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".pdata", Value: 0x150, SectionNumber: 4, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".rdata", Value: 0x270, SectionNumber: 3, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".debug_info", Value: 0x7a83, SectionNumber: 11, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".debug_abbrev", Value: 0x119e, SectionNumber: 12, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".debug_loc", Value: 0x161e, SectionNumber: 16, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".debug_aranges", Value: 0x2b0, SectionNumber: 10, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".debug_line", Value: 0x1606, SectionNumber: 13, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".debug_str", Value: 0x278, SectionNumber: 15, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".rdata$zzz", Value: 0x4c0, SectionNumber: 3, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".debug_frame", Value: 0x5d0, SectionNumber: 14, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".file", Value: 0x24b, SectionNumber: -2, Type: 0x0, StorageClass: 0x67},
+ &pe.Symbol{Name: "__mingwthr_run_key_dtors.part.0", Value: 0x1450, SectionNumber: 1, Type: 0x20, StorageClass: 0x3},
+ &pe.Symbol{Name: "__mingwthr_cs", Value: 0x900, SectionNumber: 6, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: "key_dtor_list", Value: 0x8e0, SectionNumber: 6, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: "___w64_mingwthr_add_key_dtor", Value: 0x14c0, SectionNumber: 1, Type: 0x20, StorageClass: 0x2},
+ &pe.Symbol{Name: "__mingwthr_cs_init", Value: 0x8e8, SectionNumber: 6, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: "___w64_mingwthr_remove_key_dtor", Value: 0x1540, SectionNumber: 1, Type: 0x20, StorageClass: 0x2},
+ &pe.Symbol{Name: "__mingw_TLScallback", Value: 0x15e0, SectionNumber: 1, Type: 0x20, StorageClass: 0x2},
+ &pe.Symbol{Name: ".text", Value: 0x1450, SectionNumber: 1, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".data", Value: 0xd0, SectionNumber: 2, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".bss", Value: 0x8e0, SectionNumber: 6, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".xdata", Value: 0x168, SectionNumber: 5, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".pdata", Value: 0x174, SectionNumber: 4, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".debug_info", Value: 0x8f89, SectionNumber: 11, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".debug_abbrev", Value: 0x1402, SectionNumber: 12, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".debug_loc", Value: 0x1f13, SectionNumber: 16, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".debug_aranges", Value: 0x2e0, SectionNumber: 10, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".debug_ranges", Value: 0x330, SectionNumber: 17, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".debug_line", Value: 0x185b, SectionNumber: 13, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".rdata$zzz", Value: 0x4e0, SectionNumber: 3, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".debug_frame", Value: 0x6d8, SectionNumber: 14, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".file", Value: 0x25d, SectionNumber: -2, Type: 0x0, StorageClass: 0x67},
+ &pe.Symbol{Name: ".text", Value: 0x16d0, SectionNumber: 1, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".data", Value: 0xd0, SectionNumber: 2, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".bss", Value: 0x940, SectionNumber: 6, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".debug_info", Value: 0x98ad, SectionNumber: 11, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".debug_abbrev", Value: 0x15e4, SectionNumber: 12, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".debug_aranges", Value: 0x310, SectionNumber: 10, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".debug_line", Value: 0x1a30, SectionNumber: 13, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".rdata$zzz", Value: 0x500, SectionNumber: 3, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".file", Value: 0x26f, SectionNumber: -2, Type: 0x0, StorageClass: 0x67},
+ &pe.Symbol{Name: ".text", Value: 0x16d0, SectionNumber: 1, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".data", Value: 0xe0, SectionNumber: 2, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".bss", Value: 0x940, SectionNumber: 6, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".debug_info", Value: 0x9989, SectionNumber: 11, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".debug_abbrev", Value: 0x160e, SectionNumber: 12, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".debug_aranges", Value: 0x330, SectionNumber: 10, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".debug_line", Value: 0x1aba, SectionNumber: 13, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".rdata$zzz", Value: 0x520, SectionNumber: 3, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".file", Value: 0x298, SectionNumber: -2, Type: 0x0, StorageClass: 0x67},
+ &pe.Symbol{Name: "_ValidateImageBase.part.0", Value: 0x16d0, SectionNumber: 1, Type: 0x20, StorageClass: 0x3},
+ &pe.Symbol{Name: "_ValidateImageBase", Value: 0x16f0, SectionNumber: 1, Type: 0x20, StorageClass: 0x2},
+ &pe.Symbol{Name: "_FindPESection", Value: 0x1710, SectionNumber: 1, Type: 0x20, StorageClass: 0x2},
+ &pe.Symbol{Name: "_FindPESectionByName", Value: 0x1760, SectionNumber: 1, Type: 0x20, StorageClass: 0x2},
+ &pe.Symbol{Name: "__mingw_GetSectionForAddress", Value: 0x1810, SectionNumber: 1, Type: 0x20, StorageClass: 0x2},
+ &pe.Symbol{Name: "__mingw_GetSectionCount", Value: 0x1860, SectionNumber: 1, Type: 0x20, StorageClass: 0x2},
+ &pe.Symbol{Name: "_FindPESectionExec", Value: 0x18b0, SectionNumber: 1, Type: 0x20, StorageClass: 0x2},
+ &pe.Symbol{Name: "_GetPEImageBase", Value: 0x1950, SectionNumber: 1, Type: 0x20, StorageClass: 0x2},
+ &pe.Symbol{Name: "_IsNonwritableInCurrentImage", Value: 0x19a0, SectionNumber: 1, Type: 0x20, StorageClass: 0x2},
+ &pe.Symbol{Name: "__mingw_enum_import_library_names", Value: 0x1a00, SectionNumber: 1, Type: 0x20, StorageClass: 0x2},
+ &pe.Symbol{Name: ".text", Value: 0x16d0, SectionNumber: 1, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".data", Value: 0xe0, SectionNumber: 2, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".bss", Value: 0x950, SectionNumber: 6, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".xdata", Value: 0x198, SectionNumber: 5, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".pdata", Value: 0x1a4, SectionNumber: 4, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".debug_info", Value: 0x9ab9, SectionNumber: 11, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".debug_abbrev", Value: 0x1638, SectionNumber: 12, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".debug_loc", Value: 0x25ce, SectionNumber: 16, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".debug_aranges", Value: 0x350, SectionNumber: 10, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".debug_ranges", Value: 0x360, SectionNumber: 17, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".debug_line", Value: 0x1b4e, SectionNumber: 13, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".debug_str", Value: 0x2ac, SectionNumber: 15, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".rdata$zzz", Value: 0x540, SectionNumber: 3, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".debug_frame", Value: 0x808, SectionNumber: 14, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".file", Value: 0x2aa, SectionNumber: -2, Type: 0x0, StorageClass: 0x67},
+ &pe.Symbol{Name: ".debug_info", Value: 0xad5d, SectionNumber: 11, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".debug_abbrev", Value: 0x18a1, SectionNumber: 12, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".debug_line", Value: 0x1d87, SectionNumber: 13, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".text", Value: 0x1ab0, SectionNumber: 1, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".data", Value: 0xe0, SectionNumber: 2, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".bss", Value: 0x950, SectionNumber: 6, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".debug_aranges", Value: 0x380, SectionNumber: 10, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".debug_frame", Value: 0xa98, SectionNumber: 14, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".file", Value: 0x2bc, SectionNumber: -2, Type: 0x0, StorageClass: 0x67},
+ &pe.Symbol{Name: ".text", Value: 0x1af0, SectionNumber: 1, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".data", Value: 0xe0, SectionNumber: 2, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".bss", Value: 0x950, SectionNumber: 6, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".debug_info", Value: 0xae44, SectionNumber: 11, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".debug_abbrev", Value: 0x18b5, SectionNumber: 12, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".debug_aranges", Value: 0x3b0, SectionNumber: 10, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".debug_line", Value: 0x1e2a, SectionNumber: 13, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".rdata$zzz", Value: 0x560, SectionNumber: 3, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".file", Value: 0x399, SectionNumber: -2, Type: 0x0, StorageClass: 0x67},
+ &pe.Symbol{Name: ".text", Value: 0x1af0, SectionNumber: 1, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".data", Value: 0xe0, SectionNumber: 2, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".bss", Value: 0x950, SectionNumber: 6, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".debug_info", Value: 0xb9a0, SectionNumber: 11, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".debug_abbrev", Value: 0x1928, SectionNumber: 12, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".debug_aranges", Value: 0x3d0, SectionNumber: 10, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".debug_line", Value: 0x1f18, SectionNumber: 13, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".rdata$zzz", Value: 0x580, SectionNumber: 3, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".text", Value: 0x1af0, SectionNumber: 1, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".data", Value: 0xf0, SectionNumber: 2, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".bss", Value: 0x950, SectionNumber: 6, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$7", Value: 0x7b8, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$5", Value: 0x38c, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$4", Value: 0x1dc, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$6", Value: 0x6d2, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".text", Value: 0x1af8, SectionNumber: 1, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".data", Value: 0xf0, SectionNumber: 2, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".bss", Value: 0x950, SectionNumber: 6, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$7", Value: 0x7b4, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$5", Value: 0x384, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$4", Value: 0x1d4, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$6", Value: 0x6c6, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".text", Value: 0x1b00, SectionNumber: 1, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".data", Value: 0xf0, SectionNumber: 2, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".bss", Value: 0x950, SectionNumber: 6, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$7", Value: 0x7b0, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$5", Value: 0x37c, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$4", Value: 0x1cc, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$6", Value: 0x6bc, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".text", Value: 0x1b08, SectionNumber: 1, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".data", Value: 0xf0, SectionNumber: 2, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".bss", Value: 0x950, SectionNumber: 6, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$7", Value: 0x7ac, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$5", Value: 0x374, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$4", Value: 0x1c4, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$6", Value: 0x6b2, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".text", Value: 0x1b10, SectionNumber: 1, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".data", Value: 0xf0, SectionNumber: 2, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".bss", Value: 0x950, SectionNumber: 6, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$7", Value: 0x7a8, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$5", Value: 0x36c, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$4", Value: 0x1bc, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$6", Value: 0x6a8, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".text", Value: 0x1b18, SectionNumber: 1, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".data", Value: 0xf0, SectionNumber: 2, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".bss", Value: 0x950, SectionNumber: 6, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$7", Value: 0x7a4, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$5", Value: 0x364, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$4", Value: 0x1b4, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$6", Value: 0x69e, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".text", Value: 0x1b20, SectionNumber: 1, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".data", Value: 0xf0, SectionNumber: 2, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".bss", Value: 0x950, SectionNumber: 6, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$7", Value: 0x7a0, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$5", Value: 0x35c, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$4", Value: 0x1ac, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$6", Value: 0x694, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".text", Value: 0x1b28, SectionNumber: 1, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".data", Value: 0xf0, SectionNumber: 2, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".bss", Value: 0x950, SectionNumber: 6, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$7", Value: 0x79c, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$5", Value: 0x354, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$4", Value: 0x1a4, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$6", Value: 0x68a, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".text", Value: 0x1b30, SectionNumber: 1, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".data", Value: 0xf0, SectionNumber: 2, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".bss", Value: 0x950, SectionNumber: 6, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$7", Value: 0x798, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$5", Value: 0x34c, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$4", Value: 0x19c, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$6", Value: 0x682, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".text", Value: 0x1b38, SectionNumber: 1, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".data", Value: 0xf0, SectionNumber: 2, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".bss", Value: 0x950, SectionNumber: 6, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$7", Value: 0x794, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$5", Value: 0x344, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$4", Value: 0x194, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$6", Value: 0x678, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".text", Value: 0x1b40, SectionNumber: 1, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".data", Value: 0xf0, SectionNumber: 2, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".bss", Value: 0x950, SectionNumber: 6, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$7", Value: 0x790, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$5", Value: 0x33c, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$4", Value: 0x18c, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$6", Value: 0x670, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".text", Value: 0x1b48, SectionNumber: 1, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".data", Value: 0xf0, SectionNumber: 2, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".bss", Value: 0x950, SectionNumber: 6, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$7", Value: 0x78c, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$5", Value: 0x334, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$4", Value: 0x184, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$6", Value: 0x666, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".text", Value: 0x1b50, SectionNumber: 1, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".data", Value: 0xf0, SectionNumber: 2, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".bss", Value: 0x950, SectionNumber: 6, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$7", Value: 0x788, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$5", Value: 0x32c, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$4", Value: 0x17c, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$6", Value: 0x65e, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".text", Value: 0x1b58, SectionNumber: 1, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".data", Value: 0xf0, SectionNumber: 2, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".bss", Value: 0x950, SectionNumber: 6, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$7", Value: 0x784, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$5", Value: 0x324, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$4", Value: 0x174, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$6", Value: 0x654, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".text", Value: 0x1b60, SectionNumber: 1, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".data", Value: 0xf0, SectionNumber: 2, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".bss", Value: 0x950, SectionNumber: 6, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$7", Value: 0x780, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$5", Value: 0x31c, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$4", Value: 0x16c, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$6", Value: 0x64a, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".text", Value: 0x1b68, SectionNumber: 1, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".data", Value: 0xf0, SectionNumber: 2, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".bss", Value: 0x950, SectionNumber: 6, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$7", Value: 0x77c, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$5", Value: 0x314, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$4", Value: 0x164, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$6", Value: 0x642, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".text", Value: 0x1b70, SectionNumber: 1, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".data", Value: 0xf0, SectionNumber: 2, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".bss", Value: 0x950, SectionNumber: 6, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$7", Value: 0x778, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$5", Value: 0x30c, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$4", Value: 0x15c, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$6", Value: 0x636, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".text", Value: 0x1b78, SectionNumber: 1, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".data", Value: 0xf0, SectionNumber: 2, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".bss", Value: 0x950, SectionNumber: 6, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$7", Value: 0x774, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$5", Value: 0x304, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$4", Value: 0x154, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$6", Value: 0x62c, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".text", Value: 0x1b78, SectionNumber: 1, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".data", Value: 0xf0, SectionNumber: 2, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".bss", Value: 0x950, SectionNumber: 6, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$7", Value: 0x770, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$5", Value: 0x2fc, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$4", Value: 0x14c, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$6", Value: 0x622, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".text", Value: 0x1b80, SectionNumber: 1, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".data", Value: 0xf0, SectionNumber: 2, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".bss", Value: 0x950, SectionNumber: 6, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$7", Value: 0x76c, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$5", Value: 0x2f4, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$4", Value: 0x144, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$6", Value: 0x614, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".text", Value: 0x1b88, SectionNumber: 1, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".data", Value: 0xf0, SectionNumber: 2, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".bss", Value: 0x950, SectionNumber: 6, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$7", Value: 0x768, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$5", Value: 0x2ec, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$4", Value: 0x13c, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$6", Value: 0x60a, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".text", Value: 0x1b88, SectionNumber: 1, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".data", Value: 0xf0, SectionNumber: 2, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".bss", Value: 0x950, SectionNumber: 6, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$7", Value: 0x764, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$5", Value: 0x2e4, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$4", Value: 0x134, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$6", Value: 0x5f6, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".text", Value: 0x1b90, SectionNumber: 1, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".data", Value: 0xf0, SectionNumber: 2, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".bss", Value: 0x950, SectionNumber: 6, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$7", Value: 0x760, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$5", Value: 0x2dc, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$4", Value: 0x12c, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$6", Value: 0x5e4, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".text", Value: 0x1b98, SectionNumber: 1, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".data", Value: 0xf0, SectionNumber: 2, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".bss", Value: 0x950, SectionNumber: 6, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$7", Value: 0x75c, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$5", Value: 0x2d4, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$4", Value: 0x124, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$6", Value: 0x5d4, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".text", Value: 0x1ba0, SectionNumber: 1, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".data", Value: 0xf0, SectionNumber: 2, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".bss", Value: 0x950, SectionNumber: 6, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$7", Value: 0x758, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$5", Value: 0x2cc, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$4", Value: 0x11c, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$6", Value: 0x5c6, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".text", Value: 0x1ba8, SectionNumber: 1, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".data", Value: 0xf0, SectionNumber: 2, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".bss", Value: 0x950, SectionNumber: 6, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$7", Value: 0x754, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$5", Value: 0x2c4, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$4", Value: 0x114, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$6", Value: 0x5ba, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".text", Value: 0x1ba8, SectionNumber: 1, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".data", Value: 0xf0, SectionNumber: 2, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".bss", Value: 0x950, SectionNumber: 6, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$7", Value: 0x750, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$5", Value: 0x2bc, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$4", Value: 0x10c, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$6", Value: 0x5aa, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".text", Value: 0x1bb0, SectionNumber: 1, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".data", Value: 0xf0, SectionNumber: 2, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".bss", Value: 0x950, SectionNumber: 6, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$7", Value: 0x74c, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$5", Value: 0x2b4, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$4", Value: 0x104, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$6", Value: 0x59c, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".text", Value: 0x1bb8, SectionNumber: 1, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".data", Value: 0xf0, SectionNumber: 2, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".bss", Value: 0x950, SectionNumber: 6, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$7", Value: 0x748, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$5", Value: 0x2ac, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$4", Value: 0xfc, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$6", Value: 0x584, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".file", Value: 0x3b7, SectionNumber: -2, Type: 0x0, StorageClass: 0x67},
+ &pe.Symbol{Name: "mingw_get_invalid_parameter_handler", Value: 0x1bc0, SectionNumber: 1, Type: 0x20, StorageClass: 0x3},
+ &pe.Symbol{Name: "handler", Value: 0x950, SectionNumber: 6, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: "_get_invalid_parameter_handler", Value: 0x1bc0, SectionNumber: 1, Type: 0x20, StorageClass: 0x2},
+ &pe.Symbol{Name: "mingw_set_invalid_parameter_handler", Value: 0x1bd0, SectionNumber: 1, Type: 0x20, StorageClass: 0x3},
+ &pe.Symbol{Name: "_set_invalid_parameter_handler", Value: 0x1bd0, SectionNumber: 1, Type: 0x20, StorageClass: 0x2},
+ &pe.Symbol{Name: ".text", Value: 0x1bc0, SectionNumber: 1, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".data", Value: 0xf0, SectionNumber: 2, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".bss", Value: 0x950, SectionNumber: 6, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".xdata", Value: 0x1f8, SectionNumber: 5, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".pdata", Value: 0x21c, SectionNumber: 4, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".debug_info", Value: 0xba98, SectionNumber: 11, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".debug_abbrev", Value: 0x1952, SectionNumber: 12, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".debug_aranges", Value: 0x3f0, SectionNumber: 10, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".debug_line", Value: 0x1fa9, SectionNumber: 13, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".rdata$zzz", Value: 0x5a0, SectionNumber: 3, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".debug_frame", Value: 0xae0, SectionNumber: 14, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".file", Value: 0x3c5, SectionNumber: -2, Type: 0x0, StorageClass: 0x67},
+ &pe.Symbol{Name: "hname", Value: 0xfc, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: "fthunk", Value: 0x2ac, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".text", Value: 0x1be0, SectionNumber: 1, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".data", Value: 0x100, SectionNumber: 2, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".bss", Value: 0x960, SectionNumber: 6, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$2", Value: 0x14, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$4", Value: 0xfc, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$5", Value: 0x2ac, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".file", Value: 0x474, SectionNumber: -2, Type: 0x0, StorageClass: 0x67},
+ &pe.Symbol{Name: ".text", Value: 0x1be0, SectionNumber: 1, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".data", Value: 0x100, SectionNumber: 2, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".bss", Value: 0x960, SectionNumber: 6, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$4", Value: 0x1e4, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$5", Value: 0x394, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$7", Value: 0x7bc, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".text", Value: 0x1be0, SectionNumber: 1, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".data", Value: 0x100, SectionNumber: 2, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".bss", Value: 0x960, SectionNumber: 6, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$7", Value: 0x734, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$5", Value: 0x29c, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$4", Value: 0xec, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$6", Value: 0x574, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".text", Value: 0x1be8, SectionNumber: 1, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".data", Value: 0x100, SectionNumber: 2, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".bss", Value: 0x960, SectionNumber: 6, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$7", Value: 0x730, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$5", Value: 0x294, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$4", Value: 0xe4, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$6", Value: 0x562, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".text", Value: 0x1bf0, SectionNumber: 1, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".data", Value: 0x100, SectionNumber: 2, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".bss", Value: 0x960, SectionNumber: 6, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$7", Value: 0x72c, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$5", Value: 0x28c, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$4", Value: 0xdc, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$6", Value: 0x546, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".text", Value: 0x1bf8, SectionNumber: 1, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".data", Value: 0x100, SectionNumber: 2, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".bss", Value: 0x960, SectionNumber: 6, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$7", Value: 0x728, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$5", Value: 0x284, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$4", Value: 0xd4, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$6", Value: 0x538, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".text", Value: 0x1c00, SectionNumber: 1, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".data", Value: 0x100, SectionNumber: 2, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".bss", Value: 0x960, SectionNumber: 6, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$7", Value: 0x724, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$5", Value: 0x27c, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$4", Value: 0xcc, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$6", Value: 0x524, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".text", Value: 0x1c08, SectionNumber: 1, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".data", Value: 0x100, SectionNumber: 2, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".bss", Value: 0x960, SectionNumber: 6, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$7", Value: 0x720, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$5", Value: 0x274, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$4", Value: 0xc4, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$6", Value: 0x51c, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".text", Value: 0x1c10, SectionNumber: 1, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".data", Value: 0x100, SectionNumber: 2, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".bss", Value: 0x960, SectionNumber: 6, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$7", Value: 0x71c, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$5", Value: 0x26c, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$4", Value: 0xbc, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$6", Value: 0x4fe, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".text", Value: 0x1c18, SectionNumber: 1, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".data", Value: 0x100, SectionNumber: 2, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".bss", Value: 0x960, SectionNumber: 6, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$7", Value: 0x718, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$5", Value: 0x264, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$4", Value: 0xb4, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$6", Value: 0x4ea, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".text", Value: 0x1c20, SectionNumber: 1, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".data", Value: 0x100, SectionNumber: 2, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".bss", Value: 0x960, SectionNumber: 6, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$7", Value: 0x714, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$5", Value: 0x25c, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$4", Value: 0xac, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$6", Value: 0x4d0, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".text", Value: 0x1c28, SectionNumber: 1, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".data", Value: 0x100, SectionNumber: 2, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".bss", Value: 0x960, SectionNumber: 6, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$7", Value: 0x710, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$5", Value: 0x254, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$4", Value: 0xa4, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$6", Value: 0x4bc, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".text", Value: 0x1c30, SectionNumber: 1, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".data", Value: 0x100, SectionNumber: 2, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".bss", Value: 0x960, SectionNumber: 6, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$7", Value: 0x70c, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$5", Value: 0x24c, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$4", Value: 0x9c, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$6", Value: 0x4a6, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".text", Value: 0x1c38, SectionNumber: 1, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".data", Value: 0x100, SectionNumber: 2, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".bss", Value: 0x960, SectionNumber: 6, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$7", Value: 0x708, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$5", Value: 0x244, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$4", Value: 0x94, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$6", Value: 0x48c, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".text", Value: 0x1c40, SectionNumber: 1, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".data", Value: 0x100, SectionNumber: 2, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".bss", Value: 0x960, SectionNumber: 6, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$7", Value: 0x704, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$5", Value: 0x23c, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$4", Value: 0x8c, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$6", Value: 0x474, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".text", Value: 0x1c48, SectionNumber: 1, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".data", Value: 0x100, SectionNumber: 2, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".bss", Value: 0x960, SectionNumber: 6, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$7", Value: 0x700, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$5", Value: 0x234, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$4", Value: 0x84, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$6", Value: 0x458, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".text", Value: 0x1c50, SectionNumber: 1, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".data", Value: 0x100, SectionNumber: 2, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".bss", Value: 0x960, SectionNumber: 6, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$7", Value: 0x6fc, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$5", Value: 0x22c, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$4", Value: 0x7c, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$6", Value: 0x448, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".text", Value: 0x1c58, SectionNumber: 1, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".data", Value: 0x100, SectionNumber: 2, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".bss", Value: 0x960, SectionNumber: 6, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$7", Value: 0x6f8, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$5", Value: 0x224, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$4", Value: 0x74, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$6", Value: 0x42e, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".text", Value: 0x1c60, SectionNumber: 1, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".data", Value: 0x100, SectionNumber: 2, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".bss", Value: 0x960, SectionNumber: 6, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$7", Value: 0x6f4, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$5", Value: 0x21c, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$4", Value: 0x6c, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$6", Value: 0x41c, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".text", Value: 0x1c68, SectionNumber: 1, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".data", Value: 0x100, SectionNumber: 2, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".bss", Value: 0x960, SectionNumber: 6, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$7", Value: 0x6f0, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$5", Value: 0x214, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$4", Value: 0x64, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$6", Value: 0x40c, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".text", Value: 0x1c70, SectionNumber: 1, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".data", Value: 0x100, SectionNumber: 2, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".bss", Value: 0x960, SectionNumber: 6, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$7", Value: 0x6ec, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$5", Value: 0x20c, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$4", Value: 0x5c, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$6", Value: 0x3f6, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".text", Value: 0x1c78, SectionNumber: 1, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".data", Value: 0x100, SectionNumber: 2, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".bss", Value: 0x960, SectionNumber: 6, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$7", Value: 0x6e8, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$5", Value: 0x204, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$4", Value: 0x54, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$6", Value: 0x3e0, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".text", Value: 0x1c80, SectionNumber: 1, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".data", Value: 0x100, SectionNumber: 2, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".bss", Value: 0x960, SectionNumber: 6, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$7", Value: 0x6e4, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$5", Value: 0x1fc, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$4", Value: 0x4c, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$6", Value: 0x3cc, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".text", Value: 0x1c88, SectionNumber: 1, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".data", Value: 0x100, SectionNumber: 2, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".bss", Value: 0x960, SectionNumber: 6, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$7", Value: 0x6e0, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$5", Value: 0x1f4, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$4", Value: 0x44, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$6", Value: 0x3b4, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".text", Value: 0x1c90, SectionNumber: 1, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".data", Value: 0x100, SectionNumber: 2, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".bss", Value: 0x960, SectionNumber: 6, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$7", Value: 0x6dc, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$5", Value: 0x1ec, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$4", Value: 0x3c, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$6", Value: 0x39c, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".file", Value: 0x482, SectionNumber: -2, Type: 0x0, StorageClass: 0x67},
+ &pe.Symbol{Name: "hname", Value: 0x3c, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: "fthunk", Value: 0x1ec, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".text", Value: 0x1ca0, SectionNumber: 1, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".data", Value: 0x100, SectionNumber: 2, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".bss", Value: 0x960, SectionNumber: 6, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$2", Value: 0x0, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$4", Value: 0x3c, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$5", Value: 0x1ec, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".file", Value: 0x490, SectionNumber: -2, Type: 0x0, StorageClass: 0x67},
+ &pe.Symbol{Name: ".text", Value: 0x1ca0, SectionNumber: 1, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".data", Value: 0x100, SectionNumber: 2, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".bss", Value: 0x960, SectionNumber: 6, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$4", Value: 0xf4, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$5", Value: 0x2a4, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$7", Value: 0x738, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".file", Value: 0x49a, SectionNumber: -2, Type: 0x0, StorageClass: 0x67},
+ &pe.Symbol{Name: ".text", Value: 0x1ca0, SectionNumber: 1, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".data", Value: 0x100, SectionNumber: 2, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".bss", Value: 0x960, SectionNumber: 6, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".rdata$zzz", Value: 0x5c0, SectionNumber: 3, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: "__xc_z", Value: 0x10, SectionNumber: 8, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "___RUNTIME_PSEUDO_RELOC_LIST__", Value: 0x4045e0, SectionNumber: -1, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "__imp_GetStartupInfoA", Value: 0x21c, SectionNumber: 7, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "__imp_abort", Value: 0x32c, SectionNumber: 7, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "__lib64_libkernel32_a_iname", Value: 0x738, SectionNumber: 7, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "__data_start__", Value: 0x0, SectionNumber: 2, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "___DTOR_LIST__", Value: 0x1cb0, SectionNumber: 1, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "__imp__fmode", Value: 0x304, SectionNumber: 7, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "__imp__lock", Value: 0x314, SectionNumber: 7, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "__imp_RtlVirtualUnwind", Value: 0x264, SectionNumber: 7, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "SetUnhandledExceptionFilter", Value: 0x1c10, SectionNumber: 1, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "__imp_calloc", Value: 0x334, SectionNumber: 7, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "_lock", Value: 0x1b68, SectionNumber: 1, Type: 0x20, StorageClass: 0x2},
+ &pe.Symbol{Name: "___tls_start__", Value: 0x0, SectionNumber: 9, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "__ImageBase", Value: 0x400000, SectionNumber: -1, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "__xl_a", Value: 0x38, SectionNumber: 8, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "GetLastError", Value: 0x1c68, SectionNumber: 1, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "GetSystemTimeAsFileTime", Value: 0x1c58, SectionNumber: 1, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "mingw_initltssuo_force", Value: 0x5f0, SectionNumber: 6, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "__rt_psrelocs_start", Value: 0x5e0, SectionNumber: 3, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "_cexit", Value: 0x1b78, SectionNumber: 1, Type: 0x20, StorageClass: 0x2},
+ &pe.Symbol{Name: "__imp___dllonexit", Value: 0x2b4, SectionNumber: 7, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "__dll_characteristics__", Value: 0x0, SectionNumber: -1, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "__size_of_stack_commit__", Value: 0x1000, SectionNumber: -1, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "__iob_func", Value: 0x1ba0, SectionNumber: 1, Type: 0x20, StorageClass: 0x2},
+ &pe.Symbol{Name: "__imp__acmdln", Value: 0x2ec, SectionNumber: 7, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "__size_of_stack_reserve__", Value: 0x200000, SectionNumber: -1, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "__major_subsystem_version__", Value: 0x5, SectionNumber: -1, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "___crt_xl_start__", Value: 0x38, SectionNumber: 8, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "__imp_DeleteCriticalSection", Value: 0x1ec, SectionNumber: 7, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "__xl_d", Value: 0x48, SectionNumber: 8, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "__imp__set_invalid_parameter_handler", Value: 0xf8, SectionNumber: 2, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "_tls_end", Value: 0x60, SectionNumber: 9, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "VirtualQuery", Value: 0x1be0, SectionNumber: 1, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "___crt_xi_start__", Value: 0x18, SectionNumber: 8, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "__imp__amsg_exit", Value: 0x2f4, SectionNumber: 7, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "___crt_xi_end__", Value: 0x38, SectionNumber: 8, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "_tls_start", Value: 0x0, SectionNumber: 9, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "memcpy", Value: 0x1b18, SectionNumber: 1, Type: 0x20, StorageClass: 0x2},
+ &pe.Symbol{Name: "__mingw_winmain_lpCmdLine", Value: 0x960, SectionNumber: 6, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "__mingw_oldexcpt_handler", Value: 0x640, SectionNumber: 6, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "__imp_GetCurrentThreadId", Value: 0x20c, SectionNumber: 7, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "malloc", Value: 0x1b20, SectionNumber: 1, Type: 0x20, StorageClass: 0x2},
+ &pe.Symbol{Name: "GetCurrentProcessId", Value: 0x1c78, SectionNumber: 1, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "_CRT_MT", Value: 0xd0, SectionNumber: 2, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "TlsGetValue", Value: 0x1bf8, SectionNumber: 1, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "TerminateProcess", Value: 0x1c00, SectionNumber: 1, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "__bss_start__", Value: 0x0, SectionNumber: 6, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "__imp___C_specific_handler", Value: 0x2ac, SectionNumber: 7, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "___RUNTIME_PSEUDO_RELOC_LIST_END__", Value: 0x4045e0, SectionNumber: -1, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "RtlLookupFunctionEntry", Value: 0x1c20, SectionNumber: 1, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "__size_of_heap_commit__", Value: 0x1000, SectionNumber: -1, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "__imp_GetLastError", Value: 0x214, SectionNumber: 7, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "__imp_free", Value: 0x34c, SectionNumber: 7, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "__imp_RtlLookupFunctionEntry", Value: 0x25c, SectionNumber: 7, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "VirtualProtect", Value: 0x1be8, SectionNumber: 1, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "mingw_app_type", Value: 0x610, SectionNumber: 6, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "___crt_xp_start__", Value: 0x58, SectionNumber: 8, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "__imp_LeaveCriticalSection", Value: 0x23c, SectionNumber: 7, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "__mingw_pinit", Value: 0x28, SectionNumber: 8, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "__C_specific_handler", Value: 0x1bb8, SectionNumber: 1, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "__imp_GetTickCount", Value: 0x22c, SectionNumber: 7, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "abort", Value: 0x1b50, SectionNumber: 1, Type: 0x20, StorageClass: 0x2},
+ &pe.Symbol{Name: "___crt_xp_end__", Value: 0x58, SectionNumber: 8, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "__dll__", Value: 0x0, SectionNumber: -1, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "__minor_os_version__", Value: 0x0, SectionNumber: -1, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "__imp_GetSystemTimeAsFileTime", Value: 0x224, SectionNumber: 7, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "EnterCriticalSection", Value: 0x1c88, SectionNumber: 1, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "_MINGW_INSTALL_DEBUG_MATHERR", Value: 0xe0, SectionNumber: 2, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "__image_base__", Value: 0x400000, SectionNumber: -1, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "__imp_write", Value: 0x38c, SectionNumber: 7, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "RtlCaptureContext", Value: 0x1c28, SectionNumber: 1, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "__section_alignment__", Value: 0x1000, SectionNumber: -1, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "__native_dllmain_reason", Value: 0xb4, SectionNumber: 2, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "calloc", Value: 0x1b48, SectionNumber: 1, Type: 0x20, StorageClass: 0x2},
+ &pe.Symbol{Name: "_tls_used", Value: 0x20, SectionNumber: 9, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "UnhandledExceptionFilter", Value: 0x1bf0, SectionNumber: 1, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "mingw_initcharmax", Value: 0x50, SectionNumber: 6, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "__IAT_end__", Value: 0x39c, SectionNumber: 7, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "write", Value: 0x1af0, SectionNumber: 1, Type: 0x20, StorageClass: 0x2},
+ &pe.Symbol{Name: "__imp_memcpy", Value: 0x364, SectionNumber: 7, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "__RUNTIME_PSEUDO_RELOC_LIST__", Value: 0x4045e0, SectionNumber: -1, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "fprintf", Value: 0x1b38, SectionNumber: 1, Type: 0x20, StorageClass: 0x2},
+ &pe.Symbol{Name: "soong_build_number", Value: 0x20, SectionNumber: 2, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "__imp_RtlAddFunctionTable", Value: 0x24c, SectionNumber: 7, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "Sleep", Value: 0x1c08, SectionNumber: 1, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "mingw_pcppinit", Value: 0x8, SectionNumber: 8, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "__data_end__", Value: 0x120, SectionNumber: 2, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "__imp_fwrite", Value: 0x354, SectionNumber: 7, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "__CTOR_LIST__", Value: 0x1ca0, SectionNumber: 1, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "__imp___getmainargs", Value: 0x2bc, SectionNumber: 7, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "_head_lib64_libkernel32_a", Value: 0x0, SectionNumber: 7, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "__bss_end__", Value: 0x9b0, SectionNumber: 6, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "__xi_z", Value: 0x30, SectionNumber: 8, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "GetTickCount", Value: 0x1c50, SectionNumber: 1, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "_head_lib64_libmsvcrt_a", Value: 0x14, SectionNumber: 7, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "__native_vcclrit_reason", Value: 0xb0, SectionNumber: 2, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "___crt_xc_end__", Value: 0x18, SectionNumber: 8, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "RtlAddFunctionTable", Value: 0x1c30, SectionNumber: 1, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "__imp_EnterCriticalSection", Value: 0x1f4, SectionNumber: 7, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "_tls_index", Value: 0x5fc, SectionNumber: 6, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "signal", Value: 0x1b10, SectionNumber: 1, Type: 0x20, StorageClass: 0x2},
+ &pe.Symbol{Name: "__native_startup_state", Value: 0x980, SectionNumber: 6, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "___crt_xc_start__", Value: 0x0, SectionNumber: 8, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "__onexitbegin", Value: 0x970, SectionNumber: 6, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "__imp_GetCurrentProcessId", Value: 0x204, SectionNumber: 7, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "strncmp", Value: 0x1b00, SectionNumber: 1, Type: 0x20, StorageClass: 0x2},
+ &pe.Symbol{Name: "__imp___lconv_init", Value: 0x2d4, SectionNumber: 7, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "__imp_TerminateProcess", Value: 0x27c, SectionNumber: 7, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "___CTOR_LIST__", Value: 0x1ca0, SectionNumber: 1, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "__imp_signal", Value: 0x36c, SectionNumber: 7, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "__rt_psrelocs_size", Value: 0x0, SectionNumber: -1, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "__imp_QueryPerformanceCounter", Value: 0x244, SectionNumber: 7, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "__imp_strlen", Value: 0x374, SectionNumber: 7, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "__imp_malloc", Value: 0x35c, SectionNumber: 7, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "__mingw_winmain_nShowCmd", Value: 0x0, SectionNumber: 2, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "mingw_pcinit", Value: 0x20, SectionNumber: 8, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "__file_alignment__", Value: 0x200, SectionNumber: -1, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "__imp_InitializeCriticalSection", Value: 0x234, SectionNumber: 7, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "__lconv_init", Value: 0x1b98, SectionNumber: 1, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "__getmainargs", Value: 0x1ba8, SectionNumber: 1, Type: 0x20, StorageClass: 0x2},
+ &pe.Symbol{Name: "InitializeCriticalSection", Value: 0x1c48, SectionNumber: 1, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "__imp_exit", Value: 0x33c, SectionNumber: 7, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "__major_os_version__", Value: 0x4, SectionNumber: -1, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "__imp_vfprintf", Value: 0x384, SectionNumber: 7, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "__imp___initenv", Value: 0x2c4, SectionNumber: 7, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "__IAT_start__", Value: 0x1ec, SectionNumber: 7, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "__imp__cexit", Value: 0x2fc, SectionNumber: 7, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "__imp_UnhandledExceptionFilter", Value: 0x28c, SectionNumber: 7, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "__xl_z", Value: 0x50, SectionNumber: 8, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "__end__", Value: 0x1000, SectionNumber: 9, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "__imp_SetUnhandledExceptionFilter", Value: 0x26c, SectionNumber: 7, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "__imp__onexit", Value: 0x31c, SectionNumber: 7, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "__DTOR_LIST__", Value: 0x1cb0, SectionNumber: 1, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "RtlVirtualUnwind", Value: 0x1c18, SectionNumber: 1, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "__xi_a", Value: 0x18, SectionNumber: 8, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "__set_app_type", Value: 0x1b90, SectionNumber: 1, Type: 0x20, StorageClass: 0x2},
+ &pe.Symbol{Name: "__imp_Sleep", Value: 0x274, SectionNumber: 7, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "LeaveCriticalSection", Value: 0x1c40, SectionNumber: 1, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "__xc_a", Value: 0x0, SectionNumber: 8, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "__imp___setusermatherr", Value: 0x2e4, SectionNumber: 7, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "__size_of_heap_reserve__", Value: 0x100000, SectionNumber: -1, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "___crt_xt_start__", Value: 0x58, SectionNumber: 8, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "__subsystem__", Value: 0x3, SectionNumber: -1, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "_amsg_exit", Value: 0x1b80, SectionNumber: 1, Type: 0x20, StorageClass: 0x2},
+ &pe.Symbol{Name: "_fmode", Value: 0x630, SectionNumber: 6, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "__security_cookie_complement", Value: 0x110, SectionNumber: 2, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "__imp_TlsGetValue", Value: 0x284, SectionNumber: 7, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "GetCurrentProcess", Value: 0x1c80, SectionNumber: 1, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "__setusermatherr", Value: 0x1b88, SectionNumber: 1, Type: 0x20, StorageClass: 0x2},
+ &pe.Symbol{Name: "__imp_fprintf", Value: 0x344, SectionNumber: 7, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "__imp_VirtualProtect", Value: 0x294, SectionNumber: 7, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "__xl_c", Value: 0x40, SectionNumber: 8, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "___tls_end__", Value: 0x68, SectionNumber: 9, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "__onexitend", Value: 0x978, SectionNumber: 6, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "QueryPerformanceCounter", Value: 0x1c38, SectionNumber: 1, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "__imp_VirtualQuery", Value: 0x29c, SectionNumber: 7, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "__imp__initterm", Value: 0x30c, SectionNumber: 7, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "mingw_initltsdyn_force", Value: 0x5f4, SectionNumber: 6, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "_dowildcard", Value: 0x40, SectionNumber: 6, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "__imp___iob_func", Value: 0x2cc, SectionNumber: 7, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "__dyn_tls_init_callback", Value: 0x10, SectionNumber: 3, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "_initterm", Value: 0x1b70, SectionNumber: 1, Type: 0x20, StorageClass: 0x2},
+ &pe.Symbol{Name: "_newmode", Value: 0x5e0, SectionNumber: 6, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "fwrite", Value: 0x1b28, SectionNumber: 1, Type: 0x20, StorageClass: 0x2},
+ &pe.Symbol{Name: "__imp_strncmp", Value: 0x37c, SectionNumber: 7, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "__major_image_version__", Value: 0x0, SectionNumber: -1, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "__loader_flags__", Value: 0x0, SectionNumber: -1, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "___chkstk_ms", Value: 0x1ab0, SectionNumber: 1, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "__native_startup_lock", Value: 0x988, SectionNumber: 6, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "__mingw_winmain_hInstance", Value: 0x968, SectionNumber: 6, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "GetStartupInfoA", Value: 0x1c60, SectionNumber: 1, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "GetCurrentThreadId", Value: 0x1c70, SectionNumber: 1, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "_onexit", Value: 0x1b60, SectionNumber: 1, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "__rt_psrelocs_end", Value: 0x5e0, SectionNumber: 3, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "exit", Value: 0x1b40, SectionNumber: 1, Type: 0x20, StorageClass: 0x2},
+ &pe.Symbol{Name: "__imp__get_invalid_parameter_handler", Value: 0xf0, SectionNumber: 2, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "__minor_subsystem_version__", Value: 0x2, SectionNumber: -1, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "__minor_image_version__", Value: 0x0, SectionNumber: -1, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "__imp__unlock", Value: 0x324, SectionNumber: 7, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "__imp___set_app_type", Value: 0x2dc, SectionNumber: 7, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "mingw_initltsdrot_force", Value: 0x5f8, SectionNumber: 6, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "_charmax", Value: 0xc0, SectionNumber: 2, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "strlen", Value: 0x1b08, SectionNumber: 1, Type: 0x20, StorageClass: 0x2},
+ &pe.Symbol{Name: "DeleteCriticalSection", Value: 0x1c90, SectionNumber: 1, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "__imp_RtlCaptureContext", Value: 0x254, SectionNumber: 7, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "__RUNTIME_PSEUDO_RELOC_LIST_END__", Value: 0x4045e0, SectionNumber: -1, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "__dllonexit", Value: 0x1bb0, SectionNumber: 1, Type: 0x20, StorageClass: 0x2},
+ &pe.Symbol{Name: "_unlock", Value: 0x1b58, SectionNumber: 1, Type: 0x20, StorageClass: 0x2},
+ &pe.Symbol{Name: "__imp_GetCurrentProcess", Value: 0x1fc, SectionNumber: 7, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "___crt_xt_end__", Value: 0x58, SectionNumber: 8, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "__lib64_libmsvcrt_a_iname", Value: 0x7bc, SectionNumber: 7, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "vfprintf", Value: 0x1af8, SectionNumber: 1, Type: 0x20, StorageClass: 0x2},
+ &pe.Symbol{Name: "free", Value: 0x1b30, SectionNumber: 1, Type: 0x20, StorageClass: 0x2},
+ &pe.Symbol{Name: "__security_cookie", Value: 0x100, SectionNumber: 2, Type: 0x0, StorageClass: 0x2},
+ },
+}
+
+/* Generated from: prebuilts/gcc/linux-x86/host/x86_64-w64-mingw32-4.8/bin/x86_64-w64-mingw32-g++ -o a.exe test2.c
+
+#include <unistd.h>
+
+char symbol1[128] = "PLACEHOLDER1";
+char symbol2[128] = "PLACEHOLDER2";
+
+int main() {
+ write(STDOUT_FILENO, symbol1, sizeof(symbol1));
+ write(STDOUT_FILENO, symbol2, sizeof(symbol2));
+}
+*/
+
+var peSymbolTable2 = &pe.File{
+ FileHeader: pe.FileHeader{
+ Machine: pe.IMAGE_FILE_MACHINE_AMD64,
+ },
+ Sections: []*pe.Section{
+ &pe.Section{SectionHeader: pe.SectionHeader{Name: ".text", VirtualSize: 0x1ce0, VirtualAddress: 0x1000, Size: 0x1e00, Offset: 0x600, PointerToRelocations: 0x0, PointerToLineNumbers: 0x0, NumberOfRelocations: 0x0, NumberOfLineNumbers: 0x0, Characteristics: 0x60500020}},
+ &pe.Section{SectionHeader: pe.SectionHeader{Name: ".data", VirtualSize: 0x1a0, VirtualAddress: 0x3000, Size: 0x200, Offset: 0x2400, PointerToRelocations: 0x0, PointerToLineNumbers: 0x0, NumberOfRelocations: 0x0, NumberOfLineNumbers: 0x0, Characteristics: 0xc0600040}},
+ &pe.Section{SectionHeader: pe.SectionHeader{Name: ".rdata", VirtualSize: 0x5e0, VirtualAddress: 0x4000, Size: 0x600, Offset: 0x2600, PointerToRelocations: 0x0, PointerToLineNumbers: 0x0, NumberOfRelocations: 0x0, NumberOfLineNumbers: 0x0, Characteristics: 0x40500040}},
+ &pe.Section{SectionHeader: pe.SectionHeader{Name: ".pdata", VirtualSize: 0x234, VirtualAddress: 0x5000, Size: 0x400, Offset: 0x2c00, PointerToRelocations: 0x0, PointerToLineNumbers: 0x0, NumberOfRelocations: 0x0, NumberOfLineNumbers: 0x0, Characteristics: 0x40300040}},
+ &pe.Section{SectionHeader: pe.SectionHeader{Name: ".xdata", VirtualSize: 0x200, VirtualAddress: 0x6000, Size: 0x200, Offset: 0x3000, PointerToRelocations: 0x0, PointerToLineNumbers: 0x0, NumberOfRelocations: 0x0, NumberOfLineNumbers: 0x0, Characteristics: 0x40300040}},
+ &pe.Section{SectionHeader: pe.SectionHeader{Name: ".bss", VirtualSize: 0x9b0, VirtualAddress: 0x7000, Size: 0x0, Offset: 0x0, PointerToRelocations: 0x0, PointerToLineNumbers: 0x0, NumberOfRelocations: 0x0, NumberOfLineNumbers: 0x0, Characteristics: 0xc0600080}},
+ &pe.Section{SectionHeader: pe.SectionHeader{Name: ".idata", VirtualSize: 0x7c8, VirtualAddress: 0x8000, Size: 0x800, Offset: 0x3200, PointerToRelocations: 0x0, PointerToLineNumbers: 0x0, NumberOfRelocations: 0x0, NumberOfLineNumbers: 0x0, Characteristics: 0xc0300040}},
+ &pe.Section{SectionHeader: pe.SectionHeader{Name: ".CRT", VirtualSize: 0x68, VirtualAddress: 0x9000, Size: 0x200, Offset: 0x3a00, PointerToRelocations: 0x0, PointerToLineNumbers: 0x0, NumberOfRelocations: 0x0, NumberOfLineNumbers: 0x0, Characteristics: 0xc0400040}},
+ &pe.Section{SectionHeader: pe.SectionHeader{Name: ".tls", VirtualSize: 0x68, VirtualAddress: 0xa000, Size: 0x200, Offset: 0x3c00, PointerToRelocations: 0x0, PointerToLineNumbers: 0x0, NumberOfRelocations: 0x0, NumberOfLineNumbers: 0x0, Characteristics: 0xc0600040}},
+ &pe.Section{SectionHeader: pe.SectionHeader{Name: ".debug_aranges", VirtualSize: 0x420, VirtualAddress: 0xb000, Size: 0x600, Offset: 0x3e00, PointerToRelocations: 0x0, PointerToLineNumbers: 0x0, NumberOfRelocations: 0x0, NumberOfLineNumbers: 0x0, Characteristics: 0x42500040}},
+ &pe.Section{SectionHeader: pe.SectionHeader{Name: ".debug_info", VirtualSize: 0xc125, VirtualAddress: 0xc000, Size: 0xc200, Offset: 0x4400, PointerToRelocations: 0x0, PointerToLineNumbers: 0x0, NumberOfRelocations: 0x0, NumberOfLineNumbers: 0x0, Characteristics: 0x42100040}},
+ &pe.Section{SectionHeader: pe.SectionHeader{Name: ".debug_abbrev", VirtualSize: 0x1a80, VirtualAddress: 0x19000, Size: 0x1c00, Offset: 0x10600, PointerToRelocations: 0x0, PointerToLineNumbers: 0x0, NumberOfRelocations: 0x0, NumberOfLineNumbers: 0x0, Characteristics: 0x42100040}},
+ &pe.Section{SectionHeader: pe.SectionHeader{Name: ".debug_line", VirtualSize: 0x2182, VirtualAddress: 0x1b000, Size: 0x2200, Offset: 0x12200, PointerToRelocations: 0x0, PointerToLineNumbers: 0x0, NumberOfRelocations: 0x0, NumberOfLineNumbers: 0x0, Characteristics: 0x42100040}},
+ &pe.Section{SectionHeader: pe.SectionHeader{Name: ".debug_frame", VirtualSize: 0xb28, VirtualAddress: 0x1e000, Size: 0xc00, Offset: 0x14400, PointerToRelocations: 0x0, PointerToLineNumbers: 0x0, NumberOfRelocations: 0x0, NumberOfLineNumbers: 0x0, Characteristics: 0x42400040}},
+ &pe.Section{SectionHeader: pe.SectionHeader{Name: ".debug_str", VirtualSize: 0x300, VirtualAddress: 0x1f000, Size: 0x400, Offset: 0x15000, PointerToRelocations: 0x0, PointerToLineNumbers: 0x0, NumberOfRelocations: 0x0, NumberOfLineNumbers: 0x0, Characteristics: 0x42100040}},
+ &pe.Section{SectionHeader: pe.SectionHeader{Name: ".debug_loc", VirtualSize: 0x2b76, VirtualAddress: 0x20000, Size: 0x2c00, Offset: 0x15400, PointerToRelocations: 0x0, PointerToLineNumbers: 0x0, NumberOfRelocations: 0x0, NumberOfLineNumbers: 0x0, Characteristics: 0x42100040}},
+ &pe.Section{SectionHeader: pe.SectionHeader{Name: ".debug_ranges", VirtualSize: 0x4f0, VirtualAddress: 0x23000, Size: 0x600, Offset: 0x18000, PointerToRelocations: 0x0, PointerToLineNumbers: 0x0, NumberOfRelocations: 0x0, NumberOfLineNumbers: 0x0, Characteristics: 0x42100040}},
+ },
+ Symbols: []*pe.Symbol{
+ &pe.Symbol{Name: ".file", Value: 0x35, SectionNumber: -2, Type: 0x0, StorageClass: 0x67},
+ &pe.Symbol{Name: "__mingw_invalidParameterHandler", Value: 0x0, SectionNumber: 1, Type: 0x20, StorageClass: 0x3},
+ &pe.Symbol{Name: "pre_c_init", Value: 0x10, SectionNumber: 1, Type: 0x20, StorageClass: 0x3},
+ &pe.Symbol{Name: "managedapp", Value: 0x8, SectionNumber: 6, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: "pre_cpp_init", Value: 0x130, SectionNumber: 1, Type: 0x20, StorageClass: 0x3},
+ &pe.Symbol{Name: "envp", Value: 0x18, SectionNumber: 6, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: "argv", Value: 0x20, SectionNumber: 6, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: "argc", Value: 0x28, SectionNumber: 6, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: "startinfo", Value: 0x0, SectionNumber: 6, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: "argret", Value: 0x10, SectionNumber: 6, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: "__tmainCRTStartup", Value: 0x180, SectionNumber: 1, Type: 0x20, StorageClass: 0x3},
+ &pe.Symbol{Name: "has_cctor", Value: 0x4, SectionNumber: 6, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: "mainret", Value: 0xc, SectionNumber: 6, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: "WinMainCRTStartup", Value: 0x4b0, SectionNumber: 1, Type: 0x20, StorageClass: 0x2},
+ &pe.Symbol{Name: ".l_startw", Value: 0x4b4, SectionNumber: 1, Type: 0x0, StorageClass: 0x6},
+ &pe.Symbol{Name: ".l_endw", Value: 0x4c9, SectionNumber: 1, Type: 0x0, StorageClass: 0x6},
+ &pe.Symbol{Name: "mainCRTStartup", Value: 0x4d0, SectionNumber: 1, Type: 0x20, StorageClass: 0x2},
+ &pe.Symbol{Name: ".l_start", Value: 0x4d4, SectionNumber: 1, Type: 0x0, StorageClass: 0x6},
+ &pe.Symbol{Name: ".l_end", Value: 0x4e9, SectionNumber: 1, Type: 0x0, StorageClass: 0x6},
+ &pe.Symbol{Name: ".text", Value: 0x0, SectionNumber: 1, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".data", Value: 0x0, SectionNumber: 2, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".bss", Value: 0x0, SectionNumber: 6, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".xdata", Value: 0x0, SectionNumber: 5, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".pdata", Value: 0x0, SectionNumber: 4, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".CRT$XCAA", Value: 0x8, SectionNumber: 8, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".CRT$XIAA", Value: 0x20, SectionNumber: 8, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".debug_info", Value: 0x0, SectionNumber: 11, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".debug_abbrev", Value: 0x0, SectionNumber: 12, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".debug_loc", Value: 0x0, SectionNumber: 16, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".debug_aranges", Value: 0x0, SectionNumber: 10, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".debug_ranges", Value: 0x0, SectionNumber: 17, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".debug_line", Value: 0x0, SectionNumber: 13, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".debug_str", Value: 0x0, SectionNumber: 15, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".rdata$zzz", Value: 0x280, SectionNumber: 3, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".debug_frame", Value: 0x0, SectionNumber: 14, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".file", Value: 0x3f, SectionNumber: -2, Type: 0x0, StorageClass: 0x67},
+ &pe.Symbol{Name: ".text", Value: 0x4f0, SectionNumber: 1, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".data", Value: 0x10, SectionNumber: 2, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".bss", Value: 0x30, SectionNumber: 6, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".rdata$zzz", Value: 0x2a0, SectionNumber: 3, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".file", Value: 0x4f, SectionNumber: -2, Type: 0x0, StorageClass: 0x67},
+ &pe.Symbol{Name: "main", Value: 0x4f0, SectionNumber: 1, Type: 0x20, StorageClass: 0x2},
+ &pe.Symbol{Name: ".text", Value: 0x4f0, SectionNumber: 1, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".data", Value: 0x20, SectionNumber: 2, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".bss", Value: 0x30, SectionNumber: 6, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".xdata", Value: 0x68, SectionNumber: 5, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".pdata", Value: 0x48, SectionNumber: 4, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".rdata$zzz", Value: 0x2c0, SectionNumber: 3, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".file", Value: 0x6c, SectionNumber: -2, Type: 0x0, StorageClass: 0x67},
+ &pe.Symbol{Name: "mingw_onexit", Value: 0x540, SectionNumber: 1, Type: 0x20, StorageClass: 0x2},
+ &pe.Symbol{Name: "atexit", Value: 0x5f0, SectionNumber: 1, Type: 0x20, StorageClass: 0x2},
+ &pe.Symbol{Name: ".text", Value: 0x540, SectionNumber: 1, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".data", Value: 0x120, SectionNumber: 2, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".bss", Value: 0x30, SectionNumber: 6, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".xdata", Value: 0x74, SectionNumber: 5, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".pdata", Value: 0x54, SectionNumber: 4, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".debug_info", Value: 0x27d0, SectionNumber: 11, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".debug_abbrev", Value: 0x433, SectionNumber: 12, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".debug_loc", Value: 0x510, SectionNumber: 16, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".debug_aranges", Value: 0x30, SectionNumber: 10, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".debug_line", Value: 0x3de, SectionNumber: 13, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".rdata$zzz", Value: 0x2e0, SectionNumber: 3, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".debug_frame", Value: 0x120, SectionNumber: 14, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".file", Value: 0x8c, SectionNumber: -2, Type: 0x0, StorageClass: 0x67},
+ &pe.Symbol{Name: "__do_global_dtors", Value: 0x610, SectionNumber: 1, Type: 0x20, StorageClass: 0x2},
+ &pe.Symbol{Name: "p.68721", Value: 0x120, SectionNumber: 2, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: "__do_global_ctors", Value: 0x650, SectionNumber: 1, Type: 0x20, StorageClass: 0x2},
+ &pe.Symbol{Name: "__main", Value: 0x6b0, SectionNumber: 1, Type: 0x20, StorageClass: 0x2},
+ &pe.Symbol{Name: "initialized", Value: 0x30, SectionNumber: 6, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".text", Value: 0x610, SectionNumber: 1, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".data", Value: 0x120, SectionNumber: 2, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".bss", Value: 0x30, SectionNumber: 6, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".xdata", Value: 0x84, SectionNumber: 5, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".pdata", Value: 0x6c, SectionNumber: 4, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".debug_info", Value: 0x2ed5, SectionNumber: 11, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".debug_abbrev", Value: 0x5ae, SectionNumber: 12, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".debug_loc", Value: 0x607, SectionNumber: 16, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".debug_aranges", Value: 0x60, SectionNumber: 10, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".debug_line", Value: 0x5a3, SectionNumber: 13, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".rdata$zzz", Value: 0x300, SectionNumber: 3, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".debug_frame", Value: 0x190, SectionNumber: 14, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".file", Value: 0xa0, SectionNumber: -2, Type: 0x0, StorageClass: 0x67},
+ &pe.Symbol{Name: ".text", Value: 0x6d0, SectionNumber: 1, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".data", Value: 0x130, SectionNumber: 2, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".bss", Value: 0x40, SectionNumber: 6, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".debug_info", Value: 0x34aa, SectionNumber: 11, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".debug_abbrev", Value: 0x6c2, SectionNumber: 12, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".debug_aranges", Value: 0x90, SectionNumber: 10, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".debug_line", Value: 0x710, SectionNumber: 13, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".debug_str", Value: 0x21f, SectionNumber: 15, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".rdata$zzz", Value: 0x320, SectionNumber: 3, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".file", Value: 0xb2, SectionNumber: -2, Type: 0x0, StorageClass: 0x67},
+ &pe.Symbol{Name: ".text", Value: 0x6d0, SectionNumber: 1, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".data", Value: 0x140, SectionNumber: 2, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".bss", Value: 0x40, SectionNumber: 6, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".debug_info", Value: 0x3a06, SectionNumber: 11, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".debug_abbrev", Value: 0x744, SectionNumber: 12, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".debug_aranges", Value: 0xb0, SectionNumber: 10, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".debug_line", Value: 0x894, SectionNumber: 13, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".rdata$zzz", Value: 0x340, SectionNumber: 3, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".file", Value: 0xce, SectionNumber: -2, Type: 0x0, StorageClass: 0x67},
+ &pe.Symbol{Name: "my_lconv_init", Value: 0x6d0, SectionNumber: 1, Type: 0x20, StorageClass: 0x3},
+ &pe.Symbol{Name: ".text", Value: 0x6d0, SectionNumber: 1, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".data", Value: 0x140, SectionNumber: 2, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".bss", Value: 0x50, SectionNumber: 6, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".xdata", Value: 0x9c, SectionNumber: 5, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".pdata", Value: 0x90, SectionNumber: 4, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".CRT$XIC", Value: 0x28, SectionNumber: 8, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".debug_info", Value: 0x3ae7, SectionNumber: 11, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".debug_abbrev", Value: 0x76e, SectionNumber: 12, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".debug_aranges", Value: 0xd0, SectionNumber: 10, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".debug_line", Value: 0x91f, SectionNumber: 13, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".rdata$zzz", Value: 0x360, SectionNumber: 3, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".debug_frame", Value: 0x218, SectionNumber: 14, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".file", Value: 0xe8, SectionNumber: -2, Type: 0x0, StorageClass: 0x67},
+ &pe.Symbol{Name: "_setargv", Value: 0x6e0, SectionNumber: 1, Type: 0x20, StorageClass: 0x2},
+ &pe.Symbol{Name: ".text", Value: 0x6e0, SectionNumber: 1, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".data", Value: 0x150, SectionNumber: 2, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".bss", Value: 0x60, SectionNumber: 6, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".xdata", Value: 0xa0, SectionNumber: 5, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".pdata", Value: 0x9c, SectionNumber: 4, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".debug_info", Value: 0x3ffe, SectionNumber: 11, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".debug_abbrev", Value: 0x808, SectionNumber: 12, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".debug_aranges", Value: 0x100, SectionNumber: 10, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".debug_line", Value: 0xab8, SectionNumber: 13, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".rdata$zzz", Value: 0x380, SectionNumber: 3, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".debug_frame", Value: 0x248, SectionNumber: 14, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".file", Value: 0x110, SectionNumber: -2, Type: 0x0, StorageClass: 0x67},
+ &pe.Symbol{Name: "__security_init_cookie", Value: 0x6f0, SectionNumber: 1, Type: 0x20, StorageClass: 0x2},
+ &pe.Symbol{Name: ".data$__security_cookie", Value: 0x180, SectionNumber: 2, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".data$__security_cookie_complement", Value: 0x190, SectionNumber: 2, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: "__report_gsfailure", Value: 0x7c0, SectionNumber: 1, Type: 0x20, StorageClass: 0x2},
+ &pe.Symbol{Name: "GS_ContextRecord", Value: 0x60, SectionNumber: 6, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: "GS_ExceptionRecord", Value: 0x540, SectionNumber: 6, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: "GS_ExceptionPointers", Value: 0x0, SectionNumber: 3, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".text", Value: 0x6f0, SectionNumber: 1, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".data", Value: 0x150, SectionNumber: 2, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".bss", Value: 0x60, SectionNumber: 6, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".xdata", Value: 0xa4, SectionNumber: 5, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".pdata", Value: 0xa8, SectionNumber: 4, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".rdata", Value: 0x0, SectionNumber: 3, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".debug_info", Value: 0x41c8, SectionNumber: 11, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".debug_abbrev", Value: 0x83f, SectionNumber: 12, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".debug_loc", Value: 0x6ae, SectionNumber: 16, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".debug_aranges", Value: 0x130, SectionNumber: 10, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".debug_line", Value: 0xb56, SectionNumber: 13, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".debug_str", Value: 0x237, SectionNumber: 15, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".rdata$zzz", Value: 0x3a0, SectionNumber: 3, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".debug_frame", Value: 0x278, SectionNumber: 14, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".file", Value: 0x122, SectionNumber: -2, Type: 0x0, StorageClass: 0x67},
+ &pe.Symbol{Name: ".text", Value: 0x8c0, SectionNumber: 1, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".data", Value: 0x150, SectionNumber: 2, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".bss", Value: 0x5e0, SectionNumber: 6, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".debug_info", Value: 0x506e, SectionNumber: 11, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".debug_abbrev", Value: 0xa10, SectionNumber: 12, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".debug_aranges", Value: 0x160, SectionNumber: 10, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".debug_line", Value: 0xcde, SectionNumber: 13, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".rdata$zzz", Value: 0x3c0, SectionNumber: 3, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".file", Value: 0x158, SectionNumber: -2, Type: 0x0, StorageClass: 0x67},
+ &pe.Symbol{Name: "__dyn_tls_dtor", Value: 0x8c0, SectionNumber: 1, Type: 0x20, StorageClass: 0x3},
+ &pe.Symbol{Name: "__dyn_tls_init", Value: 0x8f0, SectionNumber: 1, Type: 0x20, StorageClass: 0x2},
+ &pe.Symbol{Name: "__xd_a", Value: 0x58, SectionNumber: 8, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: "__xd_z", Value: 0x60, SectionNumber: 8, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: "__tlregdtor", Value: 0x960, SectionNumber: 1, Type: 0x20, StorageClass: 0x2},
+ &pe.Symbol{Name: ".text", Value: 0x8c0, SectionNumber: 1, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".data", Value: 0x150, SectionNumber: 2, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".bss", Value: 0x5f0, SectionNumber: 6, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".xdata", Value: 0xc4, SectionNumber: 5, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".pdata", Value: 0xc0, SectionNumber: 4, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".CRT$XLD", Value: 0x48, SectionNumber: 8, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".CRT$XLC", Value: 0x40, SectionNumber: 8, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".rdata", Value: 0x10, SectionNumber: 3, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".CRT$XDZ", Value: 0x60, SectionNumber: 8, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".CRT$XDA", Value: 0x58, SectionNumber: 8, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".tls", Value: 0x20, SectionNumber: 9, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".CRT$XLZ", Value: 0x50, SectionNumber: 8, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".CRT$XLA", Value: 0x38, SectionNumber: 8, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".tls$ZZZ", Value: 0x60, SectionNumber: 9, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".tls$AAA", Value: 0x0, SectionNumber: 9, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".debug_info", Value: 0x514c, SectionNumber: 11, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".debug_abbrev", Value: 0xa3a, SectionNumber: 12, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".debug_loc", Value: 0x816, SectionNumber: 16, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".debug_aranges", Value: 0x180, SectionNumber: 10, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".debug_line", Value: 0xd69, SectionNumber: 13, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".debug_str", Value: 0x250, SectionNumber: 15, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".rdata$zzz", Value: 0x3e0, SectionNumber: 3, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".debug_frame", Value: 0x330, SectionNumber: 14, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".file", Value: 0x172, SectionNumber: -2, Type: 0x0, StorageClass: 0x67},
+ &pe.Symbol{Name: ".text", Value: 0x970, SectionNumber: 1, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".data", Value: 0x150, SectionNumber: 2, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".bss", Value: 0x600, SectionNumber: 6, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".CRT$XCZ", Value: 0x10, SectionNumber: 8, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".CRT$XCA", Value: 0x0, SectionNumber: 8, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".CRT$XIZ", Value: 0x30, SectionNumber: 8, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".CRT$XIA", Value: 0x18, SectionNumber: 8, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".debug_info", Value: 0x5854, SectionNumber: 11, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".debug_abbrev", Value: 0xbce, SectionNumber: 12, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".debug_aranges", Value: 0x1b0, SectionNumber: 10, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".debug_line", Value: 0xec8, SectionNumber: 13, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".rdata$zzz", Value: 0x400, SectionNumber: 3, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".file", Value: 0x193, SectionNumber: -2, Type: 0x0, StorageClass: 0x67},
+ &pe.Symbol{Name: "__mingw_raise_matherr", Value: 0x970, SectionNumber: 1, Type: 0x20, StorageClass: 0x2},
+ &pe.Symbol{Name: "stUserMathErr", Value: 0x600, SectionNumber: 6, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: "__mingw_setusermatherr", Value: 0x9c0, SectionNumber: 1, Type: 0x20, StorageClass: 0x2},
+ &pe.Symbol{Name: "_matherr", Value: 0x9d0, SectionNumber: 1, Type: 0x20, StorageClass: 0x2},
+ &pe.Symbol{Name: ".text", Value: 0x970, SectionNumber: 1, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".data", Value: 0x150, SectionNumber: 2, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".bss", Value: 0x600, SectionNumber: 6, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".xdata", Value: 0xdc, SectionNumber: 5, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".pdata", Value: 0xe4, SectionNumber: 4, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".rdata", Value: 0x20, SectionNumber: 3, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".debug_info", Value: 0x5a33, SectionNumber: 11, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".debug_abbrev", Value: 0xc27, SectionNumber: 12, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".debug_loc", Value: 0xb6f, SectionNumber: 16, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".debug_aranges", Value: 0x1d0, SectionNumber: 10, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".debug_line", Value: 0xf53, SectionNumber: 13, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".rdata$zzz", Value: 0x420, SectionNumber: 3, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".debug_frame", Value: 0x3d0, SectionNumber: 14, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".file", Value: 0x1ae, SectionNumber: -2, Type: 0x0, StorageClass: 0x67},
+ &pe.Symbol{Name: "_fpreset", Value: 0xad0, SectionNumber: 1, Type: 0x20, StorageClass: 0x2},
+ &pe.Symbol{Name: "fpreset", Value: 0xad0, SectionNumber: 1, Type: 0x20, StorageClass: 0x2},
+ &pe.Symbol{Name: ".text", Value: 0xad0, SectionNumber: 1, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".data", Value: 0x150, SectionNumber: 2, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".bss", Value: 0x610, SectionNumber: 6, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".xdata", Value: 0x100, SectionNumber: 5, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".pdata", Value: 0x108, SectionNumber: 4, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".debug_info", Value: 0x61bd, SectionNumber: 11, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".debug_abbrev", Value: 0xda1, SectionNumber: 12, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".debug_aranges", Value: 0x200, SectionNumber: 10, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".debug_line", Value: 0x1129, SectionNumber: 13, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".rdata$zzz", Value: 0x440, SectionNumber: 3, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".debug_frame", Value: 0x460, SectionNumber: 14, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".file", Value: 0x1c9, SectionNumber: -2, Type: 0x0, StorageClass: 0x67},
+ &pe.Symbol{Name: "_decode_pointer", Value: 0xae0, SectionNumber: 1, Type: 0x20, StorageClass: 0x2},
+ &pe.Symbol{Name: "_encode_pointer", Value: 0xaf0, SectionNumber: 1, Type: 0x20, StorageClass: 0x2},
+ &pe.Symbol{Name: ".text", Value: 0xae0, SectionNumber: 1, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".data", Value: 0x150, SectionNumber: 2, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".bss", Value: 0x610, SectionNumber: 6, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".xdata", Value: 0x104, SectionNumber: 5, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".pdata", Value: 0x114, SectionNumber: 4, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".debug_info", Value: 0x62a8, SectionNumber: 11, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".debug_abbrev", Value: 0xdcb, SectionNumber: 12, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".debug_aranges", Value: 0x230, SectionNumber: 10, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".debug_line", Value: 0x11c8, SectionNumber: 13, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".rdata$zzz", Value: 0x460, SectionNumber: 3, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".debug_frame", Value: 0x490, SectionNumber: 14, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".file", Value: 0x1f0, SectionNumber: -2, Type: 0x0, StorageClass: 0x67},
+ &pe.Symbol{Name: "__report_error", Value: 0xb00, SectionNumber: 1, Type: 0x20, StorageClass: 0x3},
+ &pe.Symbol{Name: "__write_memory.part.0", Value: 0xb70, SectionNumber: 1, Type: 0x20, StorageClass: 0x3},
+ &pe.Symbol{Name: "maxSections", Value: 0x624, SectionNumber: 6, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: "the_secs", Value: 0x628, SectionNumber: 6, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: "_pei386_runtime_relocator", Value: 0xcf0, SectionNumber: 1, Type: 0x20, StorageClass: 0x2},
+ &pe.Symbol{Name: "was_init.70054", Value: 0x620, SectionNumber: 6, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".text", Value: 0xb00, SectionNumber: 1, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".data", Value: 0x150, SectionNumber: 2, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".bss", Value: 0x620, SectionNumber: 6, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".rdata", Value: 0x160, SectionNumber: 3, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".xdata", Value: 0x10c, SectionNumber: 5, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".pdata", Value: 0x12c, SectionNumber: 4, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".debug_info", Value: 0x67b9, SectionNumber: 11, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".debug_abbrev", Value: 0xe52, SectionNumber: 12, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".debug_loc", Value: 0xda1, SectionNumber: 16, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".debug_aranges", Value: 0x260, SectionNumber: 10, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".debug_ranges", Value: 0xe0, SectionNumber: 17, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".debug_line", Value: 0x12f7, SectionNumber: 13, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".debug_str", Value: 0x26f, SectionNumber: 15, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".rdata$zzz", Value: 0x480, SectionNumber: 3, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".debug_frame", Value: 0x4d8, SectionNumber: 14, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".file", Value: 0x202, SectionNumber: -2, Type: 0x0, StorageClass: 0x67},
+ &pe.Symbol{Name: ".text", Value: 0x1010, SectionNumber: 1, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".data", Value: 0x150, SectionNumber: 2, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".bss", Value: 0x630, SectionNumber: 6, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".debug_info", Value: 0x79a7, SectionNumber: 11, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".debug_abbrev", Value: 0x1174, SectionNumber: 12, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".debug_aranges", Value: 0x290, SectionNumber: 10, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".debug_line", Value: 0x157b, SectionNumber: 13, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".rdata$zzz", Value: 0x4a0, SectionNumber: 3, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".file", Value: 0x227, SectionNumber: -2, Type: 0x0, StorageClass: 0x67},
+ &pe.Symbol{Name: "__mingw_SEH_error_handler", Value: 0x1010, SectionNumber: 1, Type: 0x20, StorageClass: 0x2},
+ &pe.Symbol{Name: "__mingw_init_ehandler", Value: 0x11d0, SectionNumber: 1, Type: 0x20, StorageClass: 0x2},
+ &pe.Symbol{Name: "was_here.69886", Value: 0x648, SectionNumber: 6, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: "emu_pdata", Value: 0x760, SectionNumber: 6, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: "emu_xdata", Value: 0x660, SectionNumber: 6, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: "_gnu_exception_handler", Value: 0x12c0, SectionNumber: 1, Type: 0x20, StorageClass: 0x2},
+ &pe.Symbol{Name: ".text", Value: 0x1010, SectionNumber: 1, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".data", Value: 0x150, SectionNumber: 2, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".bss", Value: 0x640, SectionNumber: 6, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".xdata", Value: 0x144, SectionNumber: 5, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".pdata", Value: 0x150, SectionNumber: 4, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".rdata", Value: 0x270, SectionNumber: 3, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".debug_info", Value: 0x7a83, SectionNumber: 11, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".debug_abbrev", Value: 0x119e, SectionNumber: 12, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".debug_loc", Value: 0x161e, SectionNumber: 16, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".debug_aranges", Value: 0x2b0, SectionNumber: 10, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".debug_line", Value: 0x1606, SectionNumber: 13, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".debug_str", Value: 0x278, SectionNumber: 15, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".rdata$zzz", Value: 0x4c0, SectionNumber: 3, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".debug_frame", Value: 0x5d0, SectionNumber: 14, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".file", Value: 0x24b, SectionNumber: -2, Type: 0x0, StorageClass: 0x67},
+ &pe.Symbol{Name: "__mingwthr_run_key_dtors.part.0", Value: 0x1470, SectionNumber: 1, Type: 0x20, StorageClass: 0x3},
+ &pe.Symbol{Name: "__mingwthr_cs", Value: 0x900, SectionNumber: 6, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: "key_dtor_list", Value: 0x8e0, SectionNumber: 6, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: "___w64_mingwthr_add_key_dtor", Value: 0x14e0, SectionNumber: 1, Type: 0x20, StorageClass: 0x2},
+ &pe.Symbol{Name: "__mingwthr_cs_init", Value: 0x8e8, SectionNumber: 6, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: "___w64_mingwthr_remove_key_dtor", Value: 0x1560, SectionNumber: 1, Type: 0x20, StorageClass: 0x2},
+ &pe.Symbol{Name: "__mingw_TLScallback", Value: 0x1600, SectionNumber: 1, Type: 0x20, StorageClass: 0x2},
+ &pe.Symbol{Name: ".text", Value: 0x1470, SectionNumber: 1, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".data", Value: 0x150, SectionNumber: 2, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".bss", Value: 0x8e0, SectionNumber: 6, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".xdata", Value: 0x168, SectionNumber: 5, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".pdata", Value: 0x174, SectionNumber: 4, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".debug_info", Value: 0x8f89, SectionNumber: 11, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".debug_abbrev", Value: 0x1402, SectionNumber: 12, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".debug_loc", Value: 0x1f13, SectionNumber: 16, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".debug_aranges", Value: 0x2e0, SectionNumber: 10, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".debug_ranges", Value: 0x330, SectionNumber: 17, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".debug_line", Value: 0x185b, SectionNumber: 13, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".rdata$zzz", Value: 0x4e0, SectionNumber: 3, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".debug_frame", Value: 0x6d8, SectionNumber: 14, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".file", Value: 0x25d, SectionNumber: -2, Type: 0x0, StorageClass: 0x67},
+ &pe.Symbol{Name: ".text", Value: 0x16f0, SectionNumber: 1, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".data", Value: 0x150, SectionNumber: 2, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".bss", Value: 0x940, SectionNumber: 6, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".debug_info", Value: 0x98ad, SectionNumber: 11, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".debug_abbrev", Value: 0x15e4, SectionNumber: 12, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".debug_aranges", Value: 0x310, SectionNumber: 10, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".debug_line", Value: 0x1a30, SectionNumber: 13, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".rdata$zzz", Value: 0x500, SectionNumber: 3, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".file", Value: 0x26f, SectionNumber: -2, Type: 0x0, StorageClass: 0x67},
+ &pe.Symbol{Name: ".text", Value: 0x16f0, SectionNumber: 1, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".data", Value: 0x160, SectionNumber: 2, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".bss", Value: 0x940, SectionNumber: 6, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".debug_info", Value: 0x9989, SectionNumber: 11, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".debug_abbrev", Value: 0x160e, SectionNumber: 12, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".debug_aranges", Value: 0x330, SectionNumber: 10, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".debug_line", Value: 0x1aba, SectionNumber: 13, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".rdata$zzz", Value: 0x520, SectionNumber: 3, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".file", Value: 0x298, SectionNumber: -2, Type: 0x0, StorageClass: 0x67},
+ &pe.Symbol{Name: "_ValidateImageBase.part.0", Value: 0x16f0, SectionNumber: 1, Type: 0x20, StorageClass: 0x3},
+ &pe.Symbol{Name: "_ValidateImageBase", Value: 0x1710, SectionNumber: 1, Type: 0x20, StorageClass: 0x2},
+ &pe.Symbol{Name: "_FindPESection", Value: 0x1730, SectionNumber: 1, Type: 0x20, StorageClass: 0x2},
+ &pe.Symbol{Name: "_FindPESectionByName", Value: 0x1780, SectionNumber: 1, Type: 0x20, StorageClass: 0x2},
+ &pe.Symbol{Name: "__mingw_GetSectionForAddress", Value: 0x1830, SectionNumber: 1, Type: 0x20, StorageClass: 0x2},
+ &pe.Symbol{Name: "__mingw_GetSectionCount", Value: 0x1880, SectionNumber: 1, Type: 0x20, StorageClass: 0x2},
+ &pe.Symbol{Name: "_FindPESectionExec", Value: 0x18d0, SectionNumber: 1, Type: 0x20, StorageClass: 0x2},
+ &pe.Symbol{Name: "_GetPEImageBase", Value: 0x1970, SectionNumber: 1, Type: 0x20, StorageClass: 0x2},
+ &pe.Symbol{Name: "_IsNonwritableInCurrentImage", Value: 0x19c0, SectionNumber: 1, Type: 0x20, StorageClass: 0x2},
+ &pe.Symbol{Name: "__mingw_enum_import_library_names", Value: 0x1a20, SectionNumber: 1, Type: 0x20, StorageClass: 0x2},
+ &pe.Symbol{Name: ".text", Value: 0x16f0, SectionNumber: 1, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".data", Value: 0x160, SectionNumber: 2, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".bss", Value: 0x950, SectionNumber: 6, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".xdata", Value: 0x198, SectionNumber: 5, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".pdata", Value: 0x1a4, SectionNumber: 4, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".debug_info", Value: 0x9ab9, SectionNumber: 11, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".debug_abbrev", Value: 0x1638, SectionNumber: 12, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".debug_loc", Value: 0x25ce, SectionNumber: 16, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".debug_aranges", Value: 0x350, SectionNumber: 10, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".debug_ranges", Value: 0x360, SectionNumber: 17, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".debug_line", Value: 0x1b4e, SectionNumber: 13, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".debug_str", Value: 0x2ac, SectionNumber: 15, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".rdata$zzz", Value: 0x540, SectionNumber: 3, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".debug_frame", Value: 0x808, SectionNumber: 14, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".file", Value: 0x2aa, SectionNumber: -2, Type: 0x0, StorageClass: 0x67},
+ &pe.Symbol{Name: ".debug_info", Value: 0xad5d, SectionNumber: 11, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".debug_abbrev", Value: 0x18a1, SectionNumber: 12, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".debug_line", Value: 0x1d87, SectionNumber: 13, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".text", Value: 0x1ad0, SectionNumber: 1, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".data", Value: 0x160, SectionNumber: 2, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".bss", Value: 0x950, SectionNumber: 6, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".debug_aranges", Value: 0x380, SectionNumber: 10, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".debug_frame", Value: 0xa98, SectionNumber: 14, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".file", Value: 0x2bc, SectionNumber: -2, Type: 0x0, StorageClass: 0x67},
+ &pe.Symbol{Name: ".text", Value: 0x1b10, SectionNumber: 1, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".data", Value: 0x160, SectionNumber: 2, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".bss", Value: 0x950, SectionNumber: 6, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".debug_info", Value: 0xae44, SectionNumber: 11, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".debug_abbrev", Value: 0x18b5, SectionNumber: 12, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".debug_aranges", Value: 0x3b0, SectionNumber: 10, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".debug_line", Value: 0x1e2a, SectionNumber: 13, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".rdata$zzz", Value: 0x560, SectionNumber: 3, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".file", Value: 0x399, SectionNumber: -2, Type: 0x0, StorageClass: 0x67},
+ &pe.Symbol{Name: ".text", Value: 0x1b10, SectionNumber: 1, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".data", Value: 0x160, SectionNumber: 2, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".bss", Value: 0x950, SectionNumber: 6, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".debug_info", Value: 0xb9a0, SectionNumber: 11, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".debug_abbrev", Value: 0x1928, SectionNumber: 12, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".debug_aranges", Value: 0x3d0, SectionNumber: 10, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".debug_line", Value: 0x1f18, SectionNumber: 13, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".rdata$zzz", Value: 0x580, SectionNumber: 3, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".text", Value: 0x1b10, SectionNumber: 1, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".data", Value: 0x170, SectionNumber: 2, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".bss", Value: 0x950, SectionNumber: 6, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$7", Value: 0x7b8, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$5", Value: 0x38c, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$4", Value: 0x1dc, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$6", Value: 0x6d2, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".text", Value: 0x1b18, SectionNumber: 1, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".data", Value: 0x170, SectionNumber: 2, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".bss", Value: 0x950, SectionNumber: 6, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$7", Value: 0x7b4, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$5", Value: 0x384, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$4", Value: 0x1d4, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$6", Value: 0x6c6, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".text", Value: 0x1b20, SectionNumber: 1, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".data", Value: 0x170, SectionNumber: 2, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".bss", Value: 0x950, SectionNumber: 6, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$7", Value: 0x7b0, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$5", Value: 0x37c, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$4", Value: 0x1cc, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$6", Value: 0x6bc, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".text", Value: 0x1b28, SectionNumber: 1, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".data", Value: 0x170, SectionNumber: 2, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".bss", Value: 0x950, SectionNumber: 6, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$7", Value: 0x7ac, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$5", Value: 0x374, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$4", Value: 0x1c4, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$6", Value: 0x6b2, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".text", Value: 0x1b30, SectionNumber: 1, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".data", Value: 0x170, SectionNumber: 2, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".bss", Value: 0x950, SectionNumber: 6, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$7", Value: 0x7a8, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$5", Value: 0x36c, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$4", Value: 0x1bc, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$6", Value: 0x6a8, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".text", Value: 0x1b38, SectionNumber: 1, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".data", Value: 0x170, SectionNumber: 2, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".bss", Value: 0x950, SectionNumber: 6, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$7", Value: 0x7a4, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$5", Value: 0x364, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$4", Value: 0x1b4, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$6", Value: 0x69e, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".text", Value: 0x1b40, SectionNumber: 1, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".data", Value: 0x170, SectionNumber: 2, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".bss", Value: 0x950, SectionNumber: 6, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$7", Value: 0x7a0, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$5", Value: 0x35c, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$4", Value: 0x1ac, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$6", Value: 0x694, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".text", Value: 0x1b48, SectionNumber: 1, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".data", Value: 0x170, SectionNumber: 2, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".bss", Value: 0x950, SectionNumber: 6, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$7", Value: 0x79c, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$5", Value: 0x354, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$4", Value: 0x1a4, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$6", Value: 0x68a, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".text", Value: 0x1b50, SectionNumber: 1, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".data", Value: 0x170, SectionNumber: 2, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".bss", Value: 0x950, SectionNumber: 6, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$7", Value: 0x798, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$5", Value: 0x34c, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$4", Value: 0x19c, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$6", Value: 0x682, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".text", Value: 0x1b58, SectionNumber: 1, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".data", Value: 0x170, SectionNumber: 2, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".bss", Value: 0x950, SectionNumber: 6, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$7", Value: 0x794, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$5", Value: 0x344, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$4", Value: 0x194, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$6", Value: 0x678, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".text", Value: 0x1b60, SectionNumber: 1, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".data", Value: 0x170, SectionNumber: 2, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".bss", Value: 0x950, SectionNumber: 6, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$7", Value: 0x790, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$5", Value: 0x33c, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$4", Value: 0x18c, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$6", Value: 0x670, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".text", Value: 0x1b68, SectionNumber: 1, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".data", Value: 0x170, SectionNumber: 2, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".bss", Value: 0x950, SectionNumber: 6, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$7", Value: 0x78c, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$5", Value: 0x334, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$4", Value: 0x184, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$6", Value: 0x666, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".text", Value: 0x1b70, SectionNumber: 1, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".data", Value: 0x170, SectionNumber: 2, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".bss", Value: 0x950, SectionNumber: 6, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$7", Value: 0x788, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$5", Value: 0x32c, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$4", Value: 0x17c, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$6", Value: 0x65e, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".text", Value: 0x1b78, SectionNumber: 1, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".data", Value: 0x170, SectionNumber: 2, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".bss", Value: 0x950, SectionNumber: 6, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$7", Value: 0x784, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$5", Value: 0x324, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$4", Value: 0x174, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$6", Value: 0x654, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".text", Value: 0x1b80, SectionNumber: 1, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".data", Value: 0x170, SectionNumber: 2, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".bss", Value: 0x950, SectionNumber: 6, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$7", Value: 0x780, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$5", Value: 0x31c, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$4", Value: 0x16c, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$6", Value: 0x64a, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".text", Value: 0x1b88, SectionNumber: 1, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".data", Value: 0x170, SectionNumber: 2, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".bss", Value: 0x950, SectionNumber: 6, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$7", Value: 0x77c, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$5", Value: 0x314, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$4", Value: 0x164, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$6", Value: 0x642, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".text", Value: 0x1b90, SectionNumber: 1, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".data", Value: 0x170, SectionNumber: 2, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".bss", Value: 0x950, SectionNumber: 6, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$7", Value: 0x778, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$5", Value: 0x30c, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$4", Value: 0x15c, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$6", Value: 0x636, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".text", Value: 0x1b98, SectionNumber: 1, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".data", Value: 0x170, SectionNumber: 2, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".bss", Value: 0x950, SectionNumber: 6, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$7", Value: 0x774, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$5", Value: 0x304, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$4", Value: 0x154, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$6", Value: 0x62c, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".text", Value: 0x1b98, SectionNumber: 1, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".data", Value: 0x170, SectionNumber: 2, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".bss", Value: 0x950, SectionNumber: 6, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$7", Value: 0x770, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$5", Value: 0x2fc, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$4", Value: 0x14c, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$6", Value: 0x622, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".text", Value: 0x1ba0, SectionNumber: 1, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".data", Value: 0x170, SectionNumber: 2, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".bss", Value: 0x950, SectionNumber: 6, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$7", Value: 0x76c, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$5", Value: 0x2f4, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$4", Value: 0x144, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$6", Value: 0x614, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".text", Value: 0x1ba8, SectionNumber: 1, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".data", Value: 0x170, SectionNumber: 2, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".bss", Value: 0x950, SectionNumber: 6, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$7", Value: 0x768, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$5", Value: 0x2ec, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$4", Value: 0x13c, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$6", Value: 0x60a, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".text", Value: 0x1ba8, SectionNumber: 1, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".data", Value: 0x170, SectionNumber: 2, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".bss", Value: 0x950, SectionNumber: 6, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$7", Value: 0x764, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$5", Value: 0x2e4, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$4", Value: 0x134, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$6", Value: 0x5f6, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".text", Value: 0x1bb0, SectionNumber: 1, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".data", Value: 0x170, SectionNumber: 2, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".bss", Value: 0x950, SectionNumber: 6, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$7", Value: 0x760, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$5", Value: 0x2dc, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$4", Value: 0x12c, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$6", Value: 0x5e4, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".text", Value: 0x1bb8, SectionNumber: 1, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".data", Value: 0x170, SectionNumber: 2, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".bss", Value: 0x950, SectionNumber: 6, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$7", Value: 0x75c, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$5", Value: 0x2d4, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$4", Value: 0x124, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$6", Value: 0x5d4, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".text", Value: 0x1bc0, SectionNumber: 1, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".data", Value: 0x170, SectionNumber: 2, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".bss", Value: 0x950, SectionNumber: 6, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$7", Value: 0x758, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$5", Value: 0x2cc, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$4", Value: 0x11c, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$6", Value: 0x5c6, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".text", Value: 0x1bc8, SectionNumber: 1, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".data", Value: 0x170, SectionNumber: 2, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".bss", Value: 0x950, SectionNumber: 6, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$7", Value: 0x754, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$5", Value: 0x2c4, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$4", Value: 0x114, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$6", Value: 0x5ba, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".text", Value: 0x1bc8, SectionNumber: 1, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".data", Value: 0x170, SectionNumber: 2, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".bss", Value: 0x950, SectionNumber: 6, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$7", Value: 0x750, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$5", Value: 0x2bc, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$4", Value: 0x10c, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$6", Value: 0x5aa, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".text", Value: 0x1bd0, SectionNumber: 1, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".data", Value: 0x170, SectionNumber: 2, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".bss", Value: 0x950, SectionNumber: 6, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$7", Value: 0x74c, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$5", Value: 0x2b4, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$4", Value: 0x104, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$6", Value: 0x59c, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".text", Value: 0x1bd8, SectionNumber: 1, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".data", Value: 0x170, SectionNumber: 2, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".bss", Value: 0x950, SectionNumber: 6, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$7", Value: 0x748, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$5", Value: 0x2ac, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$4", Value: 0xfc, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$6", Value: 0x584, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".file", Value: 0x3b7, SectionNumber: -2, Type: 0x0, StorageClass: 0x67},
+ &pe.Symbol{Name: "mingw_get_invalid_parameter_handler", Value: 0x1be0, SectionNumber: 1, Type: 0x20, StorageClass: 0x3},
+ &pe.Symbol{Name: "handler", Value: 0x950, SectionNumber: 6, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: "_get_invalid_parameter_handler", Value: 0x1be0, SectionNumber: 1, Type: 0x20, StorageClass: 0x2},
+ &pe.Symbol{Name: "mingw_set_invalid_parameter_handler", Value: 0x1bf0, SectionNumber: 1, Type: 0x20, StorageClass: 0x3},
+ &pe.Symbol{Name: "_set_invalid_parameter_handler", Value: 0x1bf0, SectionNumber: 1, Type: 0x20, StorageClass: 0x2},
+ &pe.Symbol{Name: ".text", Value: 0x1be0, SectionNumber: 1, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".data", Value: 0x170, SectionNumber: 2, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".bss", Value: 0x950, SectionNumber: 6, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".xdata", Value: 0x1f8, SectionNumber: 5, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".pdata", Value: 0x21c, SectionNumber: 4, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".debug_info", Value: 0xba98, SectionNumber: 11, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".debug_abbrev", Value: 0x1952, SectionNumber: 12, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".debug_aranges", Value: 0x3f0, SectionNumber: 10, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".debug_line", Value: 0x1fa9, SectionNumber: 13, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".rdata$zzz", Value: 0x5a0, SectionNumber: 3, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".debug_frame", Value: 0xae0, SectionNumber: 14, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".file", Value: 0x3c5, SectionNumber: -2, Type: 0x0, StorageClass: 0x67},
+ &pe.Symbol{Name: "hname", Value: 0xfc, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: "fthunk", Value: 0x2ac, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".text", Value: 0x1c00, SectionNumber: 1, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".data", Value: 0x180, SectionNumber: 2, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".bss", Value: 0x960, SectionNumber: 6, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$2", Value: 0x14, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$4", Value: 0xfc, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$5", Value: 0x2ac, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".file", Value: 0x474, SectionNumber: -2, Type: 0x0, StorageClass: 0x67},
+ &pe.Symbol{Name: ".text", Value: 0x1c00, SectionNumber: 1, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".data", Value: 0x180, SectionNumber: 2, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".bss", Value: 0x960, SectionNumber: 6, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$4", Value: 0x1e4, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$5", Value: 0x394, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$7", Value: 0x7bc, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".text", Value: 0x1c00, SectionNumber: 1, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".data", Value: 0x180, SectionNumber: 2, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".bss", Value: 0x960, SectionNumber: 6, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$7", Value: 0x734, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$5", Value: 0x29c, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$4", Value: 0xec, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$6", Value: 0x574, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".text", Value: 0x1c08, SectionNumber: 1, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".data", Value: 0x180, SectionNumber: 2, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".bss", Value: 0x960, SectionNumber: 6, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$7", Value: 0x730, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$5", Value: 0x294, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$4", Value: 0xe4, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$6", Value: 0x562, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".text", Value: 0x1c10, SectionNumber: 1, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".data", Value: 0x180, SectionNumber: 2, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".bss", Value: 0x960, SectionNumber: 6, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$7", Value: 0x72c, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$5", Value: 0x28c, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$4", Value: 0xdc, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$6", Value: 0x546, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".text", Value: 0x1c18, SectionNumber: 1, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".data", Value: 0x180, SectionNumber: 2, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".bss", Value: 0x960, SectionNumber: 6, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$7", Value: 0x728, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$5", Value: 0x284, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$4", Value: 0xd4, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$6", Value: 0x538, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".text", Value: 0x1c20, SectionNumber: 1, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".data", Value: 0x180, SectionNumber: 2, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".bss", Value: 0x960, SectionNumber: 6, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$7", Value: 0x724, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$5", Value: 0x27c, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$4", Value: 0xcc, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$6", Value: 0x524, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".text", Value: 0x1c28, SectionNumber: 1, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".data", Value: 0x180, SectionNumber: 2, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".bss", Value: 0x960, SectionNumber: 6, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$7", Value: 0x720, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$5", Value: 0x274, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$4", Value: 0xc4, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$6", Value: 0x51c, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".text", Value: 0x1c30, SectionNumber: 1, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".data", Value: 0x180, SectionNumber: 2, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".bss", Value: 0x960, SectionNumber: 6, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$7", Value: 0x71c, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$5", Value: 0x26c, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$4", Value: 0xbc, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$6", Value: 0x4fe, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".text", Value: 0x1c38, SectionNumber: 1, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".data", Value: 0x180, SectionNumber: 2, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".bss", Value: 0x960, SectionNumber: 6, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$7", Value: 0x718, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$5", Value: 0x264, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$4", Value: 0xb4, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$6", Value: 0x4ea, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".text", Value: 0x1c40, SectionNumber: 1, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".data", Value: 0x180, SectionNumber: 2, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".bss", Value: 0x960, SectionNumber: 6, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$7", Value: 0x714, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$5", Value: 0x25c, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$4", Value: 0xac, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$6", Value: 0x4d0, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".text", Value: 0x1c48, SectionNumber: 1, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".data", Value: 0x180, SectionNumber: 2, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".bss", Value: 0x960, SectionNumber: 6, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$7", Value: 0x710, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$5", Value: 0x254, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$4", Value: 0xa4, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$6", Value: 0x4bc, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".text", Value: 0x1c50, SectionNumber: 1, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".data", Value: 0x180, SectionNumber: 2, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".bss", Value: 0x960, SectionNumber: 6, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$7", Value: 0x70c, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$5", Value: 0x24c, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$4", Value: 0x9c, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$6", Value: 0x4a6, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".text", Value: 0x1c58, SectionNumber: 1, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".data", Value: 0x180, SectionNumber: 2, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".bss", Value: 0x960, SectionNumber: 6, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$7", Value: 0x708, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$5", Value: 0x244, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$4", Value: 0x94, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$6", Value: 0x48c, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".text", Value: 0x1c60, SectionNumber: 1, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".data", Value: 0x180, SectionNumber: 2, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".bss", Value: 0x960, SectionNumber: 6, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$7", Value: 0x704, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$5", Value: 0x23c, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$4", Value: 0x8c, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$6", Value: 0x474, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".text", Value: 0x1c68, SectionNumber: 1, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".data", Value: 0x180, SectionNumber: 2, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".bss", Value: 0x960, SectionNumber: 6, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$7", Value: 0x700, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$5", Value: 0x234, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$4", Value: 0x84, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$6", Value: 0x458, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".text", Value: 0x1c70, SectionNumber: 1, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".data", Value: 0x180, SectionNumber: 2, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".bss", Value: 0x960, SectionNumber: 6, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$7", Value: 0x6fc, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$5", Value: 0x22c, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$4", Value: 0x7c, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$6", Value: 0x448, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".text", Value: 0x1c78, SectionNumber: 1, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".data", Value: 0x180, SectionNumber: 2, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".bss", Value: 0x960, SectionNumber: 6, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$7", Value: 0x6f8, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$5", Value: 0x224, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$4", Value: 0x74, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$6", Value: 0x42e, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".text", Value: 0x1c80, SectionNumber: 1, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".data", Value: 0x180, SectionNumber: 2, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".bss", Value: 0x960, SectionNumber: 6, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$7", Value: 0x6f4, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$5", Value: 0x21c, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$4", Value: 0x6c, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$6", Value: 0x41c, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".text", Value: 0x1c88, SectionNumber: 1, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".data", Value: 0x180, SectionNumber: 2, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".bss", Value: 0x960, SectionNumber: 6, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$7", Value: 0x6f0, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$5", Value: 0x214, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$4", Value: 0x64, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$6", Value: 0x40c, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".text", Value: 0x1c90, SectionNumber: 1, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".data", Value: 0x180, SectionNumber: 2, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".bss", Value: 0x960, SectionNumber: 6, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$7", Value: 0x6ec, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$5", Value: 0x20c, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$4", Value: 0x5c, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$6", Value: 0x3f6, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".text", Value: 0x1c98, SectionNumber: 1, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".data", Value: 0x180, SectionNumber: 2, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".bss", Value: 0x960, SectionNumber: 6, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$7", Value: 0x6e8, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$5", Value: 0x204, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$4", Value: 0x54, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$6", Value: 0x3e0, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".text", Value: 0x1ca0, SectionNumber: 1, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".data", Value: 0x180, SectionNumber: 2, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".bss", Value: 0x960, SectionNumber: 6, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$7", Value: 0x6e4, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$5", Value: 0x1fc, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$4", Value: 0x4c, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$6", Value: 0x3cc, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".text", Value: 0x1ca8, SectionNumber: 1, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".data", Value: 0x180, SectionNumber: 2, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".bss", Value: 0x960, SectionNumber: 6, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$7", Value: 0x6e0, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$5", Value: 0x1f4, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$4", Value: 0x44, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$6", Value: 0x3b4, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".text", Value: 0x1cb0, SectionNumber: 1, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".data", Value: 0x180, SectionNumber: 2, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".bss", Value: 0x960, SectionNumber: 6, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$7", Value: 0x6dc, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$5", Value: 0x1ec, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$4", Value: 0x3c, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$6", Value: 0x39c, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".file", Value: 0x482, SectionNumber: -2, Type: 0x0, StorageClass: 0x67},
+ &pe.Symbol{Name: "hname", Value: 0x3c, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: "fthunk", Value: 0x1ec, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".text", Value: 0x1cc0, SectionNumber: 1, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".data", Value: 0x180, SectionNumber: 2, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".bss", Value: 0x960, SectionNumber: 6, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$2", Value: 0x0, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$4", Value: 0x3c, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$5", Value: 0x1ec, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".file", Value: 0x490, SectionNumber: -2, Type: 0x0, StorageClass: 0x67},
+ &pe.Symbol{Name: ".text", Value: 0x1cc0, SectionNumber: 1, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".data", Value: 0x180, SectionNumber: 2, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".bss", Value: 0x960, SectionNumber: 6, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$4", Value: 0xf4, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$5", Value: 0x2a4, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".idata$7", Value: 0x738, SectionNumber: 7, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".file", Value: 0x49a, SectionNumber: -2, Type: 0x0, StorageClass: 0x67},
+ &pe.Symbol{Name: ".text", Value: 0x1cc0, SectionNumber: 1, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".data", Value: 0x180, SectionNumber: 2, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".bss", Value: 0x960, SectionNumber: 6, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: ".rdata$zzz", Value: 0x5c0, SectionNumber: 3, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: "__xc_z", Value: 0x10, SectionNumber: 8, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "___RUNTIME_PSEUDO_RELOC_LIST__", Value: 0x4045e0, SectionNumber: -1, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "__imp_GetStartupInfoA", Value: 0x21c, SectionNumber: 7, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "symbol1", Value: 0x20, SectionNumber: 2, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "__imp_abort", Value: 0x32c, SectionNumber: 7, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "__lib64_libkernel32_a_iname", Value: 0x738, SectionNumber: 7, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "__data_start__", Value: 0x0, SectionNumber: 2, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "___DTOR_LIST__", Value: 0x1cd0, SectionNumber: 1, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "__imp__fmode", Value: 0x304, SectionNumber: 7, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "__imp__lock", Value: 0x314, SectionNumber: 7, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "__imp_RtlVirtualUnwind", Value: 0x264, SectionNumber: 7, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "SetUnhandledExceptionFilter", Value: 0x1c30, SectionNumber: 1, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "__imp_calloc", Value: 0x334, SectionNumber: 7, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "_lock", Value: 0x1b88, SectionNumber: 1, Type: 0x20, StorageClass: 0x2},
+ &pe.Symbol{Name: "___tls_start__", Value: 0x0, SectionNumber: 9, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "__ImageBase", Value: 0x400000, SectionNumber: -1, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "__xl_a", Value: 0x38, SectionNumber: 8, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "GetLastError", Value: 0x1c88, SectionNumber: 1, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "GetSystemTimeAsFileTime", Value: 0x1c78, SectionNumber: 1, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "mingw_initltssuo_force", Value: 0x5f0, SectionNumber: 6, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "__rt_psrelocs_start", Value: 0x5e0, SectionNumber: 3, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "_cexit", Value: 0x1b98, SectionNumber: 1, Type: 0x20, StorageClass: 0x2},
+ &pe.Symbol{Name: "__imp___dllonexit", Value: 0x2b4, SectionNumber: 7, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "__dll_characteristics__", Value: 0x0, SectionNumber: -1, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "__size_of_stack_commit__", Value: 0x1000, SectionNumber: -1, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "__iob_func", Value: 0x1bc0, SectionNumber: 1, Type: 0x20, StorageClass: 0x2},
+ &pe.Symbol{Name: "__imp__acmdln", Value: 0x2ec, SectionNumber: 7, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "__size_of_stack_reserve__", Value: 0x200000, SectionNumber: -1, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "__major_subsystem_version__", Value: 0x5, SectionNumber: -1, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "___crt_xl_start__", Value: 0x38, SectionNumber: 8, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "__imp_DeleteCriticalSection", Value: 0x1ec, SectionNumber: 7, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "__xl_d", Value: 0x48, SectionNumber: 8, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "__imp__set_invalid_parameter_handler", Value: 0x178, SectionNumber: 2, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "_tls_end", Value: 0x60, SectionNumber: 9, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "VirtualQuery", Value: 0x1c00, SectionNumber: 1, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "___crt_xi_start__", Value: 0x18, SectionNumber: 8, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "__imp__amsg_exit", Value: 0x2f4, SectionNumber: 7, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "___crt_xi_end__", Value: 0x38, SectionNumber: 8, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "_tls_start", Value: 0x0, SectionNumber: 9, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "memcpy", Value: 0x1b38, SectionNumber: 1, Type: 0x20, StorageClass: 0x2},
+ &pe.Symbol{Name: "__mingw_winmain_lpCmdLine", Value: 0x960, SectionNumber: 6, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "__mingw_oldexcpt_handler", Value: 0x640, SectionNumber: 6, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "__imp_GetCurrentThreadId", Value: 0x20c, SectionNumber: 7, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "malloc", Value: 0x1b40, SectionNumber: 1, Type: 0x20, StorageClass: 0x2},
+ &pe.Symbol{Name: "GetCurrentProcessId", Value: 0x1c98, SectionNumber: 1, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "_CRT_MT", Value: 0x150, SectionNumber: 2, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "TlsGetValue", Value: 0x1c18, SectionNumber: 1, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "TerminateProcess", Value: 0x1c20, SectionNumber: 1, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "__bss_start__", Value: 0x0, SectionNumber: 6, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "__imp___C_specific_handler", Value: 0x2ac, SectionNumber: 7, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "___RUNTIME_PSEUDO_RELOC_LIST_END__", Value: 0x4045e0, SectionNumber: -1, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "RtlLookupFunctionEntry", Value: 0x1c40, SectionNumber: 1, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "__size_of_heap_commit__", Value: 0x1000, SectionNumber: -1, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "__imp_GetLastError", Value: 0x214, SectionNumber: 7, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "__imp_free", Value: 0x34c, SectionNumber: 7, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "__imp_RtlLookupFunctionEntry", Value: 0x25c, SectionNumber: 7, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "VirtualProtect", Value: 0x1c08, SectionNumber: 1, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "mingw_app_type", Value: 0x610, SectionNumber: 6, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "___crt_xp_start__", Value: 0x58, SectionNumber: 8, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "__imp_LeaveCriticalSection", Value: 0x23c, SectionNumber: 7, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "__mingw_pinit", Value: 0x28, SectionNumber: 8, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "__C_specific_handler", Value: 0x1bd8, SectionNumber: 1, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "__imp_GetTickCount", Value: 0x22c, SectionNumber: 7, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "abort", Value: 0x1b70, SectionNumber: 1, Type: 0x20, StorageClass: 0x2},
+ &pe.Symbol{Name: "___crt_xp_end__", Value: 0x58, SectionNumber: 8, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "__dll__", Value: 0x0, SectionNumber: -1, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "__minor_os_version__", Value: 0x0, SectionNumber: -1, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "__imp_GetSystemTimeAsFileTime", Value: 0x224, SectionNumber: 7, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "EnterCriticalSection", Value: 0x1ca8, SectionNumber: 1, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "_MINGW_INSTALL_DEBUG_MATHERR", Value: 0x160, SectionNumber: 2, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "__image_base__", Value: 0x400000, SectionNumber: -1, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "__imp_write", Value: 0x38c, SectionNumber: 7, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "RtlCaptureContext", Value: 0x1c48, SectionNumber: 1, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "__section_alignment__", Value: 0x1000, SectionNumber: -1, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "__native_dllmain_reason", Value: 0x134, SectionNumber: 2, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "calloc", Value: 0x1b68, SectionNumber: 1, Type: 0x20, StorageClass: 0x2},
+ &pe.Symbol{Name: "_tls_used", Value: 0x20, SectionNumber: 9, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "UnhandledExceptionFilter", Value: 0x1c10, SectionNumber: 1, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "mingw_initcharmax", Value: 0x50, SectionNumber: 6, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "__IAT_end__", Value: 0x39c, SectionNumber: 7, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "write", Value: 0x1b10, SectionNumber: 1, Type: 0x20, StorageClass: 0x2},
+ &pe.Symbol{Name: "__imp_memcpy", Value: 0x364, SectionNumber: 7, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "__RUNTIME_PSEUDO_RELOC_LIST__", Value: 0x4045e0, SectionNumber: -1, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "fprintf", Value: 0x1b58, SectionNumber: 1, Type: 0x20, StorageClass: 0x2},
+ &pe.Symbol{Name: "__imp_RtlAddFunctionTable", Value: 0x24c, SectionNumber: 7, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "Sleep", Value: 0x1c28, SectionNumber: 1, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "mingw_pcppinit", Value: 0x8, SectionNumber: 8, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "__data_end__", Value: 0x1a0, SectionNumber: 2, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "__imp_fwrite", Value: 0x354, SectionNumber: 7, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "__CTOR_LIST__", Value: 0x1cc0, SectionNumber: 1, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "__imp___getmainargs", Value: 0x2bc, SectionNumber: 7, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "_head_lib64_libkernel32_a", Value: 0x0, SectionNumber: 7, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "__bss_end__", Value: 0x9b0, SectionNumber: 6, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "__xi_z", Value: 0x30, SectionNumber: 8, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "GetTickCount", Value: 0x1c70, SectionNumber: 1, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "_head_lib64_libmsvcrt_a", Value: 0x14, SectionNumber: 7, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "__native_vcclrit_reason", Value: 0x130, SectionNumber: 2, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "___crt_xc_end__", Value: 0x18, SectionNumber: 8, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "RtlAddFunctionTable", Value: 0x1c50, SectionNumber: 1, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "__imp_EnterCriticalSection", Value: 0x1f4, SectionNumber: 7, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "_tls_index", Value: 0x5fc, SectionNumber: 6, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "signal", Value: 0x1b30, SectionNumber: 1, Type: 0x20, StorageClass: 0x2},
+ &pe.Symbol{Name: "__native_startup_state", Value: 0x980, SectionNumber: 6, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "___crt_xc_start__", Value: 0x0, SectionNumber: 8, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "__onexitbegin", Value: 0x970, SectionNumber: 6, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "__imp_GetCurrentProcessId", Value: 0x204, SectionNumber: 7, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "strncmp", Value: 0x1b20, SectionNumber: 1, Type: 0x20, StorageClass: 0x2},
+ &pe.Symbol{Name: "__imp___lconv_init", Value: 0x2d4, SectionNumber: 7, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "__imp_TerminateProcess", Value: 0x27c, SectionNumber: 7, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "___CTOR_LIST__", Value: 0x1cc0, SectionNumber: 1, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "__imp_signal", Value: 0x36c, SectionNumber: 7, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "__rt_psrelocs_size", Value: 0x0, SectionNumber: -1, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "__imp_QueryPerformanceCounter", Value: 0x244, SectionNumber: 7, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "__imp_strlen", Value: 0x374, SectionNumber: 7, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "__imp_malloc", Value: 0x35c, SectionNumber: 7, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "__mingw_winmain_nShowCmd", Value: 0x0, SectionNumber: 2, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "mingw_pcinit", Value: 0x20, SectionNumber: 8, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "__file_alignment__", Value: 0x200, SectionNumber: -1, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "__imp_InitializeCriticalSection", Value: 0x234, SectionNumber: 7, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "__lconv_init", Value: 0x1bb8, SectionNumber: 1, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "__getmainargs", Value: 0x1bc8, SectionNumber: 1, Type: 0x20, StorageClass: 0x2},
+ &pe.Symbol{Name: "InitializeCriticalSection", Value: 0x1c68, SectionNumber: 1, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "__imp_exit", Value: 0x33c, SectionNumber: 7, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "__major_os_version__", Value: 0x4, SectionNumber: -1, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "__imp_vfprintf", Value: 0x384, SectionNumber: 7, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "__imp___initenv", Value: 0x2c4, SectionNumber: 7, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "__IAT_start__", Value: 0x1ec, SectionNumber: 7, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "__imp__cexit", Value: 0x2fc, SectionNumber: 7, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "__imp_UnhandledExceptionFilter", Value: 0x28c, SectionNumber: 7, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "__xl_z", Value: 0x50, SectionNumber: 8, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "__end__", Value: 0x1000, SectionNumber: 9, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "__imp_SetUnhandledExceptionFilter", Value: 0x26c, SectionNumber: 7, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "__imp__onexit", Value: 0x31c, SectionNumber: 7, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "__DTOR_LIST__", Value: 0x1cd0, SectionNumber: 1, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "RtlVirtualUnwind", Value: 0x1c38, SectionNumber: 1, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "__xi_a", Value: 0x18, SectionNumber: 8, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "symbol2", Value: 0xa0, SectionNumber: 2, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "__set_app_type", Value: 0x1bb0, SectionNumber: 1, Type: 0x20, StorageClass: 0x2},
+ &pe.Symbol{Name: "__imp_Sleep", Value: 0x274, SectionNumber: 7, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "LeaveCriticalSection", Value: 0x1c60, SectionNumber: 1, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "__xc_a", Value: 0x0, SectionNumber: 8, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "__imp___setusermatherr", Value: 0x2e4, SectionNumber: 7, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "__size_of_heap_reserve__", Value: 0x100000, SectionNumber: -1, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "___crt_xt_start__", Value: 0x58, SectionNumber: 8, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "__subsystem__", Value: 0x3, SectionNumber: -1, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "_amsg_exit", Value: 0x1ba0, SectionNumber: 1, Type: 0x20, StorageClass: 0x2},
+ &pe.Symbol{Name: "_fmode", Value: 0x630, SectionNumber: 6, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "__security_cookie_complement", Value: 0x190, SectionNumber: 2, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "__imp_TlsGetValue", Value: 0x284, SectionNumber: 7, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "GetCurrentProcess", Value: 0x1ca0, SectionNumber: 1, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "__setusermatherr", Value: 0x1ba8, SectionNumber: 1, Type: 0x20, StorageClass: 0x2},
+ &pe.Symbol{Name: "__imp_fprintf", Value: 0x344, SectionNumber: 7, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "__imp_VirtualProtect", Value: 0x294, SectionNumber: 7, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "__xl_c", Value: 0x40, SectionNumber: 8, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "___tls_end__", Value: 0x68, SectionNumber: 9, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "__onexitend", Value: 0x978, SectionNumber: 6, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "QueryPerformanceCounter", Value: 0x1c58, SectionNumber: 1, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "__imp_VirtualQuery", Value: 0x29c, SectionNumber: 7, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "__imp__initterm", Value: 0x30c, SectionNumber: 7, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "mingw_initltsdyn_force", Value: 0x5f4, SectionNumber: 6, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "_dowildcard", Value: 0x40, SectionNumber: 6, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "__imp___iob_func", Value: 0x2cc, SectionNumber: 7, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "__dyn_tls_init_callback", Value: 0x10, SectionNumber: 3, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "_initterm", Value: 0x1b90, SectionNumber: 1, Type: 0x20, StorageClass: 0x2},
+ &pe.Symbol{Name: "_newmode", Value: 0x5e0, SectionNumber: 6, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "fwrite", Value: 0x1b48, SectionNumber: 1, Type: 0x20, StorageClass: 0x2},
+ &pe.Symbol{Name: "__imp_strncmp", Value: 0x37c, SectionNumber: 7, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "__major_image_version__", Value: 0x0, SectionNumber: -1, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "__loader_flags__", Value: 0x0, SectionNumber: -1, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "___chkstk_ms", Value: 0x1ad0, SectionNumber: 1, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "__native_startup_lock", Value: 0x988, SectionNumber: 6, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "__mingw_winmain_hInstance", Value: 0x968, SectionNumber: 6, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "GetStartupInfoA", Value: 0x1c80, SectionNumber: 1, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "GetCurrentThreadId", Value: 0x1c90, SectionNumber: 1, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "_onexit", Value: 0x1b80, SectionNumber: 1, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "__rt_psrelocs_end", Value: 0x5e0, SectionNumber: 3, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "exit", Value: 0x1b60, SectionNumber: 1, Type: 0x20, StorageClass: 0x2},
+ &pe.Symbol{Name: "__imp__get_invalid_parameter_handler", Value: 0x170, SectionNumber: 2, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "__minor_subsystem_version__", Value: 0x2, SectionNumber: -1, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "__minor_image_version__", Value: 0x0, SectionNumber: -1, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "__imp__unlock", Value: 0x324, SectionNumber: 7, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "__imp___set_app_type", Value: 0x2dc, SectionNumber: 7, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "mingw_initltsdrot_force", Value: 0x5f8, SectionNumber: 6, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "_charmax", Value: 0x140, SectionNumber: 2, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "strlen", Value: 0x1b28, SectionNumber: 1, Type: 0x20, StorageClass: 0x2},
+ &pe.Symbol{Name: "DeleteCriticalSection", Value: 0x1cb0, SectionNumber: 1, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "__imp_RtlCaptureContext", Value: 0x254, SectionNumber: 7, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "__RUNTIME_PSEUDO_RELOC_LIST_END__", Value: 0x4045e0, SectionNumber: -1, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "__dllonexit", Value: 0x1bd0, SectionNumber: 1, Type: 0x20, StorageClass: 0x2},
+ &pe.Symbol{Name: "_unlock", Value: 0x1b78, SectionNumber: 1, Type: 0x20, StorageClass: 0x2},
+ &pe.Symbol{Name: "__imp_GetCurrentProcess", Value: 0x1fc, SectionNumber: 7, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "___crt_xt_end__", Value: 0x58, SectionNumber: 8, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "__lib64_libmsvcrt_a_iname", Value: 0x7bc, SectionNumber: 7, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "vfprintf", Value: 0x1b18, SectionNumber: 1, Type: 0x20, StorageClass: 0x2},
+ &pe.Symbol{Name: "free", Value: 0x1b50, SectionNumber: 1, Type: 0x20, StorageClass: 0x2},
+ &pe.Symbol{Name: "__security_cookie", Value: 0x180, SectionNumber: 2, Type: 0x0, StorageClass: 0x2},
+ },
+}
diff --git a/cmd/symbol_inject/pe_test.go b/cmd/symbol_inject/pe_test.go
new file mode 100644
index 00000000..21a0bc45
--- /dev/null
+++ b/cmd/symbol_inject/pe_test.go
@@ -0,0 +1,141 @@
+// Copyright 2018 Google Inc. All rights reserved.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package main
+
+import (
+ "debug/pe"
+ "strconv"
+ "testing"
+)
+
+func TestPESymbolTable(t *testing.T) {
+ testCases := []struct {
+ file *pe.File
+ symbol string
+ offset, size uint64
+ }{
+ {
+ file: peSymbolTable1,
+ symbol: "soong_build_number",
+ offset: 0x2420,
+ size: 128,
+ },
+ {
+ file: peSymbolTable2,
+ symbol: "symbol1",
+ offset: 0x2420,
+ size: 128,
+ },
+ {
+ file: peSymbolTable2,
+ symbol: "symbol2",
+ offset: 0x24a0,
+ size: 128,
+ },
+ {
+ // Test when symbol has the same value as the target symbol but is located afterwards in the list
+ file: &pe.File{
+ FileHeader: pe.FileHeader{
+ Machine: pe.IMAGE_FILE_MACHINE_I386,
+ },
+ Sections: []*pe.Section{
+ &pe.Section{SectionHeader: pe.SectionHeader{Name: ".text", VirtualSize: 0x15e83c, VirtualAddress: 0x1000, Size: 0x15ea00, Offset: 0x600, PointerToRelocations: 0x0, PointerToLineNumbers: 0x0, NumberOfRelocations: 0x0, NumberOfLineNumbers: 0x0, Characteristics: 0x60500060}},
+ &pe.Section{SectionHeader: pe.SectionHeader{Name: ".data", VirtualSize: 0x6a58, VirtualAddress: 0x160000, Size: 0x6c00, Offset: 0x15f000, PointerToRelocations: 0x0, PointerToLineNumbers: 0x0, NumberOfRelocations: 0x0, NumberOfLineNumbers: 0x0, Characteristics: 0xc0600040}},
+ },
+ Symbols: []*pe.Symbol{
+ &pe.Symbol{Name: "_soong_build_number", Value: 0x20, SectionNumber: 2, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: ".data", Value: 0x20, SectionNumber: 2, Type: 0x0, StorageClass: 0x3},
+ &pe.Symbol{Name: "_adb_device_banner", Value: 0xa0, SectionNumber: 2, Type: 0x0, StorageClass: 0x2},
+ },
+ },
+ symbol: "soong_build_number",
+ offset: 0x15f020,
+ size: 128,
+ },
+ {
+ // Test when symbol has nothing after it
+ file: &pe.File{
+ FileHeader: pe.FileHeader{
+ Machine: pe.IMAGE_FILE_MACHINE_AMD64,
+ },
+ Sections: []*pe.Section{
+ &pe.Section{SectionHeader: pe.SectionHeader{Name: ".text", VirtualSize: 0x1cc0, VirtualAddress: 0x1000, Size: 0x1e00, Offset: 0x600, PointerToRelocations: 0x0, PointerToLineNumbers: 0x0, NumberOfRelocations: 0x0, NumberOfLineNumbers: 0x0, Characteristics: 0x60500020}},
+ &pe.Section{SectionHeader: pe.SectionHeader{Name: ".data", VirtualSize: 0xa0, VirtualAddress: 0x3000, Size: 0x200, Offset: 0x2400, PointerToRelocations: 0x0, PointerToLineNumbers: 0x0, NumberOfRelocations: 0x0, NumberOfLineNumbers: 0x0, Characteristics: 0xc0600040}},
+ },
+ Symbols: []*pe.Symbol{
+ &pe.Symbol{Name: "soong_build_number", Value: 0x20, SectionNumber: 2, Type: 0x0, StorageClass: 0x2},
+ },
+ },
+ symbol: "soong_build_number",
+ offset: 0x2420,
+ size: 128,
+ },
+ {
+ // Test when symbol has a symbol in a different section after it
+ file: &pe.File{
+ FileHeader: pe.FileHeader{
+ Machine: pe.IMAGE_FILE_MACHINE_AMD64,
+ },
+ Sections: []*pe.Section{
+ &pe.Section{SectionHeader: pe.SectionHeader{Name: ".text", VirtualSize: 0x1cc0, VirtualAddress: 0x1000, Size: 0x1e00, Offset: 0x600, PointerToRelocations: 0x0, PointerToLineNumbers: 0x0, NumberOfRelocations: 0x0, NumberOfLineNumbers: 0x0, Characteristics: 0x60500020}},
+ &pe.Section{SectionHeader: pe.SectionHeader{Name: ".data", VirtualSize: 0xa0, VirtualAddress: 0x3000, Size: 0x200, Offset: 0x2400, PointerToRelocations: 0x0, PointerToLineNumbers: 0x0, NumberOfRelocations: 0x0, NumberOfLineNumbers: 0x0, Characteristics: 0xc0600040}},
+ &pe.Section{SectionHeader: pe.SectionHeader{Name: ".rdata", VirtualSize: 0x5e0, VirtualAddress: 0x4000, Size: 0x600, Offset: 0x2600, PointerToRelocations: 0x0, PointerToLineNumbers: 0x0, NumberOfRelocations: 0x0, NumberOfLineNumbers: 0x0, Characteristics: 0x40500040}},
+ },
+ Symbols: []*pe.Symbol{
+ &pe.Symbol{Name: "soong_build_number", Value: 0x20, SectionNumber: 2, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "_adb_device_banner", Value: 0x30, SectionNumber: 3, Type: 0x0, StorageClass: 0x2},
+ },
+ },
+ symbol: "soong_build_number",
+ offset: 0x2420,
+ size: 128,
+ },
+ {
+ // Test when symbols are out of order
+ file: &pe.File{
+ FileHeader: pe.FileHeader{
+ Machine: pe.IMAGE_FILE_MACHINE_AMD64,
+ },
+ Sections: []*pe.Section{
+ &pe.Section{SectionHeader: pe.SectionHeader{Name: ".text", VirtualSize: 0x1cc0, VirtualAddress: 0x1000, Size: 0x1e00, Offset: 0x600, PointerToRelocations: 0x0, PointerToLineNumbers: 0x0, NumberOfRelocations: 0x0, NumberOfLineNumbers: 0x0, Characteristics: 0x60500020}},
+ &pe.Section{SectionHeader: pe.SectionHeader{Name: ".data", VirtualSize: 0x120, VirtualAddress: 0x3000, Size: 0x200, Offset: 0x2400, PointerToRelocations: 0x0, PointerToLineNumbers: 0x0, NumberOfRelocations: 0x0, NumberOfLineNumbers: 0x0, Characteristics: 0xc0600040}},
+ },
+ Symbols: []*pe.Symbol{
+ &pe.Symbol{Name: "_adb_device_banner", Value: 0xa0, SectionNumber: 2, Type: 0x0, StorageClass: 0x2},
+ &pe.Symbol{Name: "soong_build_number", Value: 0x20, SectionNumber: 2, Type: 0x0, StorageClass: 0x2},
+ },
+ },
+ symbol: "soong_build_number",
+ offset: 0x2420,
+ size: 128,
+ },
+ }
+
+ for i, testCase := range testCases {
+ t.Run(strconv.Itoa(i), func(t *testing.T) {
+ file, err := extractPESymbols(testCase.file)
+ if err != nil {
+ t.Error(err.Error())
+ }
+ offset, size, err := findSymbol(file, testCase.symbol)
+ if err != nil {
+ t.Error(err.Error())
+ }
+ if offset != testCase.offset || size != testCase.size {
+ t.Errorf("expected %x:%x, got %x:%x", testCase.offset, testCase.size, offset, size)
+ }
+ })
+ }
+}
diff --git a/cmd/symbol_inject/symbol_inject.go b/cmd/symbol_inject/symbol_inject.go
index 75f8a1ac..d0f01c53 100644
--- a/cmd/symbol_inject/symbol_inject.go
+++ b/cmd/symbol_inject/symbol_inject.go
@@ -29,6 +29,8 @@ var (
symbol = flag.String("s", "", "symbol to inject into")
from = flag.String("from", "", "optional existing value of the symbol for verification")
value = flag.String("v", "", "value to inject into symbol")
+
+ dump = flag.Bool("dump", false, "dump the symbol table for copying into a test")
)
var maxUint64 uint64 = math.MaxUint64
@@ -50,16 +52,18 @@ func main() {
usageError("-i is required")
}
- if *output == "" {
- usageError("-o is required")
- }
+ if !*dump {
+ if *output == "" {
+ usageError("-o is required")
+ }
- if *symbol == "" {
- usageError("-s is required")
- }
+ if *symbol == "" {
+ usageError("-s is required")
+ }
- if *value == "" {
- usageError("-v is required")
+ if *value == "" {
+ usageError("-v is required")
+ }
}
r, err := os.Open(*input)
@@ -69,6 +73,15 @@ func main() {
}
defer r.Close()
+ if *dump {
+ err := dumpSymbols(r)
+ if err != nil {
+ fmt.Fprintln(os.Stderr, err.Error())
+ os.Exit(6)
+ }
+ return
+ }
+
w, err := os.OpenFile(*output, os.O_RDWR|os.O_CREATE|os.O_TRUNC, 0777)
if err != nil {
fmt.Fprintln(os.Stderr, err.Error())
@@ -76,37 +89,46 @@ func main() {
}
defer w.Close()
- err = injectSymbol(r, w, *symbol, *value, *from)
+ file, err := openFile(r)
if err != nil {
fmt.Fprintln(os.Stderr, err.Error())
- os.Remove(*output)
- os.Exit(2)
+ os.Exit(4)
}
-}
-type ReadSeekerAt interface {
- io.ReaderAt
- io.ReadSeeker
+ err = injectSymbol(file, w, *symbol, *value, *from)
+ if err != nil {
+ fmt.Fprintln(os.Stderr, err.Error())
+ os.Remove(*output)
+ os.Exit(5)
+ }
}
-func injectSymbol(r ReadSeekerAt, w io.Writer, symbol, value, from string) error {
- var offset, size uint64
- var err error
-
- offset, size, err = findElfSymbol(r, symbol)
+func openFile(r io.ReaderAt) (*File, error) {
+ file, err := elfSymbolsFromFile(r)
if elfError, ok := err.(cantParseError); ok {
// Try as a mach-o file
- offset, size, err = findMachoSymbol(r, symbol)
+ file, err = machoSymbolsFromFile(r)
if _, ok := err.(cantParseError); ok {
// Try as a windows PE file
- offset, size, err = findPESymbol(r, symbol)
+ file, err = peSymbolsFromFile(r)
if _, ok := err.(cantParseError); ok {
// Can't parse as elf, macho, or PE, return the elf error
- return elfError
+ return nil, elfError
}
}
}
if err != nil {
+ return nil, err
+ }
+
+ file.r = r
+
+ return file, err
+}
+
+func injectSymbol(file *File, w io.Writer, symbol, value, from string) error {
+ offset, size, err := findSymbol(file, symbol)
+ if err != nil {
return err
}
@@ -119,7 +141,7 @@ func injectSymbol(r ReadSeekerAt, w io.Writer, symbol, value, from string) error
expected := make([]byte, size)
existing := make([]byte, size)
copy(expected, from)
- _, err := r.ReadAt(existing, int64(offset))
+ _, err := file.r.ReadAt(existing, int64(offset))
if err != nil {
return err
}
@@ -129,48 +151,107 @@ func injectSymbol(r ReadSeekerAt, w io.Writer, symbol, value, from string) error
}
}
- return copyAndInject(r, w, offset, size, value)
+ return copyAndInject(file.r, w, offset, size, value)
}
-func copyAndInject(r io.ReadSeeker, w io.Writer, offset, size uint64, value string) (err error) {
- // helper that asserts a two-value function returning an int64 and an error has err != nil
- must := func(n int64, err error) {
- if err != nil {
- panic(err)
- }
+func copyAndInject(r io.ReaderAt, w io.Writer, offset, size uint64, value string) (err error) {
+ buf := make([]byte, size)
+ copy(buf, value)
+
+ // Copy the first bytes up to the symbol offset
+ _, err = io.Copy(w, io.NewSectionReader(r, 0, int64(offset)))
+
+ // Write the injected value in the output file
+ if err == nil {
+ _, err = w.Write(buf)
}
- // helper that asserts a two-value function returning an int and an error has err != nil
- must2 := func(n int, err error) {
- must(int64(n), err)
+ // Write the remainder of the file
+ pos := int64(offset + size)
+ if err == nil {
+ _, err = io.Copy(w, io.NewSectionReader(r, pos, 1<<63-1-pos))
+ }
+
+ if err == io.EOF {
+ err = io.ErrUnexpectedEOF
}
- // convert a panic into returning an error
- defer func() {
- if r := recover(); r != nil {
- err, _ = r.(error)
- if err == io.EOF {
- err = io.ErrUnexpectedEOF
+ return err
+}
+
+func findSymbol(file *File, symbolName string) (uint64, uint64, error) {
+ for i, symbol := range file.Symbols {
+ if symbol.Name == symbolName {
+ // Find the next symbol (n the same section with a higher address
+ var n int
+ for n = i; n < len(file.Symbols); n++ {
+ if file.Symbols[n].Section != symbol.Section {
+ n = len(file.Symbols)
+ break
+ }
+ if file.Symbols[n].Addr > symbol.Addr {
+ break
+ }
}
- if err == nil {
- panic(r)
+
+ size := symbol.Size
+ if size == 0 {
+ var end uint64
+ if n < len(file.Symbols) {
+ end = file.Symbols[n].Addr
+ } else {
+ end = symbol.Section.Size
+ }
+
+ if end <= symbol.Addr || end > symbol.Addr+4096 {
+ return maxUint64, maxUint64, fmt.Errorf("symbol end address does not seem valid, %x:%x", symbol.Addr, end)
+ }
+
+ size = end - symbol.Addr
}
+
+ offset := symbol.Section.Offset + symbol.Addr
+
+ return uint64(offset), uint64(size), nil
}
- }()
+ }
- buf := make([]byte, size)
- copy(buf, value)
+ return maxUint64, maxUint64, fmt.Errorf("symbol not found")
+}
- // Reset the input file
- must(r.Seek(0, io.SeekStart))
- // Copy the first bytes up to the symbol offset
- must(io.CopyN(w, r, int64(offset)))
- // Skip the symbol contents in the input file
- must(r.Seek(int64(size), io.SeekCurrent))
- // Write the injected value in the output file
- must2(w.Write(buf))
- // Write the remainder of the file
- must(io.Copy(w, r))
+type File struct {
+ r io.ReaderAt
+ Symbols []*Symbol
+ Sections []*Section
+}
+
+type Symbol struct {
+ Name string
+ Addr uint64 // Address of the symbol inside the section.
+ Size uint64 // Size of the symbol, if known.
+ Section *Section
+}
- return nil
+type Section struct {
+ Name string
+ Addr uint64 // Virtual address of the start of the section.
+ Offset uint64 // Offset into the file of the start of the section.
+ Size uint64
+}
+
+func dumpSymbols(r io.ReaderAt) error {
+ err := dumpElfSymbols(r)
+ if elfError, ok := err.(cantParseError); ok {
+ // Try as a mach-o file
+ err = dumpMachoSymbols(r)
+ if _, ok := err.(cantParseError); ok {
+ // Try as a windows PE file
+ err = dumpPESymbols(r)
+ if _, ok := err.(cantParseError); ok {
+ // Can't parse as elf, macho, or PE, return the elf error
+ return elfError
+ }
+ }
+ }
+ return err
}
diff --git a/cmd/symbol_inject/symbol_inject_test.go b/cmd/symbol_inject/symbol_inject_test.go
new file mode 100644
index 00000000..dbee39a0
--- /dev/null
+++ b/cmd/symbol_inject/symbol_inject_test.go
@@ -0,0 +1,67 @@
+// Copyright 2018 Google Inc. All rights reserved.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package main
+
+import (
+ "bytes"
+ "strconv"
+ "testing"
+)
+
+func TestCopyAndInject(t *testing.T) {
+ s := "abcdefghijklmnopqrstuvwxyz"
+ testCases := []struct {
+ offset, size uint64
+ value string
+ expected string
+ }{
+ {
+ offset: 0,
+ size: 1,
+ value: "A",
+ expected: "Abcdefghijklmnopqrstuvwxyz",
+ },
+ {
+ offset: 1,
+ size: 1,
+ value: "B",
+ expected: "aBcdefghijklmnopqrstuvwxyz",
+ },
+ {
+ offset: 1,
+ size: 1,
+ value: "BCD",
+ expected: "aBcdefghijklmnopqrstuvwxyz",
+ },
+ {
+ offset: 25,
+ size: 1,
+ value: "Z",
+ expected: "abcdefghijklmnopqrstuvwxyZ",
+ },
+ }
+
+ for i, testCase := range testCases {
+ t.Run(strconv.Itoa(i), func(t *testing.T) {
+ in := bytes.NewReader([]byte(s))
+ out := &bytes.Buffer{}
+ copyAndInject(in, out, testCase.offset, testCase.size, testCase.value)
+
+ if out.String() != testCase.expected {
+ t.Errorf("expected %s, got %s", testCase.expected, out.String())
+ }
+ })
+ }
+}