mirror of
https://github.com/yuzu-emu/breakpad.git
synced 2024-11-27 21:54:18 +01:00
Make SourceLineResolver use RangeMap (#13). r=bryner
- Eliminate MemAddrMap from source_line_resolver.cc and adapt it to use RangeMap, also used by minidump.cc. - RangeMap operates on both a base address and a size, where MemAddrMap only used a base address, so the dumped symbol file format is modified to include size information. dump_syms produces these files and SourceLineResolver consumes them. - Provide updated test data conforming to the new dumped symbol format. http://groups.google.com/group/airbag-dev/browse_thread/thread/e9403cf3ad6336a1 git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@21 4c0a9323-5329-0410-9bdc-e9ce6186880e
This commit is contained in:
parent
6dd21d3baf
commit
cb9fd5b773
@ -41,6 +41,7 @@ src_libairbag_la_SOURCES = \
|
|||||||
src/google/stack_frame.h \
|
src/google/stack_frame.h \
|
||||||
src/google/symbol_supplier.h \
|
src/google/symbol_supplier.h \
|
||||||
src/processor/crash_report_processor.cc \
|
src/processor/crash_report_processor.cc \
|
||||||
|
src/processor/linked_ptr.h \
|
||||||
src/processor/memory_region.h \
|
src/processor/memory_region.h \
|
||||||
src/processor/minidump.cc \
|
src/processor/minidump.cc \
|
||||||
src/processor/minidump.h \
|
src/processor/minidump.h \
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
# Makefile.in generated by automake 1.9.5 from Makefile.am.
|
# Makefile.in generated by automake 1.9.6 from Makefile.am.
|
||||||
# @configure_input@
|
# @configure_input@
|
||||||
|
|
||||||
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
|
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
|
||||||
@ -31,8 +31,6 @@
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
SOURCES = $(src_libairbag_la_SOURCES) $(src_processor_crash_report_processor_unittest_SOURCES) $(src_processor_minidump_dump_SOURCES) $(src_processor_minidump_stackwalk_SOURCES) $(src_processor_range_map_unittest_SOURCES) $(src_processor_source_line_resolver_unittest_SOURCES)
|
|
||||||
|
|
||||||
srcdir = @srcdir@
|
srcdir = @srcdir@
|
||||||
top_srcdir = @top_srcdir@
|
top_srcdir = @top_srcdir@
|
||||||
VPATH = @srcdir@
|
VPATH = @srcdir@
|
||||||
@ -293,6 +291,7 @@ src_libairbag_la_SOURCES = \
|
|||||||
src/google/stack_frame.h \
|
src/google/stack_frame.h \
|
||||||
src/google/symbol_supplier.h \
|
src/google/symbol_supplier.h \
|
||||||
src/processor/crash_report_processor.cc \
|
src/processor/crash_report_processor.cc \
|
||||||
|
src/processor/linked_ptr.h \
|
||||||
src/processor/memory_region.h \
|
src/processor/memory_region.h \
|
||||||
src/processor/minidump.cc \
|
src/processor/minidump.cc \
|
||||||
src/processor/minidump.h \
|
src/processor/minidump.h \
|
||||||
|
1621
aclocal.m4
vendored
1621
aclocal.m4
vendored
File diff suppressed because it is too large
Load Diff
174
src/processor/linked_ptr.h
Normal file
174
src/processor/linked_ptr.h
Normal file
@ -0,0 +1,174 @@
|
|||||||
|
// Copyright (C) 2006 Google Inc.
|
||||||
|
//
|
||||||
|
// 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.
|
||||||
|
|
||||||
|
// A "smart" pointer type with reference tracking. Every pointer to a
|
||||||
|
// particular object is kept on a circular linked list. When the last pointer
|
||||||
|
// to an object is destroyed or reassigned, the object is deleted.
|
||||||
|
//
|
||||||
|
// Used properly, this deletes the object when the last reference goes away.
|
||||||
|
// There are several caveats:
|
||||||
|
// - Like all reference counting schemes, cycles lead to leaks.
|
||||||
|
// - Each smart pointer is actually two pointers (8 bytes instead of 4).
|
||||||
|
// - Every time a pointer is assigned, the entire list of pointers to that
|
||||||
|
// object is traversed. This class is therefore NOT SUITABLE when there
|
||||||
|
// will often be more than two or three pointers to a particular object.
|
||||||
|
// - References are only tracked as long as linked_ptr<> objects are copied.
|
||||||
|
// If a linked_ptr<> is converted to a raw pointer and back, BAD THINGS
|
||||||
|
// will happen (double deletion).
|
||||||
|
//
|
||||||
|
// A good use of this class is storing object references in STL containers.
|
||||||
|
// You can safely put linked_ptr<> in a vector<>.
|
||||||
|
// Other uses may not be as good.
|
||||||
|
//
|
||||||
|
// Note: If you use an incomplete type with linked_ptr<>, the class
|
||||||
|
// *containing* linked_ptr<> must have a constructor and destructor (even
|
||||||
|
// if they do nothing!).
|
||||||
|
|
||||||
|
#ifndef PROCESSOR_LINKED_PTR_H__
|
||||||
|
#define PROCESSOR_LINKED_PTR_H__
|
||||||
|
|
||||||
|
// This is used internally by all instances of linked_ptr<>. It needs to be
|
||||||
|
// a non-template class because different types of linked_ptr<> can refer to
|
||||||
|
// the same object (linked_ptr<Superclass>(obj) vs linked_ptr<Subclass>(obj)).
|
||||||
|
// So, it needs to be possible for different types of linked_ptr to participate
|
||||||
|
// in the same circular linked list, so we need a single class type here.
|
||||||
|
//
|
||||||
|
// DO NOT USE THIS CLASS DIRECTLY YOURSELF. Use linked_ptr<T>.
|
||||||
|
class linked_ptr_internal {
|
||||||
|
public:
|
||||||
|
// Create a new circle that includes only this instance.
|
||||||
|
void join_new() {
|
||||||
|
next_ = this;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Join an existing circle.
|
||||||
|
void join(linked_ptr_internal const* ptr) {
|
||||||
|
linked_ptr_internal const* p = ptr;
|
||||||
|
while (p->next_ != ptr) p = p->next_;
|
||||||
|
p->next_ = this;
|
||||||
|
next_ = ptr;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Leave whatever circle we're part of. Returns true iff we were the
|
||||||
|
// last member of the circle. Once this is done, you can join() another.
|
||||||
|
bool depart() {
|
||||||
|
if (next_ == this) return true;
|
||||||
|
linked_ptr_internal const* p = next_;
|
||||||
|
while (p->next_ != this) p = p->next_;
|
||||||
|
p->next_ = next_;
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
private:
|
||||||
|
mutable linked_ptr_internal const* next_;
|
||||||
|
};
|
||||||
|
|
||||||
|
template <typename T>
|
||||||
|
class linked_ptr {
|
||||||
|
public:
|
||||||
|
typedef T element_type;
|
||||||
|
|
||||||
|
// Take over ownership of a raw pointer. This should happen as soon as
|
||||||
|
// possible after the object is created.
|
||||||
|
explicit linked_ptr(T* ptr = NULL) { capture(ptr); }
|
||||||
|
~linked_ptr() { depart(); }
|
||||||
|
|
||||||
|
// Copy an existing linked_ptr<>, adding ourselves to the list of references.
|
||||||
|
template <typename U> linked_ptr(linked_ptr<U> const& ptr) { copy(&ptr); }
|
||||||
|
linked_ptr(linked_ptr const& ptr) { copy(&ptr); }
|
||||||
|
|
||||||
|
// Assignment releases the old value and acquires the new.
|
||||||
|
template <typename U> linked_ptr& operator=(linked_ptr<U> const& ptr) {
|
||||||
|
depart();
|
||||||
|
copy(&ptr);
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
linked_ptr& operator=(linked_ptr const& ptr) {
|
||||||
|
if (&ptr != this) {
|
||||||
|
depart();
|
||||||
|
copy(&ptr);
|
||||||
|
}
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Smart pointer members.
|
||||||
|
void reset(T* ptr = NULL) { depart(); capture(ptr); }
|
||||||
|
T* get() const { return value_; }
|
||||||
|
T* operator->() const { return value_; }
|
||||||
|
T& operator*() const { return *value_; }
|
||||||
|
// Release ownership of the pointed object and returns it.
|
||||||
|
// Sole ownership by this linked_ptr object is required.
|
||||||
|
T* release() {
|
||||||
|
bool last = link_.depart();
|
||||||
|
T* v = value_;
|
||||||
|
value_ = NULL;
|
||||||
|
return v;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool operator==(T* p) const { return value_ == p; }
|
||||||
|
bool operator!=(T* p) const { return value_ != p; }
|
||||||
|
template <typename U>
|
||||||
|
bool operator==(linked_ptr<U> const& ptr) const {
|
||||||
|
return value_ == ptr.get();
|
||||||
|
}
|
||||||
|
template <typename U>
|
||||||
|
bool operator!=(linked_ptr<U> const& ptr) const {
|
||||||
|
return value_ != ptr.get();
|
||||||
|
}
|
||||||
|
|
||||||
|
private:
|
||||||
|
template <typename U>
|
||||||
|
friend class linked_ptr;
|
||||||
|
|
||||||
|
T* value_;
|
||||||
|
linked_ptr_internal link_;
|
||||||
|
|
||||||
|
void depart() {
|
||||||
|
if (link_.depart()) delete value_;
|
||||||
|
}
|
||||||
|
|
||||||
|
void capture(T* ptr) {
|
||||||
|
value_ = ptr;
|
||||||
|
link_.join_new();
|
||||||
|
}
|
||||||
|
|
||||||
|
template <typename U> void copy(linked_ptr<U> const* ptr) {
|
||||||
|
value_ = ptr->get();
|
||||||
|
if (value_)
|
||||||
|
link_.join(&ptr->link_);
|
||||||
|
else
|
||||||
|
link_.join_new();
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
template<typename T> inline
|
||||||
|
bool operator==(T* ptr, const linked_ptr<T>& x) {
|
||||||
|
return ptr == x.get();
|
||||||
|
}
|
||||||
|
|
||||||
|
template<typename T> inline
|
||||||
|
bool operator!=(T* ptr, const linked_ptr<T>& x) {
|
||||||
|
return ptr != x.get();
|
||||||
|
}
|
||||||
|
|
||||||
|
// A function to convert T* into linked_ptr<T>
|
||||||
|
// Doing e.g. make_linked_ptr(new FooBarBaz<type>(arg)) is a shorter notation
|
||||||
|
// for linked_ptr<FooBarBaz<type> >(new FooBarBaz<type>(arg))
|
||||||
|
template <typename T>
|
||||||
|
linked_ptr<T> make_linked_ptr(T* ptr) {
|
||||||
|
return linked_ptr<T>(ptr);
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif // PROCESSOR_LINKED_PTR_H__
|
@ -49,7 +49,7 @@ class RangeMap {
|
|||||||
|
|
||||||
// Locates the range encompassing the supplied address. If there is
|
// Locates the range encompassing the supplied address. If there is
|
||||||
// no such range, or if there is a parameter error, returns false.
|
// no such range, or if there is a parameter error, returns false.
|
||||||
bool RetrieveRange(const AddressType& address, EntryType* entry);
|
bool RetrieveRange(const AddressType& address, EntryType* entry) const;
|
||||||
|
|
||||||
// Empties the range map, restoring it to the state it was when it was
|
// Empties the range map, restoring it to the state it was when it was
|
||||||
// initially created.
|
// initially created.
|
||||||
@ -125,7 +125,7 @@ bool RangeMap<AddressType, EntryType>::StoreRange(const AddressType& base,
|
|||||||
template<typename AddressType, typename EntryType>
|
template<typename AddressType, typename EntryType>
|
||||||
bool RangeMap<AddressType, EntryType>::RetrieveRange(
|
bool RangeMap<AddressType, EntryType>::RetrieveRange(
|
||||||
const AddressType& address,
|
const AddressType& address,
|
||||||
EntryType* entry) {
|
EntryType* entry) const {
|
||||||
if (!entry)
|
if (!entry)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
|
@ -19,6 +19,8 @@
|
|||||||
#include <utility>
|
#include <utility>
|
||||||
#include "processor/source_line_resolver.h"
|
#include "processor/source_line_resolver.h"
|
||||||
#include "google/stack_frame.h"
|
#include "google/stack_frame.h"
|
||||||
|
#include "processor/linked_ptr.h"
|
||||||
|
#include "processor/range_map.h"
|
||||||
|
|
||||||
using std::map;
|
using std::map;
|
||||||
using std::vector;
|
using std::vector;
|
||||||
@ -27,62 +29,29 @@ using __gnu_cxx::hash;
|
|||||||
|
|
||||||
namespace google_airbag {
|
namespace google_airbag {
|
||||||
|
|
||||||
// MemAddrMap is a map subclass which has the following properties:
|
|
||||||
// - stores pointers to an "entry" type, which are deleted on destruction
|
|
||||||
// - suitable for address lookup via FindContainingEntry
|
|
||||||
|
|
||||||
template<class T>
|
|
||||||
class SourceLineResolver::MemAddrMap : public map<MemAddr, T*> {
|
|
||||||
public:
|
|
||||||
~MemAddrMap();
|
|
||||||
|
|
||||||
// Find the entry which "contains" a given relative address, that is,
|
|
||||||
// the entry with the highest address not greater than the given address.
|
|
||||||
// Returns NULL if there is no such entry.
|
|
||||||
T* FindContainingEntry(MemAddr address) const;
|
|
||||||
|
|
||||||
private:
|
|
||||||
typedef map<MemAddr, T*> MapType;
|
|
||||||
};
|
|
||||||
|
|
||||||
template<class T>
|
|
||||||
SourceLineResolver::MemAddrMap<T>::~MemAddrMap() {
|
|
||||||
typename MapType::iterator it;
|
|
||||||
for (it = MapType::begin(); it != MapType::end(); ++it) {
|
|
||||||
delete it->second;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
template<class T>
|
|
||||||
T* SourceLineResolver::MemAddrMap<T>::FindContainingEntry(
|
|
||||||
MemAddr address) const {
|
|
||||||
typename MapType::const_iterator it = MapType::lower_bound(address);
|
|
||||||
if (it->first != address) {
|
|
||||||
if (it == MapType::begin()) {
|
|
||||||
// Nowhere to go, so no entry contains the address
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
--it; // back up to the entry before address
|
|
||||||
}
|
|
||||||
return it->second;
|
|
||||||
}
|
|
||||||
|
|
||||||
struct SourceLineResolver::Line {
|
struct SourceLineResolver::Line {
|
||||||
Line(MemAddr addr, int file_id, int source_line)
|
Line(MemAddr addr, MemAddr code_size, int file_id, int source_line)
|
||||||
: address(addr), source_file_id(file_id), line(source_line) { }
|
: address(addr)
|
||||||
|
, size(code_size)
|
||||||
|
, source_file_id(file_id)
|
||||||
|
, line(source_line) { }
|
||||||
|
|
||||||
MemAddr address;
|
MemAddr address;
|
||||||
|
MemAddr size;
|
||||||
int source_file_id;
|
int source_file_id;
|
||||||
int line;
|
int line;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct SourceLineResolver::Function {
|
struct SourceLineResolver::Function {
|
||||||
Function(const string &function_name, MemAddr function_address)
|
Function(const string &function_name,
|
||||||
: name(function_name), address(function_address) { }
|
MemAddr function_address,
|
||||||
|
MemAddr code_size)
|
||||||
|
: name(function_name), address(function_address), size(code_size) { }
|
||||||
|
|
||||||
string name;
|
string name;
|
||||||
MemAddr address;
|
MemAddr address;
|
||||||
MemAddrMap<Line> lines;
|
MemAddr size;
|
||||||
|
RangeMap<MemAddr, linked_ptr<Line> > lines;
|
||||||
};
|
};
|
||||||
|
|
||||||
class SourceLineResolver::Module {
|
class SourceLineResolver::Module {
|
||||||
@ -111,7 +80,7 @@ class SourceLineResolver::Module {
|
|||||||
|
|
||||||
string name_;
|
string name_;
|
||||||
FileMap files_;
|
FileMap files_;
|
||||||
MemAddrMap<Function> functions_;
|
RangeMap<MemAddr, linked_ptr<Function> > functions_;
|
||||||
};
|
};
|
||||||
|
|
||||||
SourceLineResolver::SourceLineResolver() : modules_(new ModuleMap) {
|
SourceLineResolver::SourceLineResolver() : modules_(new ModuleMap) {
|
||||||
@ -166,7 +135,8 @@ bool SourceLineResolver::Module::LoadMap(const string &map_file) {
|
|||||||
if (!cur_func) {
|
if (!cur_func) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
functions_.insert(make_pair(cur_func->address, cur_func));
|
functions_.StoreRange(cur_func->address, cur_func->size,
|
||||||
|
linked_ptr<Function>(cur_func));
|
||||||
} else {
|
} else {
|
||||||
if (!cur_func) {
|
if (!cur_func) {
|
||||||
return false;
|
return false;
|
||||||
@ -175,7 +145,8 @@ bool SourceLineResolver::Module::LoadMap(const string &map_file) {
|
|||||||
if (!line) {
|
if (!line) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
cur_func->lines.insert(make_pair(line->address, line));
|
cur_func->lines.StoreRange(line->address, line->size,
|
||||||
|
linked_ptr<Line>(line));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -185,14 +156,14 @@ bool SourceLineResolver::Module::LoadMap(const string &map_file) {
|
|||||||
|
|
||||||
void SourceLineResolver::Module::LookupAddress(MemAddr address,
|
void SourceLineResolver::Module::LookupAddress(MemAddr address,
|
||||||
StackFrame *frame) const {
|
StackFrame *frame) const {
|
||||||
Function *func = functions_.FindContainingEntry(address);
|
linked_ptr<Function> func;
|
||||||
if (!func) {
|
if (!functions_.RetrieveRange(address, &func)) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
frame->function_name = func->name;
|
frame->function_name = func->name;
|
||||||
Line *line = func->lines.FindContainingEntry(address);
|
linked_ptr<Line> line;
|
||||||
if (!line) {
|
if (!func->lines.RetrieveRange(address, &line)) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -231,12 +202,17 @@ SourceLineResolver::Function* SourceLineResolver::Module::ParseFunction(
|
|||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
char *size = strtok(NULL, " ");
|
||||||
|
if (!size) {
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
char *name = strtok(NULL, "\r\n");
|
char *name = strtok(NULL, "\r\n");
|
||||||
if (!name) {
|
if (!name) {
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
return new Function(name, strtoull(addr, NULL, 16));
|
return new Function(name, strtoull(addr, NULL, 16), strtoull(size, NULL, 16));
|
||||||
}
|
}
|
||||||
|
|
||||||
SourceLineResolver::Line* SourceLineResolver::Module::ParseLine(
|
SourceLineResolver::Line* SourceLineResolver::Module::ParseLine(
|
||||||
@ -247,6 +223,11 @@ SourceLineResolver::Line* SourceLineResolver::Module::ParseLine(
|
|||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
char *size = strtok(NULL, " ");
|
||||||
|
if (!size) {
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
char *line_num_str = strtok(NULL, "\r\n");
|
char *line_num_str = strtok(NULL, "\r\n");
|
||||||
if (!line_num_str) {
|
if (!line_num_str) {
|
||||||
return NULL;
|
return NULL;
|
||||||
@ -257,7 +238,10 @@ SourceLineResolver::Line* SourceLineResolver::Module::ParseLine(
|
|||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
return new Line(strtoull(addr, NULL, 16), source_file, line_number);
|
return new Line(strtoull(addr, NULL, 16),
|
||||||
|
strtoull(size, NULL, 16),
|
||||||
|
source_file,
|
||||||
|
line_number);
|
||||||
}
|
}
|
||||||
|
|
||||||
size_t SourceLineResolver::HashString::operator()(const string &s) const {
|
size_t SourceLineResolver::HashString::operator()(const string &s) const {
|
||||||
|
BIN
src/processor/testdata/minidump2.dmp
vendored
BIN
src/processor/testdata/minidump2.dmp
vendored
Binary file not shown.
13122
src/processor/testdata/minidump2.sym
vendored
13122
src/processor/testdata/minidump2.sym
vendored
File diff suppressed because it is too large
Load Diff
18
src/processor/testdata/module1.out
vendored
18
src/processor/testdata/module1.out
vendored
@ -1,12 +1,12 @@
|
|||||||
FILE 1 file1_1.cc
|
FILE 1 file1_1.cc
|
||||||
FILE 2 file1_2.cc
|
FILE 2 file1_2.cc
|
||||||
FILE 3 file1_3.cc
|
FILE 3 file1_3.cc
|
||||||
FUNC 1000 Function1_1
|
FUNC 1000 c Function1_1
|
||||||
1000 44 1
|
1000 4 44 1
|
||||||
1004 45 1
|
1004 4 45 1
|
||||||
1008 46 1
|
1008 4 46 1
|
||||||
FUNC 1100 Function1_2
|
FUNC 1100 8 Function1_2
|
||||||
1100 65 2
|
1100 4 65 2
|
||||||
1104 66 2
|
1104 4 66 2
|
||||||
FUNC 1200 Function1_3
|
FUNC 1200 100 Function1_3
|
||||||
FUNC 1300 Function1_4
|
FUNC 1300 100 Function1_4
|
||||||
|
18
src/processor/testdata/module2.out
vendored
18
src/processor/testdata/module2.out
vendored
@ -1,12 +1,12 @@
|
|||||||
FILE 1 file2_1.cc
|
FILE 1 file2_1.cc
|
||||||
FILE 2 file2_2.cc
|
FILE 2 file2_2.cc
|
||||||
FILE 3 file2_3.cc
|
FILE 3 file2_3.cc
|
||||||
FUNC 2000 Function2_1
|
FUNC 2000 c Function2_1
|
||||||
1000 54 1
|
1000 4 54 1
|
||||||
1004 55 1
|
1004 4 55 1
|
||||||
1008 56 1
|
1008 4 56 1
|
||||||
FUNC 2170 Function2_2
|
FUNC 2170 14 Function2_2
|
||||||
2170 10 2
|
2170 6 10 2
|
||||||
2176 12 2
|
2176 4 12 2
|
||||||
217a 13 2
|
217a 6 13 2
|
||||||
2180 21 2
|
2180 4 21 2
|
||||||
|
@ -23,7 +23,7 @@ using std::wstring;
|
|||||||
|
|
||||||
int main(int argc, char **argv) {
|
int main(int argc, char **argv) {
|
||||||
if (argc < 2) {
|
if (argc < 2) {
|
||||||
fprintf(stderr, "Usage: %s <pdb file>", argv[0]);
|
fprintf(stderr, "Usage: %s <pdb file>\n", argv[0]);
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -65,6 +65,12 @@ bool PDBSourceLineWriter::PrintLines(IDiaEnumLineNumbers *lines) {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
DWORD length;
|
||||||
|
if (FAILED(line->get_length(&length))) {
|
||||||
|
fprintf(stderr, "failed to get line code length\n");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
DWORD source_id;
|
DWORD source_id;
|
||||||
if (FAILED(line->get_sourceFileId(&source_id))) {
|
if (FAILED(line->get_sourceFileId(&source_id))) {
|
||||||
fprintf(stderr, "failed to get line source file id\n");
|
fprintf(stderr, "failed to get line source file id\n");
|
||||||
@ -77,7 +83,7 @@ bool PDBSourceLineWriter::PrintLines(IDiaEnumLineNumbers *lines) {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
fprintf(output_, "%x %d %d\n", rva, line_num, source_id);
|
fprintf(output_, "%x %x %d %d\n", rva, length, line_num, source_id);
|
||||||
line.Release();
|
line.Release();
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
@ -113,7 +119,7 @@ bool PDBSourceLineWriter::PrintFunction(IDiaSymbol *function) {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
fwprintf(output_, L"FUNC %x %s\n", rva, name);
|
fwprintf(output_, L"FUNC %x %llx %s\n", rva, length, name);
|
||||||
if (!PrintLines(lines)) {
|
if (!PrintLines(lines)) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
@ -1179,354 +1179,354 @@ FILE 1178 f:\rtm\public\sdk\inc\ddbanned.h
|
|||||||
FILE 1179 f:\rtm\vctools\crt_bld\self_x86\crt\prebuild\h\vadefs.h
|
FILE 1179 f:\rtm\vctools\crt_bld\self_x86\crt\prebuild\h\vadefs.h
|
||||||
FILE 1180 f:\rtm\vctools\crt_bld\self_x86\crt\prebuild\h\cruntime.h
|
FILE 1180 f:\rtm\vctools\crt_bld\self_x86\crt\prebuild\h\cruntime.h
|
||||||
FILE 1181 f:\rtm\public\sdk\inc\tvout.h
|
FILE 1181 f:\rtm\public\sdk\inc\tvout.h
|
||||||
FUNC 1000 main
|
FUNC 1000 187 main
|
||||||
1000 24 172
|
1000 39 24 172
|
||||||
1039 25 172
|
1039 11 25 172
|
||||||
104a 26 172
|
104a 1b 26 172
|
||||||
1065 27 172
|
1065 a 27 172
|
||||||
106f 31 172
|
106f 23 31 172
|
||||||
1092 32 172
|
1092 9 32 172
|
||||||
109b 33 172
|
109b 2 33 172
|
||||||
109d 36 172
|
109d 9 36 172
|
||||||
10a6 37 172
|
10a6 47 37 172
|
||||||
10ed 38 172
|
10ed 18 38 172
|
||||||
1105 39 172
|
1105 1b 39 172
|
||||||
1120 42 172
|
1120 19 42 172
|
||||||
1139 43 172
|
1139 7 43 172
|
||||||
1140 44 172
|
1140 2 44 172
|
||||||
1142 47 172
|
1142 9 47 172
|
||||||
114b 48 172
|
114b 16 48 172
|
||||||
1161 49 172
|
1161 26 49 172
|
||||||
FUNC 1190 ATL::CComBSTR::~CComBSTR
|
FUNC 1190 a ATL::CComBSTR::~CComBSTR
|
||||||
1190 1351 28
|
1190 0 1351 28
|
||||||
1190 1352 28
|
1190 9 1352 28
|
||||||
1199 1353 28
|
1199 1 1353 28
|
||||||
FUNC 11a0 ATL::CComPtr<IDiaEnumSymbolsByAddr>::~CComPtr<IDiaEnumSymbolsByAddr>
|
FUNC 11a0 f ATL::CComPtr<IDiaEnumSymbolsByAddr>::~CComPtr<IDiaEnumSymbolsByAddr>
|
||||||
11a0 25 26
|
11a0 0 25 26
|
||||||
11a0 26 26
|
11a0 f 26 26
|
||||||
FUNC 11b0 airbag::PDBSourceLineWriter::Close
|
FUNC 11b0 15 airbag::PDBSourceLineWriter::Close
|
||||||
11b0 212 26
|
11b0 0 212 26
|
||||||
11b0 213 26
|
11b0 14 213 26
|
||||||
11c4 214 26
|
11c4 1 214 26
|
||||||
FUNC 11d0 airbag::PDBSourceLineWriter::PDBSourceLineWriter
|
FUNC 11d0 10 airbag::PDBSourceLineWriter::PDBSourceLineWriter
|
||||||
11d0 22 26
|
11d0 f 22 26
|
||||||
11df 23 26
|
11df 1 23 26
|
||||||
FUNC 11e0 airbag::PDBSourceLineWriter::Open
|
FUNC 11e0 163 airbag::PDBSourceLineWriter::Open
|
||||||
11e0 28 26
|
11e0 24 28 26
|
||||||
1204 29 26
|
1204 14 29 26
|
||||||
1218 31 26
|
1218 c 31 26
|
||||||
1224 32 26
|
1224 18 32 26
|
||||||
123c 33 26
|
123c 2 33 26
|
||||||
123e 53 26
|
123e 13 53 26
|
||||||
1251 36 26
|
1251 8 36 26
|
||||||
1259 37 26
|
1259 25 37 26
|
||||||
127e 39 26
|
127e 15 39 26
|
||||||
1293 40 26
|
1293 1d 40 26
|
||||||
12b0 53 26
|
12b0 13 53 26
|
||||||
12c3 43 26
|
12c3 23 43 26
|
||||||
12e6 44 26
|
12e6 5 44 26
|
||||||
12eb 45 26
|
12eb 2 45 26
|
||||||
12ed 48 26
|
12ed 11 48 26
|
||||||
12fe 49 26
|
12fe 18 49 26
|
||||||
1316 52 26
|
1316 1a 52 26
|
||||||
1330 53 26
|
1330 13 53 26
|
||||||
FUNC 1350 airbag::PDBSourceLineWriter::PrintLines
|
FUNC 1350 19b airbag::PDBSourceLineWriter::PrintLines
|
||||||
1350 55 26
|
1350 29 55 26
|
||||||
1379 58 26
|
1379 6 58 26
|
||||||
137f 61 26
|
137f 3c 61 26
|
||||||
13bb 63 26
|
13bb 19 63 26
|
||||||
13d4 69 26
|
13d4 19 69 26
|
||||||
13ed 75 26
|
13ed 19 75 26
|
||||||
1406 80 26
|
1406 1a 80 26
|
||||||
1420 81 26
|
1420 34 81 26
|
||||||
1454 83 26
|
1454 1a 83 26
|
||||||
146e 84 26
|
146e 16 84 26
|
||||||
1484 64 26
|
1484 11 64 26
|
||||||
1495 65 26
|
1495 1f 65 26
|
||||||
14b4 70 26
|
14b4 11 70 26
|
||||||
14c5 71 26
|
14c5 1f 71 26
|
||||||
14e4 76 26
|
14e4 5 76 26
|
||||||
14e9 77 26
|
14e9 2 77 26
|
||||||
FUNC 14f0 airbag::PDBSourceLineWriter::PrintFunction
|
FUNC 14f0 1d3 airbag::PDBSourceLineWriter::PrintFunction
|
||||||
14f0 86 26
|
14f0 28 86 26
|
||||||
1518 89 26
|
1518 6 89 26
|
||||||
151e 90 26
|
151e 19 90 26
|
||||||
1537 91 26
|
1537 18 91 26
|
||||||
154f 113 26
|
154f 5 113 26
|
||||||
1554 92 26
|
1554 8 92 26
|
||||||
155c 121 26
|
155c 15 121 26
|
||||||
1571 94 26
|
1571 f 94 26
|
||||||
1580 95 26
|
1580 15 95 26
|
||||||
1595 96 26
|
1595 10 96 26
|
||||||
15a5 121 26
|
15a5 15 121 26
|
||||||
15ba 100 26
|
15ba 11 100 26
|
||||||
15cb 101 26
|
15cb 5 101 26
|
||||||
15d0 102 26
|
15d0 5 102 26
|
||||||
15d5 106 26
|
15d5 11 106 26
|
||||||
15e6 107 26
|
15e6 15 107 26
|
||||||
15fb 108 26
|
15fb d 108 26
|
||||||
1608 111 26
|
1608 4 111 26
|
||||||
160c 112 26
|
160c 22 112 26
|
||||||
162e 113 26
|
162e 1d 113 26
|
||||||
164b 116 26
|
164b 19 116 26
|
||||||
1664 117 26
|
1664 11 117 26
|
||||||
1675 118 26
|
1675 20 118 26
|
||||||
1695 120 26
|
1695 19 120 26
|
||||||
16ae 121 26
|
16ae 15 121 26
|
||||||
FUNC 16d0 airbag::PDBSourceLineWriter::PrintSourceFiles
|
FUNC 16d0 326 airbag::PDBSourceLineWriter::PrintSourceFiles
|
||||||
16d0 123 26
|
16d0 29 123 26
|
||||||
16f9 124 26
|
16f9 6 124 26
|
||||||
16ff 125 26
|
16ff 17 125 26
|
||||||
1716 126 26
|
1716 18 126 26
|
||||||
172e 134 26
|
172e 18 134 26
|
||||||
1746 127 26
|
1746 2 127 26
|
||||||
1748 162 26
|
1748 14 162 26
|
||||||
175c 130 26
|
175c 4 130 26
|
||||||
1760 132 26
|
1760 21 132 26
|
||||||
1781 133 26
|
1781 18 133 26
|
||||||
1799 142 26
|
1799 19 142 26
|
||||||
17b2 137 26
|
17b2 4 137 26
|
||||||
17b6 139 26
|
17b6 45 139 26
|
||||||
17fb 140 26
|
17fb 4 140 26
|
||||||
17ff 141 26
|
17ff 23 141 26
|
||||||
1822 144 26
|
1822 4 144 26
|
||||||
1826 145 26
|
1826 35 145 26
|
||||||
185b 147 26
|
185b 19 147 26
|
||||||
1874 151 26
|
1874 4 151 26
|
||||||
1878 152 26
|
1878 1e 152 26
|
||||||
1896 156 26
|
1896 15 156 26
|
||||||
18ab 157 26
|
18ab 17 157 26
|
||||||
18c2 158 26
|
18c2 2c 158 26
|
||||||
18ee 159 26
|
18ee 14 159 26
|
||||||
1902 160 26
|
1902 4a 160 26
|
||||||
194c 161 26
|
194c 43 161 26
|
||||||
198f 162 26
|
198f 14 162 26
|
||||||
19a3 142 26
|
19a3 33 142 26
|
||||||
19d6 148 26
|
19d6 17 148 26
|
||||||
19ed 153 26
|
19ed 9 153 26
|
||||||
FUNC 1a00 airbag::PDBSourceLineWriter::PrintFunctions
|
FUNC 1a00 1b1 airbag::PDBSourceLineWriter::PrintFunctions
|
||||||
1a00 164 26
|
1a00 27 164 26
|
||||||
1a27 165 26
|
1a27 6 165 26
|
||||||
1a2d 166 26
|
1a2d 17 166 26
|
||||||
1a44 167 26
|
1a44 18 167 26
|
||||||
1a5c 174 26
|
1a5c 18 174 26
|
||||||
1a74 168 26
|
1a74 2 168 26
|
||||||
1a76 199 26
|
1a76 12 199 26
|
||||||
1a88 171 26
|
1a88 4 171 26
|
||||||
1a8c 172 26
|
1a8c 1d 172 26
|
||||||
1aa9 173 26
|
1aa9 18 173 26
|
||||||
1ac1 174 26
|
1ac1 16 174 26
|
||||||
1ad7 178 26
|
1ad7 19 178 26
|
||||||
1af0 179 26
|
1af0 5 179 26
|
||||||
1af5 180 26
|
1af5 b 180 26
|
||||||
1b00 186 26
|
1b00 19 186 26
|
||||||
1b19 190 26
|
1b19 7 190 26
|
||||||
1b20 191 26
|
1b20 10 191 26
|
||||||
1b30 195 26
|
1b30 14 195 26
|
||||||
1b44 196 26
|
1b44 23 196 26
|
||||||
1b67 198 26
|
1b67 2e 198 26
|
||||||
1b95 199 26
|
1b95 12 199 26
|
||||||
1ba7 187 26
|
1ba7 5 187 26
|
||||||
1bac 188 26
|
1bac 5 188 26
|
||||||
FUNC 1bc0 airbag::PDBSourceLineWriter::WriteMap
|
FUNC 1bc0 35 airbag::PDBSourceLineWriter::WriteMap
|
||||||
1bc0 201 26
|
1bc0 0 201 26
|
||||||
1bc0 203 26
|
1bc0 d 203 26
|
||||||
1bcd 204 26
|
1bcd 12 204 26
|
||||||
1bdf 208 26
|
1bdf 9 208 26
|
||||||
1be8 210 26
|
1be8 3 210 26
|
||||||
1beb 208 26
|
1beb 4 208 26
|
||||||
1bef 209 26
|
1bef 3 209 26
|
||||||
1bf2 210 26
|
1bf2 3 210 26
|
||||||
FUNC 1c02 __security_check_cookie
|
FUNC 1c02 f __security_check_cookie
|
||||||
1c02 52 1111
|
1c02 0 52 1111
|
||||||
1c02 55 1111
|
1c02 6 55 1111
|
||||||
1c08 56 1111
|
1c08 2 56 1111
|
||||||
1c0a 57 1111
|
1c0a 2 57 1111
|
||||||
1c0c 59 1111
|
1c0c 5 59 1111
|
||||||
FUNC 1c11 pre_cpp_init
|
FUNC 1c11 4b pre_cpp_init
|
||||||
1c11 310 576
|
1c11 0 310 576
|
||||||
1c11 312 576
|
1c11 a 312 576
|
||||||
1c1b 322 576
|
1c1b 5 322 576
|
||||||
1c20 330 576
|
1c20 2a 330 576
|
||||||
1c4a 334 576
|
1c4a 9 334 576
|
||||||
1c53 335 576
|
1c53 8 335 576
|
||||||
1c5b 337 576
|
1c5b 1 337 576
|
||||||
FUNC 1c5c __tmainCRTStartup
|
FUNC 1c5c 176 __tmainCRTStartup
|
||||||
1c5c 410 576
|
1c5c c 410 576
|
||||||
1c68 433 576
|
1c68 5 433 576
|
||||||
1c6d 458 576
|
1c6d 9 458 576
|
||||||
1c76 459 576
|
1c76 8 459 576
|
||||||
1c7e 460 576
|
1c7e d 460 576
|
||||||
1c8b 462 576
|
1c8b 4 462 576
|
||||||
1c8f 464 576
|
1c8f 6 464 576
|
||||||
1c95 465 576
|
1c95 2 465 576
|
||||||
1c97 472 576
|
1c97 b 472 576
|
||||||
1ca2 473 576
|
1ca2 5 473 576
|
||||||
1ca7 475 576
|
1ca7 9 475 576
|
||||||
1cb0 477 576
|
1cb0 a 477 576
|
||||||
1cba 479 576
|
1cba 9 479 576
|
||||||
1cc3 481 576
|
1cc3 6 481 576
|
||||||
1cc9 483 576
|
1cc9 15 483 576
|
||||||
1cde 485 576
|
1cde 11 485 576
|
||||||
1cef 493 576
|
1cef 6 493 576
|
||||||
1cf5 499 576
|
1cf5 9 499 576
|
||||||
1cfe 501 576
|
1cfe 11 501 576
|
||||||
1d0f 502 576
|
1d0f a 502 576
|
||||||
1d19 505 576
|
1d19 5 505 576
|
||||||
1d1e 510 576
|
1d1e 8 510 576
|
||||||
1d26 521 576
|
1d26 17 521 576
|
||||||
1d3d 523 576
|
1d3d a 523 576
|
||||||
1d47 585 576
|
1d47 d 585 576
|
||||||
1d54 586 576
|
1d54 1f 586 576
|
||||||
1d73 596 576
|
1d73 8 596 576
|
||||||
1d7b 597 576
|
1d7b 7 597 576
|
||||||
1d82 603 576
|
1d82 17 603 576
|
||||||
1d99 609 576
|
1d99 8 609 576
|
||||||
1da1 616 576
|
1da1 a 616 576
|
||||||
1dab 617 576
|
1dab 7 617 576
|
||||||
1db2 619 576
|
1db2 8 619 576
|
||||||
1dba 620 576
|
1dba 6 620 576
|
||||||
1dc0 621 576
|
1dc0 7 621 576
|
||||||
1dc7 623 576
|
1dc7 5 623 576
|
||||||
1dcc 624 576
|
1dcc 6 624 576
|
||||||
FUNC 1dd2 pre_c_init
|
FUNC 1dd2 e2 pre_c_init
|
||||||
1dd2 221 576
|
1dd2 0 221 576
|
||||||
1dd2 225 576
|
1dd2 60 225 576
|
||||||
1e32 233 576
|
1e32 d 233 576
|
||||||
1e3f 241 576
|
1e3f 14 241 576
|
||||||
1e53 246 576
|
1e53 e 246 576
|
||||||
1e61 247 576
|
1e61 e 247 576
|
||||||
1e6f 254 576
|
1e6f c 254 576
|
||||||
1e7b 261 576
|
1e7b 5 261 576
|
||||||
1e80 272 576
|
1e80 5 272 576
|
||||||
1e85 279 576
|
1e85 9 279 576
|
||||||
1e8e 280 576
|
1e8e c 280 576
|
||||||
1e9a 283 576
|
1e9a 5 283 576
|
||||||
1e9f 287 576
|
1e9f 9 287 576
|
||||||
1ea8 289 576
|
1ea8 9 289 576
|
||||||
1eb1 292 576
|
1eb1 2 292 576
|
||||||
1eb3 293 576
|
1eb3 1 293 576
|
||||||
FUNC 1eb4 mainCRTStartup
|
FUNC 1eb4 a mainCRTStartup
|
||||||
1eb4 393 576
|
1eb4 0 393 576
|
||||||
1eb4 400 576
|
1eb4 5 400 576
|
||||||
1eb9 402 576
|
1eb9 5 402 576
|
||||||
FUNC 1ebe __report_gsfailure
|
FUNC 1ebe 104 __report_gsfailure
|
||||||
1ebe 140 730
|
1ebe 9 140 730
|
||||||
1ec7 170 730
|
1ec7 5 170 730
|
||||||
1ecc 171 730
|
1ecc 6 171 730
|
||||||
1ed2 172 730
|
1ed2 6 172 730
|
||||||
1ed8 173 730
|
1ed8 6 173 730
|
||||||
1ede 174 730
|
1ede 6 174 730
|
||||||
1ee4 175 730
|
1ee4 6 175 730
|
||||||
1eea 176 730
|
1eea 7 176 730
|
||||||
1ef1 177 730
|
1ef1 7 177 730
|
||||||
1ef8 178 730
|
1ef8 7 178 730
|
||||||
1eff 179 730
|
1eff 7 179 730
|
||||||
1f06 180 730
|
1f06 7 180 730
|
||||||
1f0d 181 730
|
1f0d 7 181 730
|
||||||
1f14 182 730
|
1f14 1 182 730
|
||||||
1f15 183 730
|
1f15 6 183 730
|
||||||
1f1b 190 730
|
1f1b 3 190 730
|
||||||
1f1e 191 730
|
1f1e 5 191 730
|
||||||
1f23 192 730
|
1f23 3 192 730
|
||||||
1f26 193 730
|
1f26 5 193 730
|
||||||
1f2b 194 730
|
1f2b 3 194 730
|
||||||
1f2e 195 730
|
1f2e 5 195 730
|
||||||
1f33 201 730
|
1f33 6 201 730
|
||||||
1f39 204 730
|
1f39 a 204 730
|
||||||
1f43 206 730
|
1f43 a 206 730
|
||||||
1f4d 285 730
|
1f4d a 285 730
|
||||||
1f57 286 730
|
1f57 a 286 730
|
||||||
1f61 293 730
|
1f61 b 293 730
|
||||||
1f6c 294 730
|
1f6c b 294 730
|
||||||
1f77 297 730
|
1f77 b 297 730
|
||||||
1f82 298 730
|
1f82 8 298 730
|
||||||
1f8a 302 730
|
1f8a 8 302 730
|
||||||
1f92 304 730
|
1f92 b 304 730
|
||||||
1f9d 313 730
|
1f9d 9 313 730
|
||||||
1fa6 315 730
|
1fa6 8 315 730
|
||||||
1fae 319 730
|
1fae 12 319 730
|
||||||
1fc0 320 730
|
1fc0 2 320 730
|
||||||
FUNC 1fc8 _onexit
|
FUNC 1fc8 9f _onexit
|
||||||
1fc8 79 481
|
1fc8 c 79 481
|
||||||
1fd4 84 481
|
1fd4 12 84 481
|
||||||
1fe6 86 481
|
1fe6 5 86 481
|
||||||
1feb 90 481
|
1feb c 90 481
|
||||||
1ff7 103 481
|
1ff7 8 103 481
|
||||||
1fff 105 481
|
1fff 4 105 481
|
||||||
2003 107 481
|
2003 b 107 481
|
||||||
200e 108 481
|
200e b 108 481
|
||||||
2019 110 481
|
2019 13 110 481
|
||||||
202c 112 481
|
202c 10 112 481
|
||||||
203c 113 481
|
203c d 113 481
|
||||||
2049 115 481
|
2049 c 115 481
|
||||||
2055 120 481
|
2055 3 120 481
|
||||||
2058 121 481
|
2058 6 121 481
|
||||||
205e 117 481
|
205e 9 117 481
|
||||||
FUNC 2067 atexit
|
FUNC 2067 12 atexit
|
||||||
2067 126 481
|
2067 0 126 481
|
||||||
2067 127 481
|
2067 11 127 481
|
||||||
2078 128 481
|
2078 1 128 481
|
||||||
FUNC 2079 _RTC_Initialize
|
FUNC 2079 24 _RTC_Initialize
|
||||||
FUNC 209d _RTC_Terminate
|
FUNC 209d 24 _RTC_Terminate
|
||||||
FUNC 20d0 _ValidateImageBase
|
FUNC 20d0 29 _ValidateImageBase
|
||||||
20d0 44 893
|
20d0 0 44 893
|
||||||
20d0 50 893
|
20d0 b 50 893
|
||||||
20db 52 893
|
20db 2 52 893
|
||||||
20dd 68 893
|
20dd 1 68 893
|
||||||
20de 55 893
|
20de 5 55 893
|
||||||
20e3 56 893
|
20e3 6 56 893
|
||||||
20e9 58 893
|
20e9 2 58 893
|
||||||
20eb 62 893
|
20eb d 62 893
|
||||||
20f8 68 893
|
20f8 1 68 893
|
||||||
FUNC 2100 _FindPESection
|
FUNC 2100 42 _FindPESection
|
||||||
2100 92 893
|
2100 0 92 893
|
||||||
2100 99 893
|
2100 9 99 893
|
||||||
2109 108 893
|
2109 19 108 893
|
||||||
2122 111 893
|
2122 10 111 893
|
||||||
2132 108 893
|
2132 a 108 893
|
||||||
213c 123 893
|
213c 5 123 893
|
||||||
2141 124 893
|
2141 1 124 893
|
||||||
FUNC 2142 _IsNonwritableInCurrentImage
|
FUNC 2142 6c _IsNonwritableInCurrentImage
|
||||||
2142 152 893
|
2142 c 152 893
|
||||||
214e 159 893
|
214e 4 159 893
|
||||||
2152 167 893
|
2152 e 167 893
|
||||||
2160 169 893
|
2160 2 169 893
|
||||||
2162 177 893
|
2162 5 177 893
|
||||||
2167 178 893
|
2167 9 178 893
|
||||||
2170 179 893
|
2170 2 179 893
|
||||||
2172 181 893
|
2172 2 181 893
|
||||||
2174 188 893
|
2174 14 188 893
|
||||||
2188 190 893
|
2188 17 190 893
|
||||||
219f 196 893
|
219f 9 196 893
|
||||||
21a8 198 893
|
21a8 6 198 893
|
||||||
FUNC 21bc __SEH_prolog4
|
FUNC 21bc 45 __SEH_prolog4
|
||||||
FUNC 2201 __SEH_epilog4
|
FUNC 2201 14 __SEH_epilog4
|
||||||
FUNC 2215 _except_handler4
|
FUNC 2215 23 _except_handler4
|
||||||
FUNC 2238 _setdefaultprecision
|
FUNC 2238 29 _setdefaultprecision
|
||||||
2238 30 1040
|
2238 1 30 1040
|
||||||
2239 31 1040
|
2239 27 31 1040
|
||||||
2260 32 1040
|
2260 1 32 1040
|
||||||
FUNC 2261 _setargv
|
FUNC 2261 3 _setargv
|
||||||
2261 56 616
|
2261 0 56 616
|
||||||
2261 57 616
|
2261 2 57 616
|
||||||
2263 58 616
|
2263 1 58 616
|
||||||
FUNC 2264 __security_init_cookie
|
FUNC 2264 94 __security_init_cookie
|
||||||
2264 97 770
|
2264 6 97 770
|
||||||
226a 117 770
|
226a 21 117 770
|
||||||
228b 119 770
|
228b 7 119 770
|
||||||
2292 120 770
|
2292 3 120 770
|
||||||
2295 170 770
|
2295 a 170 770
|
||||||
229f 175 770
|
229f 6 175 770
|
||||||
22a5 178 770
|
22a5 8 178 770
|
||||||
22ad 179 770
|
22ad 8 179 770
|
||||||
22b5 180 770
|
22b5 8 180 770
|
||||||
22bd 182 770
|
22bd 10 182 770
|
||||||
22cd 187 770
|
22cd 2 187 770
|
||||||
22cf 204 770
|
22cf 4 204 770
|
||||||
22d3 206 770
|
22d3 7 206 770
|
||||||
22da 209 770
|
22da 4 209 770
|
||||||
22de 211 770
|
22de 7 211 770
|
||||||
22e5 215 770
|
22e5 6 215 770
|
||||||
22eb 216 770
|
22eb b 216 770
|
||||||
22f6 218 770
|
22f6 2 218 770
|
||||||
|
Loading…
Reference in New Issue
Block a user