We previously had logic to compute the base address from program
headers as part of symbolization. The problem is that we need a correct
base address earlier in order to adjust a PC into the image's address
space, as these addresses can appear in unsymbolized output.
There was previously an assumption that only the mapping that
was lowest in the address space did not need to be adjusted. This
assumption is not guaranteed (for example, the kernel may choose to
map an ET_DYN lowest) and in fact turned out to be wrong in binaries
linked with lld because the first mapping is read-only.
The solution is to move the program header reading logic into the
code that reads /proc/self/maps.
There is a change in semantics for clients that install a callback
using the InstallSymbolizeOpenObjectFileCallback function. Any such
clients will need to return a correct base address from the callback
by reading program headers using code similar to that in the function
OpenObjectFileContainingPcAndGetStartAddress.
- Set -Isrc/windows for mingw
- Check existence of sigaction, pread, and pwrite
- Provide alternative implementation of pread and pwrite
- Eliminate symlink code for OS_WINDOWS
- Don't check /proc/self/fd if the OS isn't linux
- Don't use MSVC specific declarations in port.h for mingw
git-svn-id: https://google-glog.googlecode.com/svn/trunk@135 eb4d4688-79bd-11dd-afb4-1d65580434c0
Remove autogen.sh, since you can just use autoreconf instead.
Ran autoreconf and fixed a couple of issues that popped up in
configure.ac and m4/ac_rwlock.m4. This updates the configuration
files to automake/aclocal 1.11.1 (from 1.10.1) and to autoconf 2.65
(from 2.61).
git-svn-id: https://google-glog.googlecode.com/svn/trunk@93 eb4d4688-79bd-11dd-afb4-1d65580434c0
Since we introduced the API to set signal handler and print a
stacktrace, we should avoid glibc's backtrace, which may call malloc.
Basically, we choose the way to produce a stacktrace as same as
perftools.
Also, I removed GetStackFrames, which is not used and not implemented
with glibc.
git-svn-id: https://google-glog.googlecode.com/svn/trunk@16 eb4d4688-79bd-11dd-afb4-1d65580434c0
will dump useful information when the program crashes on certain signals such
as SIGSEGV.
Also, changed the version of autoconf (2.59 => 2.61).
git-svn-id: https://google-glog.googlecode.com/svn/trunk@11 eb4d4688-79bd-11dd-afb4-1d65580434c0