Refactor the logic of resolving source line info into helper class.

http://breakpad.appspot.com/459002/


git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@1068 4c0a9323-5329-0410-9bdc-e9ce6186880e
This commit is contained in:
SiyangXie@gmail.com 2012-10-10 21:41:52 +00:00
parent f72b9c6ff4
commit bab770045b
22 changed files with 813 additions and 926 deletions

View file

@ -132,6 +132,7 @@ src_libbreakpad_a_SOURCES = \
src/google_breakpad/processor/source_line_resolver_interface.h \ src/google_breakpad/processor/source_line_resolver_interface.h \
src/google_breakpad/processor/stack_frame.h \ src/google_breakpad/processor/stack_frame.h \
src/google_breakpad/processor/stack_frame_cpu.h \ src/google_breakpad/processor/stack_frame_cpu.h \
src/google_breakpad/processor/stack_frame_symbolizer.h \
src/google_breakpad/processor/stackwalker.h \ src/google_breakpad/processor/stackwalker.h \
src/google_breakpad/processor/symbol_supplier.h \ src/google_breakpad/processor/symbol_supplier.h \
src/google_breakpad/processor/system_info.h \ src/google_breakpad/processor/system_info.h \
@ -183,6 +184,7 @@ src_libbreakpad_a_SOURCES = \
src/processor/windows_frame_info.h \ src/processor/windows_frame_info.h \
src/processor/source_line_resolver_base_types.h \ src/processor/source_line_resolver_base_types.h \
src/processor/source_line_resolver_base.cc \ src/processor/source_line_resolver_base.cc \
src/processor/stack_frame_symbolizer.cc \
src/processor/stackwalker.cc \ src/processor/stackwalker.cc \
src/processor/stackwalker_amd64.cc \ src/processor/stackwalker_amd64.cc \
src/processor/stackwalker_amd64.h \ src/processor/stackwalker_amd64.h \
@ -613,6 +615,7 @@ src_processor_exploitability_unittest_LDADD = \
src/processor/minidump.o \ src/processor/minidump.o \
src/processor/pathname_stripper.o \ src/processor/pathname_stripper.o \
src/processor/source_line_resolver_base.o \ src/processor/source_line_resolver_base.o \
src/processor/stack_frame_symbolizer.o \
src/processor/stackwalker.o \ src/processor/stackwalker.o \
src/processor/stackwalker_amd64.o \ src/processor/stackwalker_amd64.o \
src/processor/stackwalker_arm.o \ src/processor/stackwalker_arm.o \
@ -700,6 +703,7 @@ src_processor_minidump_processor_unittest_LDADD = \
src/processor/pathname_stripper.o \ src/processor/pathname_stripper.o \
src/processor/process_state.o \ src/processor/process_state.o \
src/processor/source_line_resolver_base.o \ src/processor/source_line_resolver_base.o \
src/processor/stack_frame_symbolizer.o \
src/processor/stackwalker.o \ src/processor/stackwalker.o \
src/processor/stackwalker_amd64.o \ src/processor/stackwalker_amd64.o \
src/processor/stackwalker_arm.o \ src/processor/stackwalker_arm.o \
@ -823,6 +827,7 @@ src_processor_stackwalker_selftest_LDADD = \
src/processor/minidump.o \ src/processor/minidump.o \
src/processor/pathname_stripper.o \ src/processor/pathname_stripper.o \
src/processor/source_line_resolver_base.o \ src/processor/source_line_resolver_base.o \
src/processor/stack_frame_symbolizer.o \
src/processor/stackwalker.o \ src/processor/stackwalker.o \
src/processor/stackwalker_amd64.o \ src/processor/stackwalker_amd64.o \
src/processor/stackwalker_arm.o \ src/processor/stackwalker_arm.o \
@ -942,6 +947,7 @@ src_processor_minidump_stackwalk_LDADD = \
src/processor/process_state.o \ src/processor/process_state.o \
src/processor/simple_symbol_supplier.o \ src/processor/simple_symbol_supplier.o \
src/processor/source_line_resolver_base.o \ src/processor/source_line_resolver_base.o \
src/processor/stack_frame_symbolizer.o \
src/processor/stackwalker.o \ src/processor/stackwalker.o \
src/processor/stackwalker_amd64.o \ src/processor/stackwalker_amd64.o \
src/processor/stackwalker_arm.o \ src/processor/stackwalker_arm.o \

View file

@ -1,9 +1,9 @@
# Makefile.in generated by automake 1.11.6 from Makefile.am. # Makefile.in generated by automake 1.11.1 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,
# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software # 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation,
# Foundation, Inc. # Inc.
# This Makefile.in is free software; the Free Software Foundation # This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it, # gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved. # with or without modifications, as long as this notice is preserved.
@ -48,23 +48,6 @@
VPATH = @srcdir@ VPATH = @srcdir@
am__make_dryrun = \
{ \
am__dry=no; \
case $$MAKEFLAGS in \
*\\[\ \ ]*) \
echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \
| grep '^AM OK$$' >/dev/null || am__dry=yes;; \
*) \
for am__flg in $$MAKEFLAGS; do \
case $$am__flg in \
*=*|--*) ;; \
*n*) am__dry=yes; break;; \
esac; \
done;; \
esac; \
test $$am__dry = yes; \
}
pkgdatadir = $(datadir)/@PACKAGE@ pkgdatadir = $(datadir)/@PACKAGE@
pkgincludedir = $(includedir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@
pkglibdir = $(libdir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@
@ -210,12 +193,6 @@ am__nobase_list = $(am__nobase_strip_setup); \
am__base_list = \ am__base_list = \
sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
am__uninstall_files_from_dir = { \
test -z "$$files" \
|| { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
|| { echo " ( cd '$$dir' && rm -f" $$files ")"; \
$(am__cd) "$$dir" && rm -f $$files; }; \
}
am__installdirs = "$(DESTDIR)$(libdir)" "$(DESTDIR)$(bindir)" \ am__installdirs = "$(DESTDIR)$(libdir)" "$(DESTDIR)$(bindir)" \
"$(DESTDIR)$(docdir)" "$(DESTDIR)$(docdir)"
LIBRARIES = $(lib_LIBRARIES) $(noinst_LIBRARIES) LIBRARIES = $(lib_LIBRARIES) $(noinst_LIBRARIES)
@ -283,6 +260,7 @@ am__src_libbreakpad_a_SOURCES_DIST = \
src/google_breakpad/processor/source_line_resolver_interface.h \ src/google_breakpad/processor/source_line_resolver_interface.h \
src/google_breakpad/processor/stack_frame.h \ src/google_breakpad/processor/stack_frame.h \
src/google_breakpad/processor/stack_frame_cpu.h \ src/google_breakpad/processor/stack_frame_cpu.h \
src/google_breakpad/processor/stack_frame_symbolizer.h \
src/google_breakpad/processor/stackwalker.h \ src/google_breakpad/processor/stackwalker.h \
src/google_breakpad/processor/symbol_supplier.h \ src/google_breakpad/processor/symbol_supplier.h \
src/google_breakpad/processor/system_info.h \ src/google_breakpad/processor/system_info.h \
@ -325,6 +303,7 @@ am__src_libbreakpad_a_SOURCES_DIST = \
src/processor/windows_frame_info.h \ src/processor/windows_frame_info.h \
src/processor/source_line_resolver_base_types.h \ src/processor/source_line_resolver_base_types.h \
src/processor/source_line_resolver_base.cc \ src/processor/source_line_resolver_base.cc \
src/processor/stack_frame_symbolizer.cc \
src/processor/stackwalker.cc \ src/processor/stackwalker.cc \
src/processor/stackwalker_amd64.cc \ src/processor/stackwalker_amd64.cc \
src/processor/stackwalker_amd64.h \ src/processor/stackwalker_amd64.h \
@ -364,6 +343,7 @@ am__src_libbreakpad_a_SOURCES_DIST = \
@DISABLE_PROCESSOR_FALSE@ src/processor/process_state.$(OBJEXT) \ @DISABLE_PROCESSOR_FALSE@ src/processor/process_state.$(OBJEXT) \
@DISABLE_PROCESSOR_FALSE@ src/processor/simple_symbol_supplier.$(OBJEXT) \ @DISABLE_PROCESSOR_FALSE@ src/processor/simple_symbol_supplier.$(OBJEXT) \
@DISABLE_PROCESSOR_FALSE@ src/processor/source_line_resolver_base.$(OBJEXT) \ @DISABLE_PROCESSOR_FALSE@ src/processor/source_line_resolver_base.$(OBJEXT) \
@DISABLE_PROCESSOR_FALSE@ src/processor/stack_frame_symbolizer.$(OBJEXT) \
@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker.$(OBJEXT) \ @DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker.$(OBJEXT) \
@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_amd64.$(OBJEXT) \ @DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_amd64.$(OBJEXT) \
@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_arm.$(OBJEXT) \ @DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_arm.$(OBJEXT) \
@ -730,6 +710,7 @@ src_processor_exploitability_unittest_OBJECTS = \
@DISABLE_PROCESSOR_FALSE@ src/processor/minidump.o \ @DISABLE_PROCESSOR_FALSE@ src/processor/minidump.o \
@DISABLE_PROCESSOR_FALSE@ src/processor/pathname_stripper.o \ @DISABLE_PROCESSOR_FALSE@ src/processor/pathname_stripper.o \
@DISABLE_PROCESSOR_FALSE@ src/processor/source_line_resolver_base.o \ @DISABLE_PROCESSOR_FALSE@ src/processor/source_line_resolver_base.o \
@DISABLE_PROCESSOR_FALSE@ src/processor/stack_frame_symbolizer.o \
@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker.o \ @DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker.o \
@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_amd64.o \ @DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_amd64.o \
@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_arm.o \ @DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_arm.o \
@ -806,6 +787,7 @@ src_processor_minidump_processor_unittest_OBJECTS = \
@DISABLE_PROCESSOR_FALSE@ src/processor/pathname_stripper.o \ @DISABLE_PROCESSOR_FALSE@ src/processor/pathname_stripper.o \
@DISABLE_PROCESSOR_FALSE@ src/processor/process_state.o \ @DISABLE_PROCESSOR_FALSE@ src/processor/process_state.o \
@DISABLE_PROCESSOR_FALSE@ src/processor/source_line_resolver_base.o \ @DISABLE_PROCESSOR_FALSE@ src/processor/source_line_resolver_base.o \
@DISABLE_PROCESSOR_FALSE@ src/processor/stack_frame_symbolizer.o \
@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker.o \ @DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker.o \
@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_amd64.o \ @DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_amd64.o \
@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_arm.o \ @DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_arm.o \
@ -837,6 +819,7 @@ src_processor_minidump_stackwalk_OBJECTS = \
@DISABLE_PROCESSOR_FALSE@ src/processor/process_state.o \ @DISABLE_PROCESSOR_FALSE@ src/processor/process_state.o \
@DISABLE_PROCESSOR_FALSE@ src/processor/simple_symbol_supplier.o \ @DISABLE_PROCESSOR_FALSE@ src/processor/simple_symbol_supplier.o \
@DISABLE_PROCESSOR_FALSE@ src/processor/source_line_resolver_base.o \ @DISABLE_PROCESSOR_FALSE@ src/processor/source_line_resolver_base.o \
@DISABLE_PROCESSOR_FALSE@ src/processor/stack_frame_symbolizer.o \
@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker.o \ @DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker.o \
@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_amd64.o \ @DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_amd64.o \
@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_arm.o \ @DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_arm.o \
@ -946,6 +929,7 @@ src_processor_stackwalker_selftest_OBJECTS = \
@DISABLE_PROCESSOR_FALSE@ src/processor/minidump.o \ @DISABLE_PROCESSOR_FALSE@ src/processor/minidump.o \
@DISABLE_PROCESSOR_FALSE@ src/processor/pathname_stripper.o \ @DISABLE_PROCESSOR_FALSE@ src/processor/pathname_stripper.o \
@DISABLE_PROCESSOR_FALSE@ src/processor/source_line_resolver_base.o \ @DISABLE_PROCESSOR_FALSE@ src/processor/source_line_resolver_base.o \
@DISABLE_PROCESSOR_FALSE@ src/processor/stack_frame_symbolizer.o \
@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker.o \ @DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker.o \
@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_amd64.o \ @DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_amd64.o \
@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_arm.o \ @DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_arm.o \
@ -1222,11 +1206,6 @@ DIST_SOURCES = \
$(am__src_tools_linux_md2core_minidump_2_core_unittest_SOURCES_DIST) \ $(am__src_tools_linux_md2core_minidump_2_core_unittest_SOURCES_DIST) \
$(am__src_tools_linux_symupload_minidump_upload_SOURCES_DIST) \ $(am__src_tools_linux_symupload_minidump_upload_SOURCES_DIST) \
$(am__src_tools_linux_symupload_sym_upload_SOURCES_DIST) $(am__src_tools_linux_symupload_sym_upload_SOURCES_DIST)
am__can_run_installinfo = \
case $$AM_UPDATE_INFO_DIR in \
n|no|NO) false;; \
*) (install-info --version) >/dev/null 2>&1;; \
esac
DATA = $(dist_doc_DATA) DATA = $(dist_doc_DATA)
ETAGS = etags ETAGS = etags
CTAGS = ctags CTAGS = ctags
@ -1236,16 +1215,12 @@ DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
distdir = $(PACKAGE)-$(VERSION) distdir = $(PACKAGE)-$(VERSION)
top_distdir = $(distdir) top_distdir = $(distdir)
am__remove_distdir = \ am__remove_distdir = \
if test -d "$(distdir)"; then \ { test ! -d "$(distdir)" \
find "$(distdir)" -type d ! -perm -200 -exec chmod u+w {} ';' \ || { find "$(distdir)" -type d ! -perm -200 -exec chmod u+w {} ';' \
&& rm -rf "$(distdir)" \ && rm -fr "$(distdir)"; }; }
|| { sleep 5 && rm -rf "$(distdir)"; }; \
else :; fi
DIST_ARCHIVES = $(distdir).tar.gz DIST_ARCHIVES = $(distdir).tar.gz
GZIP_ENV = --best GZIP_ENV = --best
distuninstallcheck_listfiles = find . -type f -print distuninstallcheck_listfiles = find . -type f -print
am__distuninstallcheck_listfiles = $(distuninstallcheck_listfiles) \
| sed 's|^\./|$(prefix)/|' | grep -v '$(infodir)/dir$$'
distcleancheck_listfiles = find . -type f -print distcleancheck_listfiles = find . -type f -print
ACLOCAL = @ACLOCAL@ ACLOCAL = @ACLOCAL@
AMTAR = @AMTAR@ AMTAR = @AMTAR@
@ -1407,6 +1382,7 @@ lib_LIBRARIES = $(am__append_5) $(am__append_7)
@DISABLE_PROCESSOR_FALSE@ src/google_breakpad/processor/source_line_resolver_interface.h \ @DISABLE_PROCESSOR_FALSE@ src/google_breakpad/processor/source_line_resolver_interface.h \
@DISABLE_PROCESSOR_FALSE@ src/google_breakpad/processor/stack_frame.h \ @DISABLE_PROCESSOR_FALSE@ src/google_breakpad/processor/stack_frame.h \
@DISABLE_PROCESSOR_FALSE@ src/google_breakpad/processor/stack_frame_cpu.h \ @DISABLE_PROCESSOR_FALSE@ src/google_breakpad/processor/stack_frame_cpu.h \
@DISABLE_PROCESSOR_FALSE@ src/google_breakpad/processor/stack_frame_symbolizer.h \
@DISABLE_PROCESSOR_FALSE@ src/google_breakpad/processor/stackwalker.h \ @DISABLE_PROCESSOR_FALSE@ src/google_breakpad/processor/stackwalker.h \
@DISABLE_PROCESSOR_FALSE@ src/google_breakpad/processor/symbol_supplier.h \ @DISABLE_PROCESSOR_FALSE@ src/google_breakpad/processor/symbol_supplier.h \
@DISABLE_PROCESSOR_FALSE@ src/google_breakpad/processor/system_info.h \ @DISABLE_PROCESSOR_FALSE@ src/google_breakpad/processor/system_info.h \
@ -1458,6 +1434,7 @@ lib_LIBRARIES = $(am__append_5) $(am__append_7)
@DISABLE_PROCESSOR_FALSE@ src/processor/windows_frame_info.h \ @DISABLE_PROCESSOR_FALSE@ src/processor/windows_frame_info.h \
@DISABLE_PROCESSOR_FALSE@ src/processor/source_line_resolver_base_types.h \ @DISABLE_PROCESSOR_FALSE@ src/processor/source_line_resolver_base_types.h \
@DISABLE_PROCESSOR_FALSE@ src/processor/source_line_resolver_base.cc \ @DISABLE_PROCESSOR_FALSE@ src/processor/source_line_resolver_base.cc \
@DISABLE_PROCESSOR_FALSE@ src/processor/stack_frame_symbolizer.cc \
@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker.cc \ @DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker.cc \
@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_amd64.cc \ @DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_amd64.cc \
@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_amd64.h \ @DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_amd64.h \
@ -1803,6 +1780,7 @@ TESTS = $(check_PROGRAMS) $(check_SCRIPTS)
@DISABLE_PROCESSOR_FALSE@ src/processor/minidump.o \ @DISABLE_PROCESSOR_FALSE@ src/processor/minidump.o \
@DISABLE_PROCESSOR_FALSE@ src/processor/pathname_stripper.o \ @DISABLE_PROCESSOR_FALSE@ src/processor/pathname_stripper.o \
@DISABLE_PROCESSOR_FALSE@ src/processor/source_line_resolver_base.o \ @DISABLE_PROCESSOR_FALSE@ src/processor/source_line_resolver_base.o \
@DISABLE_PROCESSOR_FALSE@ src/processor/stack_frame_symbolizer.o \
@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker.o \ @DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker.o \
@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_amd64.o \ @DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_amd64.o \
@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_arm.o \ @DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_arm.o \
@ -1898,6 +1876,7 @@ TESTS = $(check_PROGRAMS) $(check_SCRIPTS)
@DISABLE_PROCESSOR_FALSE@ src/processor/pathname_stripper.o \ @DISABLE_PROCESSOR_FALSE@ src/processor/pathname_stripper.o \
@DISABLE_PROCESSOR_FALSE@ src/processor/process_state.o \ @DISABLE_PROCESSOR_FALSE@ src/processor/process_state.o \
@DISABLE_PROCESSOR_FALSE@ src/processor/source_line_resolver_base.o \ @DISABLE_PROCESSOR_FALSE@ src/processor/source_line_resolver_base.o \
@DISABLE_PROCESSOR_FALSE@ src/processor/stack_frame_symbolizer.o \
@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker.o \ @DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker.o \
@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_amd64.o \ @DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_amd64.o \
@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_arm.o \ @DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_arm.o \
@ -2035,6 +2014,7 @@ TESTS = $(check_PROGRAMS) $(check_SCRIPTS)
@DISABLE_PROCESSOR_FALSE@ src/processor/minidump.o \ @DISABLE_PROCESSOR_FALSE@ src/processor/minidump.o \
@DISABLE_PROCESSOR_FALSE@ src/processor/pathname_stripper.o \ @DISABLE_PROCESSOR_FALSE@ src/processor/pathname_stripper.o \
@DISABLE_PROCESSOR_FALSE@ src/processor/source_line_resolver_base.o \ @DISABLE_PROCESSOR_FALSE@ src/processor/source_line_resolver_base.o \
@DISABLE_PROCESSOR_FALSE@ src/processor/stack_frame_symbolizer.o \
@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker.o \ @DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker.o \
@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_amd64.o \ @DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_amd64.o \
@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_arm.o \ @DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_arm.o \
@ -2161,6 +2141,7 @@ TESTS = $(check_PROGRAMS) $(check_SCRIPTS)
@DISABLE_PROCESSOR_FALSE@ src/processor/process_state.o \ @DISABLE_PROCESSOR_FALSE@ src/processor/process_state.o \
@DISABLE_PROCESSOR_FALSE@ src/processor/simple_symbol_supplier.o \ @DISABLE_PROCESSOR_FALSE@ src/processor/simple_symbol_supplier.o \
@DISABLE_PROCESSOR_FALSE@ src/processor/source_line_resolver_base.o \ @DISABLE_PROCESSOR_FALSE@ src/processor/source_line_resolver_base.o \
@DISABLE_PROCESSOR_FALSE@ src/processor/stack_frame_symbolizer.o \
@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker.o \ @DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker.o \
@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_amd64.o \ @DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_amd64.o \
@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_arm.o \ @DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_arm.o \
@ -2311,7 +2292,7 @@ all: all-am
.SUFFIXES: .SUFFIXES:
.SUFFIXES: .S .c .cc .o .obj .SUFFIXES: .S .c .cc .o .obj
am--refresh: Makefile am--refresh:
@: @:
$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
@for dep in $?; do \ @for dep in $?; do \
@ -2347,8 +2328,10 @@ $(ACLOCAL_M4): $(am__aclocal_m4_deps)
$(am__aclocal_m4_deps): $(am__aclocal_m4_deps):
src/config.h: src/stamp-h1 src/config.h: src/stamp-h1
@if test ! -f $@; then rm -f src/stamp-h1; else :; fi @if test ! -f $@; then \
@if test ! -f $@; then $(MAKE) $(AM_MAKEFLAGS) src/stamp-h1; else :; fi rm -f src/stamp-h1; \
$(MAKE) $(AM_MAKEFLAGS) src/stamp-h1; \
else :; fi
src/stamp-h1: $(top_srcdir)/src/config.h.in $(top_builddir)/config.status src/stamp-h1: $(top_srcdir)/src/config.h.in $(top_builddir)/config.status
@rm -f src/stamp-h1 @rm -f src/stamp-h1
@ -2362,6 +2345,7 @@ distclean-hdr:
-rm -f src/config.h src/stamp-h1 -rm -f src/config.h src/stamp-h1
install-libLIBRARIES: $(lib_LIBRARIES) install-libLIBRARIES: $(lib_LIBRARIES)
@$(NORMAL_INSTALL) @$(NORMAL_INSTALL)
test -z "$(libdir)" || $(MKDIR_P) "$(DESTDIR)$(libdir)"
@list='$(lib_LIBRARIES)'; test -n "$(libdir)" || list=; \ @list='$(lib_LIBRARIES)'; test -n "$(libdir)" || list=; \
list2=; for p in $$list; do \ list2=; for p in $$list; do \
if test -f $$p; then \ if test -f $$p; then \
@ -2369,8 +2353,6 @@ install-libLIBRARIES: $(lib_LIBRARIES)
else :; fi; \ else :; fi; \
done; \ done; \
test -z "$$list2" || { \ test -z "$$list2" || { \
echo " $(MKDIR_P) '$(DESTDIR)$(libdir)'"; \
$(MKDIR_P) "$(DESTDIR)$(libdir)" || exit 1; \
echo " $(INSTALL_DATA) $$list2 '$(DESTDIR)$(libdir)'"; \ echo " $(INSTALL_DATA) $$list2 '$(DESTDIR)$(libdir)'"; \
$(INSTALL_DATA) $$list2 "$(DESTDIR)$(libdir)" || exit $$?; } $(INSTALL_DATA) $$list2 "$(DESTDIR)$(libdir)" || exit $$?; }
@$(POST_INSTALL) @$(POST_INSTALL)
@ -2387,7 +2369,9 @@ uninstall-libLIBRARIES:
@$(NORMAL_UNINSTALL) @$(NORMAL_UNINSTALL)
@list='$(lib_LIBRARIES)'; test -n "$(libdir)" || list=; \ @list='$(lib_LIBRARIES)'; test -n "$(libdir)" || list=; \
files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
dir='$(DESTDIR)$(libdir)'; $(am__uninstall_files_from_dir) test -n "$$files" || exit 0; \
echo " ( cd '$(DESTDIR)$(libdir)' && rm -f "$$files" )"; \
cd "$(DESTDIR)$(libdir)" && rm -f $$files
clean-libLIBRARIES: clean-libLIBRARIES:
-test -z "$(lib_LIBRARIES)" || rm -f $(lib_LIBRARIES) -test -z "$(lib_LIBRARIES)" || rm -f $(lib_LIBRARIES)
@ -2496,7 +2480,7 @@ src/common/android/breakpad_getcontext.$(OBJEXT): \
src/client/linux/$(am__dirstamp): src/client/linux/$(am__dirstamp):
@$(MKDIR_P) src/client/linux @$(MKDIR_P) src/client/linux
@: > src/client/linux/$(am__dirstamp) @: > src/client/linux/$(am__dirstamp)
src/client/linux/libbreakpad_client.a: $(src_client_linux_libbreakpad_client_a_OBJECTS) $(src_client_linux_libbreakpad_client_a_DEPENDENCIES) $(EXTRA_src_client_linux_libbreakpad_client_a_DEPENDENCIES) src/client/linux/$(am__dirstamp) src/client/linux/libbreakpad_client.a: $(src_client_linux_libbreakpad_client_a_OBJECTS) $(src_client_linux_libbreakpad_client_a_DEPENDENCIES) src/client/linux/$(am__dirstamp)
-rm -f src/client/linux/libbreakpad_client.a -rm -f src/client/linux/libbreakpad_client.a
$(src_client_linux_libbreakpad_client_a_AR) src/client/linux/libbreakpad_client.a $(src_client_linux_libbreakpad_client_a_OBJECTS) $(src_client_linux_libbreakpad_client_a_LIBADD) $(src_client_linux_libbreakpad_client_a_AR) src/client/linux/libbreakpad_client.a $(src_client_linux_libbreakpad_client_a_OBJECTS) $(src_client_linux_libbreakpad_client_a_LIBADD)
$(RANLIB) src/client/linux/libbreakpad_client.a $(RANLIB) src/client/linux/libbreakpad_client.a
@ -2553,6 +2537,9 @@ src/processor/simple_symbol_supplier.$(OBJEXT): \
src/processor/source_line_resolver_base.$(OBJEXT): \ src/processor/source_line_resolver_base.$(OBJEXT): \
src/processor/$(am__dirstamp) \ src/processor/$(am__dirstamp) \
src/processor/$(DEPDIR)/$(am__dirstamp) src/processor/$(DEPDIR)/$(am__dirstamp)
src/processor/stack_frame_symbolizer.$(OBJEXT): \
src/processor/$(am__dirstamp) \
src/processor/$(DEPDIR)/$(am__dirstamp)
src/processor/stackwalker.$(OBJEXT): src/processor/$(am__dirstamp) \ src/processor/stackwalker.$(OBJEXT): src/processor/$(am__dirstamp) \
src/processor/$(DEPDIR)/$(am__dirstamp) src/processor/$(DEPDIR)/$(am__dirstamp)
src/processor/stackwalker_amd64.$(OBJEXT): \ src/processor/stackwalker_amd64.$(OBJEXT): \
@ -2575,7 +2562,7 @@ src/processor/tokenize.$(OBJEXT): src/processor/$(am__dirstamp) \
src/$(am__dirstamp): src/$(am__dirstamp):
@$(MKDIR_P) src @$(MKDIR_P) src
@: > src/$(am__dirstamp) @: > src/$(am__dirstamp)
src/libbreakpad.a: $(src_libbreakpad_a_OBJECTS) $(src_libbreakpad_a_DEPENDENCIES) $(EXTRA_src_libbreakpad_a_DEPENDENCIES) src/$(am__dirstamp) src/libbreakpad.a: $(src_libbreakpad_a_OBJECTS) $(src_libbreakpad_a_DEPENDENCIES) src/$(am__dirstamp)
-rm -f src/libbreakpad.a -rm -f src/libbreakpad.a
$(src_libbreakpad_a_AR) src/libbreakpad.a $(src_libbreakpad_a_OBJECTS) $(src_libbreakpad_a_LIBADD) $(src_libbreakpad_a_AR) src/libbreakpad.a $(src_libbreakpad_a_OBJECTS) $(src_libbreakpad_a_LIBADD)
$(RANLIB) src/libbreakpad.a $(RANLIB) src/libbreakpad.a
@ -2627,17 +2614,14 @@ src/third_party/libdisasm/x86_misc.$(OBJEXT): \
src/third_party/libdisasm/x86_operand_list.$(OBJEXT): \ src/third_party/libdisasm/x86_operand_list.$(OBJEXT): \
src/third_party/libdisasm/$(am__dirstamp) \ src/third_party/libdisasm/$(am__dirstamp) \
src/third_party/libdisasm/$(DEPDIR)/$(am__dirstamp) src/third_party/libdisasm/$(DEPDIR)/$(am__dirstamp)
src/third_party/libdisasm/libdisasm.a: $(src_third_party_libdisasm_libdisasm_a_OBJECTS) $(src_third_party_libdisasm_libdisasm_a_DEPENDENCIES) $(EXTRA_src_third_party_libdisasm_libdisasm_a_DEPENDENCIES) src/third_party/libdisasm/$(am__dirstamp) src/third_party/libdisasm/libdisasm.a: $(src_third_party_libdisasm_libdisasm_a_OBJECTS) $(src_third_party_libdisasm_libdisasm_a_DEPENDENCIES) src/third_party/libdisasm/$(am__dirstamp)
-rm -f src/third_party/libdisasm/libdisasm.a -rm -f src/third_party/libdisasm/libdisasm.a
$(src_third_party_libdisasm_libdisasm_a_AR) src/third_party/libdisasm/libdisasm.a $(src_third_party_libdisasm_libdisasm_a_OBJECTS) $(src_third_party_libdisasm_libdisasm_a_LIBADD) $(src_third_party_libdisasm_libdisasm_a_AR) src/third_party/libdisasm/libdisasm.a $(src_third_party_libdisasm_libdisasm_a_OBJECTS) $(src_third_party_libdisasm_libdisasm_a_LIBADD)
$(RANLIB) src/third_party/libdisasm/libdisasm.a $(RANLIB) src/third_party/libdisasm/libdisasm.a
install-binPROGRAMS: $(bin_PROGRAMS) install-binPROGRAMS: $(bin_PROGRAMS)
@$(NORMAL_INSTALL) @$(NORMAL_INSTALL)
test -z "$(bindir)" || $(MKDIR_P) "$(DESTDIR)$(bindir)"
@list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \
if test -n "$$list"; then \
echo " $(MKDIR_P) '$(DESTDIR)$(bindir)'"; \
$(MKDIR_P) "$(DESTDIR)$(bindir)" || exit 1; \
fi; \
for p in $$list; do echo "$$p $$p"; done | \ for p in $$list; do echo "$$p $$p"; done | \
sed 's/$(EXEEXT)$$//' | \ sed 's/$(EXEEXT)$$//' | \
while read p p1; do if test -f $$p; \ while read p p1; do if test -f $$p; \
@ -2677,7 +2661,7 @@ clean-checkPROGRAMS:
clean-noinstPROGRAMS: clean-noinstPROGRAMS:
-test -z "$(noinst_PROGRAMS)" || rm -f $(noinst_PROGRAMS) -test -z "$(noinst_PROGRAMS)" || rm -f $(noinst_PROGRAMS)
src/client/linux/linux_client_unittest$(EXEEXT): $(src_client_linux_linux_client_unittest_OBJECTS) $(src_client_linux_linux_client_unittest_DEPENDENCIES) $(EXTRA_src_client_linux_linux_client_unittest_DEPENDENCIES) src/client/linux/$(am__dirstamp) src/client/linux/linux_client_unittest$(EXEEXT): $(src_client_linux_linux_client_unittest_OBJECTS) $(src_client_linux_linux_client_unittest_DEPENDENCIES) src/client/linux/$(am__dirstamp)
@rm -f src/client/linux/linux_client_unittest$(EXEEXT) @rm -f src/client/linux/linux_client_unittest$(EXEEXT)
$(src_client_linux_linux_client_unittest_LINK) $(src_client_linux_linux_client_unittest_OBJECTS) $(src_client_linux_linux_client_unittest_LDADD) $(LIBS) $(src_client_linux_linux_client_unittest_LINK) $(src_client_linux_linux_client_unittest_OBJECTS) $(src_client_linux_linux_client_unittest_LDADD) $(LIBS)
src/client/linux/handler/src_client_linux_linux_client_unittest_shlib-exception_handler_unittest.$(OBJEXT): \ src/client/linux/handler/src_client_linux_linux_client_unittest_shlib-exception_handler_unittest.$(OBJEXT): \
@ -2770,13 +2754,13 @@ src/common/android/src_client_linux_linux_client_unittest_shlib-breakpad_getcont
src/common/android/src_client_linux_linux_client_unittest_shlib-breakpad_getcontext_unittest.$(OBJEXT): \ src/common/android/src_client_linux_linux_client_unittest_shlib-breakpad_getcontext_unittest.$(OBJEXT): \
src/common/android/$(am__dirstamp) \ src/common/android/$(am__dirstamp) \
src/common/android/$(DEPDIR)/$(am__dirstamp) src/common/android/$(DEPDIR)/$(am__dirstamp)
src/client/linux/linux_client_unittest_shlib$(EXEEXT): $(src_client_linux_linux_client_unittest_shlib_OBJECTS) $(src_client_linux_linux_client_unittest_shlib_DEPENDENCIES) $(EXTRA_src_client_linux_linux_client_unittest_shlib_DEPENDENCIES) src/client/linux/$(am__dirstamp) src/client/linux/linux_client_unittest_shlib$(EXEEXT): $(src_client_linux_linux_client_unittest_shlib_OBJECTS) $(src_client_linux_linux_client_unittest_shlib_DEPENDENCIES) src/client/linux/$(am__dirstamp)
@rm -f src/client/linux/linux_client_unittest_shlib$(EXEEXT) @rm -f src/client/linux/linux_client_unittest_shlib$(EXEEXT)
$(src_client_linux_linux_client_unittest_shlib_LINK) $(src_client_linux_linux_client_unittest_shlib_OBJECTS) $(src_client_linux_linux_client_unittest_shlib_LDADD) $(LIBS) $(src_client_linux_linux_client_unittest_shlib_LINK) $(src_client_linux_linux_client_unittest_shlib_OBJECTS) $(src_client_linux_linux_client_unittest_shlib_LDADD) $(LIBS)
src/client/linux/minidump_writer/src_client_linux_linux_dumper_unittest_helper-linux_dumper_unittest_helper.$(OBJEXT): \ src/client/linux/minidump_writer/src_client_linux_linux_dumper_unittest_helper-linux_dumper_unittest_helper.$(OBJEXT): \
src/client/linux/minidump_writer/$(am__dirstamp) \ src/client/linux/minidump_writer/$(am__dirstamp) \
src/client/linux/minidump_writer/$(DEPDIR)/$(am__dirstamp) src/client/linux/minidump_writer/$(DEPDIR)/$(am__dirstamp)
src/client/linux/linux_dumper_unittest_helper$(EXEEXT): $(src_client_linux_linux_dumper_unittest_helper_OBJECTS) $(src_client_linux_linux_dumper_unittest_helper_DEPENDENCIES) $(EXTRA_src_client_linux_linux_dumper_unittest_helper_DEPENDENCIES) src/client/linux/$(am__dirstamp) src/client/linux/linux_dumper_unittest_helper$(EXEEXT): $(src_client_linux_linux_dumper_unittest_helper_OBJECTS) $(src_client_linux_linux_dumper_unittest_helper_DEPENDENCIES) src/client/linux/$(am__dirstamp)
@rm -f src/client/linux/linux_dumper_unittest_helper$(EXEEXT) @rm -f src/client/linux/linux_dumper_unittest_helper$(EXEEXT)
$(src_client_linux_linux_dumper_unittest_helper_LINK) $(src_client_linux_linux_dumper_unittest_helper_OBJECTS) $(src_client_linux_linux_dumper_unittest_helper_LDADD) $(LIBS) $(src_client_linux_linux_dumper_unittest_helper_LINK) $(src_client_linux_linux_dumper_unittest_helper_OBJECTS) $(src_client_linux_linux_dumper_unittest_helper_LDADD) $(LIBS)
src/common/src_common_dumper_unittest-byte_cursor_unittest.$(OBJEXT): \ src/common/src_common_dumper_unittest-byte_cursor_unittest.$(OBJEXT): \
@ -2920,7 +2904,7 @@ src/testing/gtest/src/src_common_dumper_unittest-gtest_main.$(OBJEXT): \
src/testing/src/src_common_dumper_unittest-gmock-all.$(OBJEXT): \ src/testing/src/src_common_dumper_unittest-gmock-all.$(OBJEXT): \
src/testing/src/$(am__dirstamp) \ src/testing/src/$(am__dirstamp) \
src/testing/src/$(DEPDIR)/$(am__dirstamp) src/testing/src/$(DEPDIR)/$(am__dirstamp)
src/common/dumper_unittest$(EXEEXT): $(src_common_dumper_unittest_OBJECTS) $(src_common_dumper_unittest_DEPENDENCIES) $(EXTRA_src_common_dumper_unittest_DEPENDENCIES) src/common/$(am__dirstamp) src/common/dumper_unittest$(EXEEXT): $(src_common_dumper_unittest_OBJECTS) $(src_common_dumper_unittest_DEPENDENCIES) src/common/$(am__dirstamp)
@rm -f src/common/dumper_unittest$(EXEEXT) @rm -f src/common/dumper_unittest$(EXEEXT)
$(CXXLINK) $(src_common_dumper_unittest_OBJECTS) $(src_common_dumper_unittest_LDADD) $(LIBS) $(CXXLINK) $(src_common_dumper_unittest_OBJECTS) $(src_common_dumper_unittest_LDADD) $(LIBS)
src/common/src_common_test_assembler_unittest-test_assembler.$(OBJEXT): \ src/common/src_common_test_assembler_unittest-test_assembler.$(OBJEXT): \
@ -2938,13 +2922,13 @@ src/testing/gtest/src/src_common_test_assembler_unittest-gtest_main.$(OBJEXT):
src/testing/src/src_common_test_assembler_unittest-gmock-all.$(OBJEXT): \ src/testing/src/src_common_test_assembler_unittest-gmock-all.$(OBJEXT): \
src/testing/src/$(am__dirstamp) \ src/testing/src/$(am__dirstamp) \
src/testing/src/$(DEPDIR)/$(am__dirstamp) src/testing/src/$(DEPDIR)/$(am__dirstamp)
src/common/test_assembler_unittest$(EXEEXT): $(src_common_test_assembler_unittest_OBJECTS) $(src_common_test_assembler_unittest_DEPENDENCIES) $(EXTRA_src_common_test_assembler_unittest_DEPENDENCIES) src/common/$(am__dirstamp) src/common/test_assembler_unittest$(EXEEXT): $(src_common_test_assembler_unittest_OBJECTS) $(src_common_test_assembler_unittest_DEPENDENCIES) src/common/$(am__dirstamp)
@rm -f src/common/test_assembler_unittest$(EXEEXT) @rm -f src/common/test_assembler_unittest$(EXEEXT)
$(CXXLINK) $(src_common_test_assembler_unittest_OBJECTS) $(src_common_test_assembler_unittest_LDADD) $(LIBS) $(CXXLINK) $(src_common_test_assembler_unittest_OBJECTS) $(src_common_test_assembler_unittest_LDADD) $(LIBS)
src/processor/address_map_unittest.$(OBJEXT): \ src/processor/address_map_unittest.$(OBJEXT): \
src/processor/$(am__dirstamp) \ src/processor/$(am__dirstamp) \
src/processor/$(DEPDIR)/$(am__dirstamp) src/processor/$(DEPDIR)/$(am__dirstamp)
src/processor/address_map_unittest$(EXEEXT): $(src_processor_address_map_unittest_OBJECTS) $(src_processor_address_map_unittest_DEPENDENCIES) $(EXTRA_src_processor_address_map_unittest_DEPENDENCIES) src/processor/$(am__dirstamp) src/processor/address_map_unittest$(EXEEXT): $(src_processor_address_map_unittest_OBJECTS) $(src_processor_address_map_unittest_DEPENDENCIES) src/processor/$(am__dirstamp)
@rm -f src/processor/address_map_unittest$(EXEEXT) @rm -f src/processor/address_map_unittest$(EXEEXT)
$(CXXLINK) $(src_processor_address_map_unittest_OBJECTS) $(src_processor_address_map_unittest_LDADD) $(LIBS) $(CXXLINK) $(src_processor_address_map_unittest_OBJECTS) $(src_processor_address_map_unittest_LDADD) $(LIBS)
src/processor/src_processor_basic_source_line_resolver_unittest-basic_source_line_resolver_unittest.$(OBJEXT): \ src/processor/src_processor_basic_source_line_resolver_unittest-basic_source_line_resolver_unittest.$(OBJEXT): \
@ -2956,7 +2940,7 @@ src/testing/gtest/src/src_processor_basic_source_line_resolver_unittest-gtest-al
src/testing/src/src_processor_basic_source_line_resolver_unittest-gmock-all.$(OBJEXT): \ src/testing/src/src_processor_basic_source_line_resolver_unittest-gmock-all.$(OBJEXT): \
src/testing/src/$(am__dirstamp) \ src/testing/src/$(am__dirstamp) \
src/testing/src/$(DEPDIR)/$(am__dirstamp) src/testing/src/$(DEPDIR)/$(am__dirstamp)
src/processor/basic_source_line_resolver_unittest$(EXEEXT): $(src_processor_basic_source_line_resolver_unittest_OBJECTS) $(src_processor_basic_source_line_resolver_unittest_DEPENDENCIES) $(EXTRA_src_processor_basic_source_line_resolver_unittest_DEPENDENCIES) src/processor/$(am__dirstamp) src/processor/basic_source_line_resolver_unittest$(EXEEXT): $(src_processor_basic_source_line_resolver_unittest_OBJECTS) $(src_processor_basic_source_line_resolver_unittest_DEPENDENCIES) src/processor/$(am__dirstamp)
@rm -f src/processor/basic_source_line_resolver_unittest$(EXEEXT) @rm -f src/processor/basic_source_line_resolver_unittest$(EXEEXT)
$(CXXLINK) $(src_processor_basic_source_line_resolver_unittest_OBJECTS) $(src_processor_basic_source_line_resolver_unittest_LDADD) $(LIBS) $(CXXLINK) $(src_processor_basic_source_line_resolver_unittest_OBJECTS) $(src_processor_basic_source_line_resolver_unittest_LDADD) $(LIBS)
src/processor/src_processor_binarystream_unittest-binarystream_unittest.$(OBJEXT): \ src/processor/src_processor_binarystream_unittest-binarystream_unittest.$(OBJEXT): \
@ -2968,7 +2952,7 @@ src/testing/gtest/src/src_processor_binarystream_unittest-gtest-all.$(OBJEXT):
src/testing/src/src_processor_binarystream_unittest-gmock-all.$(OBJEXT): \ src/testing/src/src_processor_binarystream_unittest-gmock-all.$(OBJEXT): \
src/testing/src/$(am__dirstamp) \ src/testing/src/$(am__dirstamp) \
src/testing/src/$(DEPDIR)/$(am__dirstamp) src/testing/src/$(DEPDIR)/$(am__dirstamp)
src/processor/binarystream_unittest$(EXEEXT): $(src_processor_binarystream_unittest_OBJECTS) $(src_processor_binarystream_unittest_DEPENDENCIES) $(EXTRA_src_processor_binarystream_unittest_DEPENDENCIES) src/processor/$(am__dirstamp) src/processor/binarystream_unittest$(EXEEXT): $(src_processor_binarystream_unittest_OBJECTS) $(src_processor_binarystream_unittest_DEPENDENCIES) src/processor/$(am__dirstamp)
@rm -f src/processor/binarystream_unittest$(EXEEXT) @rm -f src/processor/binarystream_unittest$(EXEEXT)
$(CXXLINK) $(src_processor_binarystream_unittest_OBJECTS) $(src_processor_binarystream_unittest_LDADD) $(LIBS) $(CXXLINK) $(src_processor_binarystream_unittest_OBJECTS) $(src_processor_binarystream_unittest_LDADD) $(LIBS)
src/processor/src_processor_cfi_frame_info_unittest-cfi_frame_info_unittest.$(OBJEXT): \ src/processor/src_processor_cfi_frame_info_unittest-cfi_frame_info_unittest.$(OBJEXT): \
@ -2983,13 +2967,13 @@ src/testing/gtest/src/src_processor_cfi_frame_info_unittest-gtest_main.$(OBJEXT)
src/testing/src/src_processor_cfi_frame_info_unittest-gmock-all.$(OBJEXT): \ src/testing/src/src_processor_cfi_frame_info_unittest-gmock-all.$(OBJEXT): \
src/testing/src/$(am__dirstamp) \ src/testing/src/$(am__dirstamp) \
src/testing/src/$(DEPDIR)/$(am__dirstamp) src/testing/src/$(DEPDIR)/$(am__dirstamp)
src/processor/cfi_frame_info_unittest$(EXEEXT): $(src_processor_cfi_frame_info_unittest_OBJECTS) $(src_processor_cfi_frame_info_unittest_DEPENDENCIES) $(EXTRA_src_processor_cfi_frame_info_unittest_DEPENDENCIES) src/processor/$(am__dirstamp) src/processor/cfi_frame_info_unittest$(EXEEXT): $(src_processor_cfi_frame_info_unittest_OBJECTS) $(src_processor_cfi_frame_info_unittest_DEPENDENCIES) src/processor/$(am__dirstamp)
@rm -f src/processor/cfi_frame_info_unittest$(EXEEXT) @rm -f src/processor/cfi_frame_info_unittest$(EXEEXT)
$(CXXLINK) $(src_processor_cfi_frame_info_unittest_OBJECTS) $(src_processor_cfi_frame_info_unittest_LDADD) $(LIBS) $(CXXLINK) $(src_processor_cfi_frame_info_unittest_OBJECTS) $(src_processor_cfi_frame_info_unittest_LDADD) $(LIBS)
src/processor/contained_range_map_unittest.$(OBJEXT): \ src/processor/contained_range_map_unittest.$(OBJEXT): \
src/processor/$(am__dirstamp) \ src/processor/$(am__dirstamp) \
src/processor/$(DEPDIR)/$(am__dirstamp) src/processor/$(DEPDIR)/$(am__dirstamp)
src/processor/contained_range_map_unittest$(EXEEXT): $(src_processor_contained_range_map_unittest_OBJECTS) $(src_processor_contained_range_map_unittest_DEPENDENCIES) $(EXTRA_src_processor_contained_range_map_unittest_DEPENDENCIES) src/processor/$(am__dirstamp) src/processor/contained_range_map_unittest$(EXEEXT): $(src_processor_contained_range_map_unittest_OBJECTS) $(src_processor_contained_range_map_unittest_DEPENDENCIES) src/processor/$(am__dirstamp)
@rm -f src/processor/contained_range_map_unittest$(EXEEXT) @rm -f src/processor/contained_range_map_unittest$(EXEEXT)
$(CXXLINK) $(src_processor_contained_range_map_unittest_OBJECTS) $(src_processor_contained_range_map_unittest_LDADD) $(LIBS) $(CXXLINK) $(src_processor_contained_range_map_unittest_OBJECTS) $(src_processor_contained_range_map_unittest_LDADD) $(LIBS)
src/processor/src_processor_disassembler_x86_unittest-disassembler_x86_unittest.$(OBJEXT): \ src/processor/src_processor_disassembler_x86_unittest-disassembler_x86_unittest.$(OBJEXT): \
@ -3004,7 +2988,7 @@ src/testing/gtest/src/src_processor_disassembler_x86_unittest-gtest_main.$(OBJEX
src/testing/src/src_processor_disassembler_x86_unittest-gmock-all.$(OBJEXT): \ src/testing/src/src_processor_disassembler_x86_unittest-gmock-all.$(OBJEXT): \
src/testing/src/$(am__dirstamp) \ src/testing/src/$(am__dirstamp) \
src/testing/src/$(DEPDIR)/$(am__dirstamp) src/testing/src/$(DEPDIR)/$(am__dirstamp)
src/processor/disassembler_x86_unittest$(EXEEXT): $(src_processor_disassembler_x86_unittest_OBJECTS) $(src_processor_disassembler_x86_unittest_DEPENDENCIES) $(EXTRA_src_processor_disassembler_x86_unittest_DEPENDENCIES) src/processor/$(am__dirstamp) src/processor/disassembler_x86_unittest$(EXEEXT): $(src_processor_disassembler_x86_unittest_OBJECTS) $(src_processor_disassembler_x86_unittest_DEPENDENCIES) src/processor/$(am__dirstamp)
@rm -f src/processor/disassembler_x86_unittest$(EXEEXT) @rm -f src/processor/disassembler_x86_unittest$(EXEEXT)
$(CXXLINK) $(src_processor_disassembler_x86_unittest_OBJECTS) $(src_processor_disassembler_x86_unittest_LDADD) $(LIBS) $(CXXLINK) $(src_processor_disassembler_x86_unittest_OBJECTS) $(src_processor_disassembler_x86_unittest_LDADD) $(LIBS)
src/processor/src_processor_exploitability_unittest-exploitability_unittest.$(OBJEXT): \ src/processor/src_processor_exploitability_unittest-exploitability_unittest.$(OBJEXT): \
@ -3019,7 +3003,7 @@ src/testing/gtest/src/src_processor_exploitability_unittest-gtest_main.$(OBJEXT)
src/testing/src/src_processor_exploitability_unittest-gmock-all.$(OBJEXT): \ src/testing/src/src_processor_exploitability_unittest-gmock-all.$(OBJEXT): \
src/testing/src/$(am__dirstamp) \ src/testing/src/$(am__dirstamp) \
src/testing/src/$(DEPDIR)/$(am__dirstamp) src/testing/src/$(DEPDIR)/$(am__dirstamp)
src/processor/exploitability_unittest$(EXEEXT): $(src_processor_exploitability_unittest_OBJECTS) $(src_processor_exploitability_unittest_DEPENDENCIES) $(EXTRA_src_processor_exploitability_unittest_DEPENDENCIES) src/processor/$(am__dirstamp) src/processor/exploitability_unittest$(EXEEXT): $(src_processor_exploitability_unittest_OBJECTS) $(src_processor_exploitability_unittest_DEPENDENCIES) src/processor/$(am__dirstamp)
@rm -f src/processor/exploitability_unittest$(EXEEXT) @rm -f src/processor/exploitability_unittest$(EXEEXT)
$(CXXLINK) $(src_processor_exploitability_unittest_OBJECTS) $(src_processor_exploitability_unittest_LDADD) $(LIBS) $(CXXLINK) $(src_processor_exploitability_unittest_OBJECTS) $(src_processor_exploitability_unittest_LDADD) $(LIBS)
src/processor/src_processor_fast_source_line_resolver_unittest-fast_source_line_resolver_unittest.$(OBJEXT): \ src/processor/src_processor_fast_source_line_resolver_unittest-fast_source_line_resolver_unittest.$(OBJEXT): \
@ -3031,7 +3015,7 @@ src/testing/gtest/src/src_processor_fast_source_line_resolver_unittest-gtest-all
src/testing/src/src_processor_fast_source_line_resolver_unittest-gmock-all.$(OBJEXT): \ src/testing/src/src_processor_fast_source_line_resolver_unittest-gmock-all.$(OBJEXT): \
src/testing/src/$(am__dirstamp) \ src/testing/src/$(am__dirstamp) \
src/testing/src/$(DEPDIR)/$(am__dirstamp) src/testing/src/$(DEPDIR)/$(am__dirstamp)
src/processor/fast_source_line_resolver_unittest$(EXEEXT): $(src_processor_fast_source_line_resolver_unittest_OBJECTS) $(src_processor_fast_source_line_resolver_unittest_DEPENDENCIES) $(EXTRA_src_processor_fast_source_line_resolver_unittest_DEPENDENCIES) src/processor/$(am__dirstamp) src/processor/fast_source_line_resolver_unittest$(EXEEXT): $(src_processor_fast_source_line_resolver_unittest_OBJECTS) $(src_processor_fast_source_line_resolver_unittest_DEPENDENCIES) src/processor/$(am__dirstamp)
@rm -f src/processor/fast_source_line_resolver_unittest$(EXEEXT) @rm -f src/processor/fast_source_line_resolver_unittest$(EXEEXT)
$(CXXLINK) $(src_processor_fast_source_line_resolver_unittest_OBJECTS) $(src_processor_fast_source_line_resolver_unittest_LDADD) $(LIBS) $(CXXLINK) $(src_processor_fast_source_line_resolver_unittest_OBJECTS) $(src_processor_fast_source_line_resolver_unittest_LDADD) $(LIBS)
src/processor/src_processor_map_serializers_unittest-map_serializers_unittest.$(OBJEXT): \ src/processor/src_processor_map_serializers_unittest-map_serializers_unittest.$(OBJEXT): \
@ -3043,12 +3027,12 @@ src/testing/gtest/src/src_processor_map_serializers_unittest-gtest-all.$(OBJEXT)
src/testing/src/src_processor_map_serializers_unittest-gmock-all.$(OBJEXT): \ src/testing/src/src_processor_map_serializers_unittest-gmock-all.$(OBJEXT): \
src/testing/src/$(am__dirstamp) \ src/testing/src/$(am__dirstamp) \
src/testing/src/$(DEPDIR)/$(am__dirstamp) src/testing/src/$(DEPDIR)/$(am__dirstamp)
src/processor/map_serializers_unittest$(EXEEXT): $(src_processor_map_serializers_unittest_OBJECTS) $(src_processor_map_serializers_unittest_DEPENDENCIES) $(EXTRA_src_processor_map_serializers_unittest_DEPENDENCIES) src/processor/$(am__dirstamp) src/processor/map_serializers_unittest$(EXEEXT): $(src_processor_map_serializers_unittest_OBJECTS) $(src_processor_map_serializers_unittest_DEPENDENCIES) src/processor/$(am__dirstamp)
@rm -f src/processor/map_serializers_unittest$(EXEEXT) @rm -f src/processor/map_serializers_unittest$(EXEEXT)
$(CXXLINK) $(src_processor_map_serializers_unittest_OBJECTS) $(src_processor_map_serializers_unittest_LDADD) $(LIBS) $(CXXLINK) $(src_processor_map_serializers_unittest_OBJECTS) $(src_processor_map_serializers_unittest_LDADD) $(LIBS)
src/processor/minidump_dump.$(OBJEXT): src/processor/$(am__dirstamp) \ src/processor/minidump_dump.$(OBJEXT): src/processor/$(am__dirstamp) \
src/processor/$(DEPDIR)/$(am__dirstamp) src/processor/$(DEPDIR)/$(am__dirstamp)
src/processor/minidump_dump$(EXEEXT): $(src_processor_minidump_dump_OBJECTS) $(src_processor_minidump_dump_DEPENDENCIES) $(EXTRA_src_processor_minidump_dump_DEPENDENCIES) src/processor/$(am__dirstamp) src/processor/minidump_dump$(EXEEXT): $(src_processor_minidump_dump_OBJECTS) $(src_processor_minidump_dump_DEPENDENCIES) src/processor/$(am__dirstamp)
@rm -f src/processor/minidump_dump$(EXEEXT) @rm -f src/processor/minidump_dump$(EXEEXT)
$(CXXLINK) $(src_processor_minidump_dump_OBJECTS) $(src_processor_minidump_dump_LDADD) $(LIBS) $(CXXLINK) $(src_processor_minidump_dump_OBJECTS) $(src_processor_minidump_dump_LDADD) $(LIBS)
src/processor/src_processor_minidump_processor_unittest-minidump_processor_unittest.$(OBJEXT): \ src/processor/src_processor_minidump_processor_unittest-minidump_processor_unittest.$(OBJEXT): \
@ -3060,13 +3044,13 @@ src/testing/gtest/src/src_processor_minidump_processor_unittest-gtest-all.$(OBJE
src/testing/src/src_processor_minidump_processor_unittest-gmock-all.$(OBJEXT): \ src/testing/src/src_processor_minidump_processor_unittest-gmock-all.$(OBJEXT): \
src/testing/src/$(am__dirstamp) \ src/testing/src/$(am__dirstamp) \
src/testing/src/$(DEPDIR)/$(am__dirstamp) src/testing/src/$(DEPDIR)/$(am__dirstamp)
src/processor/minidump_processor_unittest$(EXEEXT): $(src_processor_minidump_processor_unittest_OBJECTS) $(src_processor_minidump_processor_unittest_DEPENDENCIES) $(EXTRA_src_processor_minidump_processor_unittest_DEPENDENCIES) src/processor/$(am__dirstamp) src/processor/minidump_processor_unittest$(EXEEXT): $(src_processor_minidump_processor_unittest_OBJECTS) $(src_processor_minidump_processor_unittest_DEPENDENCIES) src/processor/$(am__dirstamp)
@rm -f src/processor/minidump_processor_unittest$(EXEEXT) @rm -f src/processor/minidump_processor_unittest$(EXEEXT)
$(CXXLINK) $(src_processor_minidump_processor_unittest_OBJECTS) $(src_processor_minidump_processor_unittest_LDADD) $(LIBS) $(CXXLINK) $(src_processor_minidump_processor_unittest_OBJECTS) $(src_processor_minidump_processor_unittest_LDADD) $(LIBS)
src/processor/minidump_stackwalk.$(OBJEXT): \ src/processor/minidump_stackwalk.$(OBJEXT): \
src/processor/$(am__dirstamp) \ src/processor/$(am__dirstamp) \
src/processor/$(DEPDIR)/$(am__dirstamp) src/processor/$(DEPDIR)/$(am__dirstamp)
src/processor/minidump_stackwalk$(EXEEXT): $(src_processor_minidump_stackwalk_OBJECTS) $(src_processor_minidump_stackwalk_DEPENDENCIES) $(EXTRA_src_processor_minidump_stackwalk_DEPENDENCIES) src/processor/$(am__dirstamp) src/processor/minidump_stackwalk$(EXEEXT): $(src_processor_minidump_stackwalk_OBJECTS) $(src_processor_minidump_stackwalk_DEPENDENCIES) src/processor/$(am__dirstamp)
@rm -f src/processor/minidump_stackwalk$(EXEEXT) @rm -f src/processor/minidump_stackwalk$(EXEEXT)
$(CXXLINK) $(src_processor_minidump_stackwalk_OBJECTS) $(src_processor_minidump_stackwalk_LDADD) $(LIBS) $(CXXLINK) $(src_processor_minidump_stackwalk_OBJECTS) $(src_processor_minidump_stackwalk_LDADD) $(LIBS)
src/common/src_processor_minidump_unittest-test_assembler.$(OBJEXT): \ src/common/src_processor_minidump_unittest-test_assembler.$(OBJEXT): \
@ -3087,25 +3071,25 @@ src/testing/gtest/src/src_processor_minidump_unittest-gtest_main.$(OBJEXT): \
src/testing/src/src_processor_minidump_unittest-gmock-all.$(OBJEXT): \ src/testing/src/src_processor_minidump_unittest-gmock-all.$(OBJEXT): \
src/testing/src/$(am__dirstamp) \ src/testing/src/$(am__dirstamp) \
src/testing/src/$(DEPDIR)/$(am__dirstamp) src/testing/src/$(DEPDIR)/$(am__dirstamp)
src/processor/minidump_unittest$(EXEEXT): $(src_processor_minidump_unittest_OBJECTS) $(src_processor_minidump_unittest_DEPENDENCIES) $(EXTRA_src_processor_minidump_unittest_DEPENDENCIES) src/processor/$(am__dirstamp) src/processor/minidump_unittest$(EXEEXT): $(src_processor_minidump_unittest_OBJECTS) $(src_processor_minidump_unittest_DEPENDENCIES) src/processor/$(am__dirstamp)
@rm -f src/processor/minidump_unittest$(EXEEXT) @rm -f src/processor/minidump_unittest$(EXEEXT)
$(CXXLINK) $(src_processor_minidump_unittest_OBJECTS) $(src_processor_minidump_unittest_LDADD) $(LIBS) $(CXXLINK) $(src_processor_minidump_unittest_OBJECTS) $(src_processor_minidump_unittest_LDADD) $(LIBS)
src/processor/pathname_stripper_unittest.$(OBJEXT): \ src/processor/pathname_stripper_unittest.$(OBJEXT): \
src/processor/$(am__dirstamp) \ src/processor/$(am__dirstamp) \
src/processor/$(DEPDIR)/$(am__dirstamp) src/processor/$(DEPDIR)/$(am__dirstamp)
src/processor/pathname_stripper_unittest$(EXEEXT): $(src_processor_pathname_stripper_unittest_OBJECTS) $(src_processor_pathname_stripper_unittest_DEPENDENCIES) $(EXTRA_src_processor_pathname_stripper_unittest_DEPENDENCIES) src/processor/$(am__dirstamp) src/processor/pathname_stripper_unittest$(EXEEXT): $(src_processor_pathname_stripper_unittest_OBJECTS) $(src_processor_pathname_stripper_unittest_DEPENDENCIES) src/processor/$(am__dirstamp)
@rm -f src/processor/pathname_stripper_unittest$(EXEEXT) @rm -f src/processor/pathname_stripper_unittest$(EXEEXT)
$(CXXLINK) $(src_processor_pathname_stripper_unittest_OBJECTS) $(src_processor_pathname_stripper_unittest_LDADD) $(LIBS) $(CXXLINK) $(src_processor_pathname_stripper_unittest_OBJECTS) $(src_processor_pathname_stripper_unittest_LDADD) $(LIBS)
src/processor/postfix_evaluator_unittest.$(OBJEXT): \ src/processor/postfix_evaluator_unittest.$(OBJEXT): \
src/processor/$(am__dirstamp) \ src/processor/$(am__dirstamp) \
src/processor/$(DEPDIR)/$(am__dirstamp) src/processor/$(DEPDIR)/$(am__dirstamp)
src/processor/postfix_evaluator_unittest$(EXEEXT): $(src_processor_postfix_evaluator_unittest_OBJECTS) $(src_processor_postfix_evaluator_unittest_DEPENDENCIES) $(EXTRA_src_processor_postfix_evaluator_unittest_DEPENDENCIES) src/processor/$(am__dirstamp) src/processor/postfix_evaluator_unittest$(EXEEXT): $(src_processor_postfix_evaluator_unittest_OBJECTS) $(src_processor_postfix_evaluator_unittest_DEPENDENCIES) src/processor/$(am__dirstamp)
@rm -f src/processor/postfix_evaluator_unittest$(EXEEXT) @rm -f src/processor/postfix_evaluator_unittest$(EXEEXT)
$(CXXLINK) $(src_processor_postfix_evaluator_unittest_OBJECTS) $(src_processor_postfix_evaluator_unittest_LDADD) $(LIBS) $(CXXLINK) $(src_processor_postfix_evaluator_unittest_OBJECTS) $(src_processor_postfix_evaluator_unittest_LDADD) $(LIBS)
src/processor/range_map_unittest.$(OBJEXT): \ src/processor/range_map_unittest.$(OBJEXT): \
src/processor/$(am__dirstamp) \ src/processor/$(am__dirstamp) \
src/processor/$(DEPDIR)/$(am__dirstamp) src/processor/$(DEPDIR)/$(am__dirstamp)
src/processor/range_map_unittest$(EXEEXT): $(src_processor_range_map_unittest_OBJECTS) $(src_processor_range_map_unittest_DEPENDENCIES) $(EXTRA_src_processor_range_map_unittest_DEPENDENCIES) src/processor/$(am__dirstamp) src/processor/range_map_unittest$(EXEEXT): $(src_processor_range_map_unittest_OBJECTS) $(src_processor_range_map_unittest_DEPENDENCIES) src/processor/$(am__dirstamp)
@rm -f src/processor/range_map_unittest$(EXEEXT) @rm -f src/processor/range_map_unittest$(EXEEXT)
$(CXXLINK) $(src_processor_range_map_unittest_OBJECTS) $(src_processor_range_map_unittest_LDADD) $(LIBS) $(CXXLINK) $(src_processor_range_map_unittest_OBJECTS) $(src_processor_range_map_unittest_LDADD) $(LIBS)
src/common/src_processor_stackwalker_amd64_unittest-test_assembler.$(OBJEXT): \ src/common/src_processor_stackwalker_amd64_unittest-test_assembler.$(OBJEXT): \
@ -3123,7 +3107,7 @@ src/testing/gtest/src/src_processor_stackwalker_amd64_unittest-gtest_main.$(OBJE
src/testing/src/src_processor_stackwalker_amd64_unittest-gmock-all.$(OBJEXT): \ src/testing/src/src_processor_stackwalker_amd64_unittest-gmock-all.$(OBJEXT): \
src/testing/src/$(am__dirstamp) \ src/testing/src/$(am__dirstamp) \
src/testing/src/$(DEPDIR)/$(am__dirstamp) src/testing/src/$(DEPDIR)/$(am__dirstamp)
src/processor/stackwalker_amd64_unittest$(EXEEXT): $(src_processor_stackwalker_amd64_unittest_OBJECTS) $(src_processor_stackwalker_amd64_unittest_DEPENDENCIES) $(EXTRA_src_processor_stackwalker_amd64_unittest_DEPENDENCIES) src/processor/$(am__dirstamp) src/processor/stackwalker_amd64_unittest$(EXEEXT): $(src_processor_stackwalker_amd64_unittest_OBJECTS) $(src_processor_stackwalker_amd64_unittest_DEPENDENCIES) src/processor/$(am__dirstamp)
@rm -f src/processor/stackwalker_amd64_unittest$(EXEEXT) @rm -f src/processor/stackwalker_amd64_unittest$(EXEEXT)
$(CXXLINK) $(src_processor_stackwalker_amd64_unittest_OBJECTS) $(src_processor_stackwalker_amd64_unittest_LDADD) $(LIBS) $(CXXLINK) $(src_processor_stackwalker_amd64_unittest_OBJECTS) $(src_processor_stackwalker_amd64_unittest_LDADD) $(LIBS)
src/common/src_processor_stackwalker_arm_unittest-test_assembler.$(OBJEXT): \ src/common/src_processor_stackwalker_arm_unittest-test_assembler.$(OBJEXT): \
@ -3141,13 +3125,13 @@ src/testing/gtest/src/src_processor_stackwalker_arm_unittest-gtest_main.$(OBJEXT
src/testing/src/src_processor_stackwalker_arm_unittest-gmock-all.$(OBJEXT): \ src/testing/src/src_processor_stackwalker_arm_unittest-gmock-all.$(OBJEXT): \
src/testing/src/$(am__dirstamp) \ src/testing/src/$(am__dirstamp) \
src/testing/src/$(DEPDIR)/$(am__dirstamp) src/testing/src/$(DEPDIR)/$(am__dirstamp)
src/processor/stackwalker_arm_unittest$(EXEEXT): $(src_processor_stackwalker_arm_unittest_OBJECTS) $(src_processor_stackwalker_arm_unittest_DEPENDENCIES) $(EXTRA_src_processor_stackwalker_arm_unittest_DEPENDENCIES) src/processor/$(am__dirstamp) src/processor/stackwalker_arm_unittest$(EXEEXT): $(src_processor_stackwalker_arm_unittest_OBJECTS) $(src_processor_stackwalker_arm_unittest_DEPENDENCIES) src/processor/$(am__dirstamp)
@rm -f src/processor/stackwalker_arm_unittest$(EXEEXT) @rm -f src/processor/stackwalker_arm_unittest$(EXEEXT)
$(CXXLINK) $(src_processor_stackwalker_arm_unittest_OBJECTS) $(src_processor_stackwalker_arm_unittest_LDADD) $(LIBS) $(CXXLINK) $(src_processor_stackwalker_arm_unittest_OBJECTS) $(src_processor_stackwalker_arm_unittest_LDADD) $(LIBS)
src/processor/stackwalker_selftest.$(OBJEXT): \ src/processor/stackwalker_selftest.$(OBJEXT): \
src/processor/$(am__dirstamp) \ src/processor/$(am__dirstamp) \
src/processor/$(DEPDIR)/$(am__dirstamp) src/processor/$(DEPDIR)/$(am__dirstamp)
src/processor/stackwalker_selftest$(EXEEXT): $(src_processor_stackwalker_selftest_OBJECTS) $(src_processor_stackwalker_selftest_DEPENDENCIES) $(EXTRA_src_processor_stackwalker_selftest_DEPENDENCIES) src/processor/$(am__dirstamp) src/processor/stackwalker_selftest$(EXEEXT): $(src_processor_stackwalker_selftest_OBJECTS) $(src_processor_stackwalker_selftest_DEPENDENCIES) src/processor/$(am__dirstamp)
@rm -f src/processor/stackwalker_selftest$(EXEEXT) @rm -f src/processor/stackwalker_selftest$(EXEEXT)
$(CXXLINK) $(src_processor_stackwalker_selftest_OBJECTS) $(src_processor_stackwalker_selftest_LDADD) $(LIBS) $(CXXLINK) $(src_processor_stackwalker_selftest_OBJECTS) $(src_processor_stackwalker_selftest_LDADD) $(LIBS)
src/common/src_processor_stackwalker_x86_unittest-test_assembler.$(OBJEXT): \ src/common/src_processor_stackwalker_x86_unittest-test_assembler.$(OBJEXT): \
@ -3165,7 +3149,7 @@ src/testing/gtest/src/src_processor_stackwalker_x86_unittest-gtest_main.$(OBJEXT
src/testing/src/src_processor_stackwalker_x86_unittest-gmock-all.$(OBJEXT): \ src/testing/src/src_processor_stackwalker_x86_unittest-gmock-all.$(OBJEXT): \
src/testing/src/$(am__dirstamp) \ src/testing/src/$(am__dirstamp) \
src/testing/src/$(DEPDIR)/$(am__dirstamp) src/testing/src/$(DEPDIR)/$(am__dirstamp)
src/processor/stackwalker_x86_unittest$(EXEEXT): $(src_processor_stackwalker_x86_unittest_OBJECTS) $(src_processor_stackwalker_x86_unittest_DEPENDENCIES) $(EXTRA_src_processor_stackwalker_x86_unittest_DEPENDENCIES) src/processor/$(am__dirstamp) src/processor/stackwalker_x86_unittest$(EXEEXT): $(src_processor_stackwalker_x86_unittest_OBJECTS) $(src_processor_stackwalker_x86_unittest_DEPENDENCIES) src/processor/$(am__dirstamp)
@rm -f src/processor/stackwalker_x86_unittest$(EXEEXT) @rm -f src/processor/stackwalker_x86_unittest$(EXEEXT)
$(CXXLINK) $(src_processor_stackwalker_x86_unittest_OBJECTS) $(src_processor_stackwalker_x86_unittest_LDADD) $(LIBS) $(CXXLINK) $(src_processor_stackwalker_x86_unittest_OBJECTS) $(src_processor_stackwalker_x86_unittest_LDADD) $(LIBS)
src/processor/src_processor_static_address_map_unittest-static_address_map_unittest.$(OBJEXT): \ src/processor/src_processor_static_address_map_unittest-static_address_map_unittest.$(OBJEXT): \
@ -3177,7 +3161,7 @@ src/testing/gtest/src/src_processor_static_address_map_unittest-gtest-all.$(OBJE
src/testing/src/src_processor_static_address_map_unittest-gmock-all.$(OBJEXT): \ src/testing/src/src_processor_static_address_map_unittest-gmock-all.$(OBJEXT): \
src/testing/src/$(am__dirstamp) \ src/testing/src/$(am__dirstamp) \
src/testing/src/$(DEPDIR)/$(am__dirstamp) src/testing/src/$(DEPDIR)/$(am__dirstamp)
src/processor/static_address_map_unittest$(EXEEXT): $(src_processor_static_address_map_unittest_OBJECTS) $(src_processor_static_address_map_unittest_DEPENDENCIES) $(EXTRA_src_processor_static_address_map_unittest_DEPENDENCIES) src/processor/$(am__dirstamp) src/processor/static_address_map_unittest$(EXEEXT): $(src_processor_static_address_map_unittest_OBJECTS) $(src_processor_static_address_map_unittest_DEPENDENCIES) src/processor/$(am__dirstamp)
@rm -f src/processor/static_address_map_unittest$(EXEEXT) @rm -f src/processor/static_address_map_unittest$(EXEEXT)
$(CXXLINK) $(src_processor_static_address_map_unittest_OBJECTS) $(src_processor_static_address_map_unittest_LDADD) $(LIBS) $(CXXLINK) $(src_processor_static_address_map_unittest_OBJECTS) $(src_processor_static_address_map_unittest_LDADD) $(LIBS)
src/processor/src_processor_static_contained_range_map_unittest-static_contained_range_map_unittest.$(OBJEXT): \ src/processor/src_processor_static_contained_range_map_unittest-static_contained_range_map_unittest.$(OBJEXT): \
@ -3189,7 +3173,7 @@ src/testing/gtest/src/src_processor_static_contained_range_map_unittest-gtest-al
src/testing/src/src_processor_static_contained_range_map_unittest-gmock-all.$(OBJEXT): \ src/testing/src/src_processor_static_contained_range_map_unittest-gmock-all.$(OBJEXT): \
src/testing/src/$(am__dirstamp) \ src/testing/src/$(am__dirstamp) \
src/testing/src/$(DEPDIR)/$(am__dirstamp) src/testing/src/$(DEPDIR)/$(am__dirstamp)
src/processor/static_contained_range_map_unittest$(EXEEXT): $(src_processor_static_contained_range_map_unittest_OBJECTS) $(src_processor_static_contained_range_map_unittest_DEPENDENCIES) $(EXTRA_src_processor_static_contained_range_map_unittest_DEPENDENCIES) src/processor/$(am__dirstamp) src/processor/static_contained_range_map_unittest$(EXEEXT): $(src_processor_static_contained_range_map_unittest_OBJECTS) $(src_processor_static_contained_range_map_unittest_DEPENDENCIES) src/processor/$(am__dirstamp)
@rm -f src/processor/static_contained_range_map_unittest$(EXEEXT) @rm -f src/processor/static_contained_range_map_unittest$(EXEEXT)
$(CXXLINK) $(src_processor_static_contained_range_map_unittest_OBJECTS) $(src_processor_static_contained_range_map_unittest_LDADD) $(LIBS) $(CXXLINK) $(src_processor_static_contained_range_map_unittest_OBJECTS) $(src_processor_static_contained_range_map_unittest_LDADD) $(LIBS)
src/processor/src_processor_static_map_unittest-static_map_unittest.$(OBJEXT): \ src/processor/src_processor_static_map_unittest-static_map_unittest.$(OBJEXT): \
@ -3201,7 +3185,7 @@ src/testing/gtest/src/src_processor_static_map_unittest-gtest-all.$(OBJEXT): \
src/testing/src/src_processor_static_map_unittest-gmock-all.$(OBJEXT): \ src/testing/src/src_processor_static_map_unittest-gmock-all.$(OBJEXT): \
src/testing/src/$(am__dirstamp) \ src/testing/src/$(am__dirstamp) \
src/testing/src/$(DEPDIR)/$(am__dirstamp) src/testing/src/$(DEPDIR)/$(am__dirstamp)
src/processor/static_map_unittest$(EXEEXT): $(src_processor_static_map_unittest_OBJECTS) $(src_processor_static_map_unittest_DEPENDENCIES) $(EXTRA_src_processor_static_map_unittest_DEPENDENCIES) src/processor/$(am__dirstamp) src/processor/static_map_unittest$(EXEEXT): $(src_processor_static_map_unittest_OBJECTS) $(src_processor_static_map_unittest_DEPENDENCIES) src/processor/$(am__dirstamp)
@rm -f src/processor/static_map_unittest$(EXEEXT) @rm -f src/processor/static_map_unittest$(EXEEXT)
$(CXXLINK) $(src_processor_static_map_unittest_OBJECTS) $(src_processor_static_map_unittest_LDADD) $(LIBS) $(CXXLINK) $(src_processor_static_map_unittest_OBJECTS) $(src_processor_static_map_unittest_LDADD) $(LIBS)
src/processor/src_processor_static_range_map_unittest-static_range_map_unittest.$(OBJEXT): \ src/processor/src_processor_static_range_map_unittest-static_range_map_unittest.$(OBJEXT): \
@ -3213,7 +3197,7 @@ src/testing/gtest/src/src_processor_static_range_map_unittest-gtest-all.$(OBJEXT
src/testing/src/src_processor_static_range_map_unittest-gmock-all.$(OBJEXT): \ src/testing/src/src_processor_static_range_map_unittest-gmock-all.$(OBJEXT): \
src/testing/src/$(am__dirstamp) \ src/testing/src/$(am__dirstamp) \
src/testing/src/$(DEPDIR)/$(am__dirstamp) src/testing/src/$(DEPDIR)/$(am__dirstamp)
src/processor/static_range_map_unittest$(EXEEXT): $(src_processor_static_range_map_unittest_OBJECTS) $(src_processor_static_range_map_unittest_DEPENDENCIES) $(EXTRA_src_processor_static_range_map_unittest_DEPENDENCIES) src/processor/$(am__dirstamp) src/processor/static_range_map_unittest$(EXEEXT): $(src_processor_static_range_map_unittest_OBJECTS) $(src_processor_static_range_map_unittest_DEPENDENCIES) src/processor/$(am__dirstamp)
@rm -f src/processor/static_range_map_unittest$(EXEEXT) @rm -f src/processor/static_range_map_unittest$(EXEEXT)
$(CXXLINK) $(src_processor_static_range_map_unittest_OBJECTS) $(src_processor_static_range_map_unittest_LDADD) $(LIBS) $(CXXLINK) $(src_processor_static_range_map_unittest_OBJECTS) $(src_processor_static_range_map_unittest_LDADD) $(LIBS)
src/common/src_processor_synth_minidump_unittest-test_assembler.$(OBJEXT): \ src/common/src_processor_synth_minidump_unittest-test_assembler.$(OBJEXT): \
@ -3234,7 +3218,7 @@ src/testing/src/src_processor_synth_minidump_unittest-gmock-all.$(OBJEXT): \
src/processor/src_processor_synth_minidump_unittest-synth_minidump.$(OBJEXT): \ src/processor/src_processor_synth_minidump_unittest-synth_minidump.$(OBJEXT): \
src/processor/$(am__dirstamp) \ src/processor/$(am__dirstamp) \
src/processor/$(DEPDIR)/$(am__dirstamp) src/processor/$(DEPDIR)/$(am__dirstamp)
src/processor/synth_minidump_unittest$(EXEEXT): $(src_processor_synth_minidump_unittest_OBJECTS) $(src_processor_synth_minidump_unittest_DEPENDENCIES) $(EXTRA_src_processor_synth_minidump_unittest_DEPENDENCIES) src/processor/$(am__dirstamp) src/processor/synth_minidump_unittest$(EXEEXT): $(src_processor_synth_minidump_unittest_OBJECTS) $(src_processor_synth_minidump_unittest_DEPENDENCIES) src/processor/$(am__dirstamp)
@rm -f src/processor/synth_minidump_unittest$(EXEEXT) @rm -f src/processor/synth_minidump_unittest$(EXEEXT)
$(CXXLINK) $(src_processor_synth_minidump_unittest_OBJECTS) $(src_processor_synth_minidump_unittest_LDADD) $(LIBS) $(CXXLINK) $(src_processor_synth_minidump_unittest_OBJECTS) $(src_processor_synth_minidump_unittest_LDADD) $(LIBS)
src/tools/linux/core2md/$(am__dirstamp): src/tools/linux/core2md/$(am__dirstamp):
@ -3252,7 +3236,7 @@ src/client/linux/minidump_writer/linux_core_dumper.$(OBJEXT): \
src/common/linux/elf_core_dump.$(OBJEXT): \ src/common/linux/elf_core_dump.$(OBJEXT): \
src/common/linux/$(am__dirstamp) \ src/common/linux/$(am__dirstamp) \
src/common/linux/$(DEPDIR)/$(am__dirstamp) src/common/linux/$(DEPDIR)/$(am__dirstamp)
src/tools/linux/core2md/core2md$(EXEEXT): $(src_tools_linux_core2md_core2md_OBJECTS) $(src_tools_linux_core2md_core2md_DEPENDENCIES) $(EXTRA_src_tools_linux_core2md_core2md_DEPENDENCIES) src/tools/linux/core2md/$(am__dirstamp) src/tools/linux/core2md/core2md$(EXEEXT): $(src_tools_linux_core2md_core2md_OBJECTS) $(src_tools_linux_core2md_core2md_DEPENDENCIES) src/tools/linux/core2md/$(am__dirstamp)
@rm -f src/tools/linux/core2md/core2md$(EXEEXT) @rm -f src/tools/linux/core2md/core2md$(EXEEXT)
$(CXXLINK) $(src_tools_linux_core2md_core2md_OBJECTS) $(src_tools_linux_core2md_core2md_LDADD) $(LIBS) $(CXXLINK) $(src_tools_linux_core2md_core2md_OBJECTS) $(src_tools_linux_core2md_core2md_LDADD) $(LIBS)
src/common/dwarf_cfi_to_module.$(OBJEXT): src/common/$(am__dirstamp) \ src/common/dwarf_cfi_to_module.$(OBJEXT): src/common/$(am__dirstamp) \
@ -3293,7 +3277,7 @@ src/tools/linux/dump_syms/$(DEPDIR)/$(am__dirstamp):
src/tools/linux/dump_syms/dump_syms.$(OBJEXT): \ src/tools/linux/dump_syms/dump_syms.$(OBJEXT): \
src/tools/linux/dump_syms/$(am__dirstamp) \ src/tools/linux/dump_syms/$(am__dirstamp) \
src/tools/linux/dump_syms/$(DEPDIR)/$(am__dirstamp) src/tools/linux/dump_syms/$(DEPDIR)/$(am__dirstamp)
src/tools/linux/dump_syms/dump_syms$(EXEEXT): $(src_tools_linux_dump_syms_dump_syms_OBJECTS) $(src_tools_linux_dump_syms_dump_syms_DEPENDENCIES) $(EXTRA_src_tools_linux_dump_syms_dump_syms_DEPENDENCIES) src/tools/linux/dump_syms/$(am__dirstamp) src/tools/linux/dump_syms/dump_syms$(EXEEXT): $(src_tools_linux_dump_syms_dump_syms_OBJECTS) $(src_tools_linux_dump_syms_dump_syms_DEPENDENCIES) src/tools/linux/dump_syms/$(am__dirstamp)
@rm -f src/tools/linux/dump_syms/dump_syms$(EXEEXT) @rm -f src/tools/linux/dump_syms/dump_syms$(EXEEXT)
$(CXXLINK) $(src_tools_linux_dump_syms_dump_syms_OBJECTS) $(src_tools_linux_dump_syms_dump_syms_LDADD) $(LIBS) $(CXXLINK) $(src_tools_linux_dump_syms_dump_syms_OBJECTS) $(src_tools_linux_dump_syms_dump_syms_LDADD) $(LIBS)
src/tools/linux/md2core/$(am__dirstamp): src/tools/linux/md2core/$(am__dirstamp):
@ -3305,7 +3289,7 @@ src/tools/linux/md2core/$(DEPDIR)/$(am__dirstamp):
src/tools/linux/md2core/minidump-2-core.$(OBJEXT): \ src/tools/linux/md2core/minidump-2-core.$(OBJEXT): \
src/tools/linux/md2core/$(am__dirstamp) \ src/tools/linux/md2core/$(am__dirstamp) \
src/tools/linux/md2core/$(DEPDIR)/$(am__dirstamp) src/tools/linux/md2core/$(DEPDIR)/$(am__dirstamp)
src/tools/linux/md2core/minidump-2-core$(EXEEXT): $(src_tools_linux_md2core_minidump_2_core_OBJECTS) $(src_tools_linux_md2core_minidump_2_core_DEPENDENCIES) $(EXTRA_src_tools_linux_md2core_minidump_2_core_DEPENDENCIES) src/tools/linux/md2core/$(am__dirstamp) src/tools/linux/md2core/minidump-2-core$(EXEEXT): $(src_tools_linux_md2core_minidump_2_core_OBJECTS) $(src_tools_linux_md2core_minidump_2_core_DEPENDENCIES) src/tools/linux/md2core/$(am__dirstamp)
@rm -f src/tools/linux/md2core/minidump-2-core$(EXEEXT) @rm -f src/tools/linux/md2core/minidump-2-core$(EXEEXT)
$(CXXLINK) $(src_tools_linux_md2core_minidump_2_core_OBJECTS) $(src_tools_linux_md2core_minidump_2_core_LDADD) $(LIBS) $(CXXLINK) $(src_tools_linux_md2core_minidump_2_core_OBJECTS) $(src_tools_linux_md2core_minidump_2_core_LDADD) $(LIBS)
src/testing/gtest/src/src_tools_linux_md2core_minidump_2_core_unittest-gtest-all.$(OBJEXT): \ src/testing/gtest/src/src_tools_linux_md2core_minidump_2_core_unittest-gtest-all.$(OBJEXT): \
@ -3320,7 +3304,7 @@ src/testing/src/src_tools_linux_md2core_minidump_2_core_unittest-gmock-all.$(OBJ
src/tools/linux/md2core/src_tools_linux_md2core_minidump_2_core_unittest-minidump_memory_range_unittest.$(OBJEXT): \ src/tools/linux/md2core/src_tools_linux_md2core_minidump_2_core_unittest-minidump_memory_range_unittest.$(OBJEXT): \
src/tools/linux/md2core/$(am__dirstamp) \ src/tools/linux/md2core/$(am__dirstamp) \
src/tools/linux/md2core/$(DEPDIR)/$(am__dirstamp) src/tools/linux/md2core/$(DEPDIR)/$(am__dirstamp)
src/tools/linux/md2core/minidump_2_core_unittest$(EXEEXT): $(src_tools_linux_md2core_minidump_2_core_unittest_OBJECTS) $(src_tools_linux_md2core_minidump_2_core_unittest_DEPENDENCIES) $(EXTRA_src_tools_linux_md2core_minidump_2_core_unittest_DEPENDENCIES) src/tools/linux/md2core/$(am__dirstamp) src/tools/linux/md2core/minidump_2_core_unittest$(EXEEXT): $(src_tools_linux_md2core_minidump_2_core_unittest_OBJECTS) $(src_tools_linux_md2core_minidump_2_core_unittest_DEPENDENCIES) src/tools/linux/md2core/$(am__dirstamp)
@rm -f src/tools/linux/md2core/minidump_2_core_unittest$(EXEEXT) @rm -f src/tools/linux/md2core/minidump_2_core_unittest$(EXEEXT)
$(CXXLINK) $(src_tools_linux_md2core_minidump_2_core_unittest_OBJECTS) $(src_tools_linux_md2core_minidump_2_core_unittest_LDADD) $(LIBS) $(CXXLINK) $(src_tools_linux_md2core_minidump_2_core_unittest_OBJECTS) $(src_tools_linux_md2core_minidump_2_core_unittest_LDADD) $(LIBS)
src/common/linux/http_upload.$(OBJEXT): \ src/common/linux/http_upload.$(OBJEXT): \
@ -3335,13 +3319,13 @@ src/tools/linux/symupload/$(DEPDIR)/$(am__dirstamp):
src/tools/linux/symupload/minidump_upload.$(OBJEXT): \ src/tools/linux/symupload/minidump_upload.$(OBJEXT): \
src/tools/linux/symupload/$(am__dirstamp) \ src/tools/linux/symupload/$(am__dirstamp) \
src/tools/linux/symupload/$(DEPDIR)/$(am__dirstamp) src/tools/linux/symupload/$(DEPDIR)/$(am__dirstamp)
src/tools/linux/symupload/minidump_upload$(EXEEXT): $(src_tools_linux_symupload_minidump_upload_OBJECTS) $(src_tools_linux_symupload_minidump_upload_DEPENDENCIES) $(EXTRA_src_tools_linux_symupload_minidump_upload_DEPENDENCIES) src/tools/linux/symupload/$(am__dirstamp) src/tools/linux/symupload/minidump_upload$(EXEEXT): $(src_tools_linux_symupload_minidump_upload_OBJECTS) $(src_tools_linux_symupload_minidump_upload_DEPENDENCIES) src/tools/linux/symupload/$(am__dirstamp)
@rm -f src/tools/linux/symupload/minidump_upload$(EXEEXT) @rm -f src/tools/linux/symupload/minidump_upload$(EXEEXT)
$(CXXLINK) $(src_tools_linux_symupload_minidump_upload_OBJECTS) $(src_tools_linux_symupload_minidump_upload_LDADD) $(LIBS) $(CXXLINK) $(src_tools_linux_symupload_minidump_upload_OBJECTS) $(src_tools_linux_symupload_minidump_upload_LDADD) $(LIBS)
src/tools/linux/symupload/sym_upload.$(OBJEXT): \ src/tools/linux/symupload/sym_upload.$(OBJEXT): \
src/tools/linux/symupload/$(am__dirstamp) \ src/tools/linux/symupload/$(am__dirstamp) \
src/tools/linux/symupload/$(DEPDIR)/$(am__dirstamp) src/tools/linux/symupload/$(DEPDIR)/$(am__dirstamp)
src/tools/linux/symupload/sym_upload$(EXEEXT): $(src_tools_linux_symupload_sym_upload_OBJECTS) $(src_tools_linux_symupload_sym_upload_DEPENDENCIES) $(EXTRA_src_tools_linux_symupload_sym_upload_DEPENDENCIES) src/tools/linux/symupload/$(am__dirstamp) src/tools/linux/symupload/sym_upload$(EXEEXT): $(src_tools_linux_symupload_sym_upload_OBJECTS) $(src_tools_linux_symupload_sym_upload_DEPENDENCIES) src/tools/linux/symupload/$(am__dirstamp)
@rm -f src/tools/linux/symupload/sym_upload$(EXEEXT) @rm -f src/tools/linux/symupload/sym_upload$(EXEEXT)
$(CXXLINK) $(src_tools_linux_symupload_sym_upload_OBJECTS) $(src_tools_linux_symupload_sym_upload_LDADD) $(LIBS) $(CXXLINK) $(src_tools_linux_symupload_sym_upload_OBJECTS) $(src_tools_linux_symupload_sym_upload_LDADD) $(LIBS)
@ -3494,6 +3478,7 @@ mostlyclean-compile:
-rm -f src/processor/src_processor_static_range_map_unittest-static_range_map_unittest.$(OBJEXT) -rm -f src/processor/src_processor_static_range_map_unittest-static_range_map_unittest.$(OBJEXT)
-rm -f src/processor/src_processor_synth_minidump_unittest-synth_minidump.$(OBJEXT) -rm -f src/processor/src_processor_synth_minidump_unittest-synth_minidump.$(OBJEXT)
-rm -f src/processor/src_processor_synth_minidump_unittest-synth_minidump_unittest.$(OBJEXT) -rm -f src/processor/src_processor_synth_minidump_unittest-synth_minidump_unittest.$(OBJEXT)
-rm -f src/processor/stack_frame_symbolizer.$(OBJEXT)
-rm -f src/processor/stackwalker.$(OBJEXT) -rm -f src/processor/stackwalker.$(OBJEXT)
-rm -f src/processor/stackwalker_amd64.$(OBJEXT) -rm -f src/processor/stackwalker_amd64.$(OBJEXT)
-rm -f src/processor/stackwalker_arm.$(OBJEXT) -rm -f src/processor/stackwalker_arm.$(OBJEXT)
@ -3727,6 +3712,7 @@ distclean-compile:
@AMDEP_TRUE@@am__include@ @am__quote@src/processor/$(DEPDIR)/src_processor_static_range_map_unittest-static_range_map_unittest.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/processor/$(DEPDIR)/src_processor_static_range_map_unittest-static_range_map_unittest.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@src/processor/$(DEPDIR)/src_processor_synth_minidump_unittest-synth_minidump.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/processor/$(DEPDIR)/src_processor_synth_minidump_unittest-synth_minidump.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@src/processor/$(DEPDIR)/src_processor_synth_minidump_unittest-synth_minidump_unittest.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/processor/$(DEPDIR)/src_processor_synth_minidump_unittest-synth_minidump_unittest.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@src/processor/$(DEPDIR)/stack_frame_symbolizer.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@src/processor/$(DEPDIR)/stackwalker.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/processor/$(DEPDIR)/stackwalker.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@src/processor/$(DEPDIR)/stackwalker_amd64.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/processor/$(DEPDIR)/stackwalker_amd64.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@src/processor/$(DEPDIR)/stackwalker_arm.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/processor/$(DEPDIR)/stackwalker_arm.Po@am__quote@
@ -5861,11 +5847,8 @@ src/tools/linux/md2core/src_tools_linux_md2core_minidump_2_core_unittest-minidum
@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_tools_linux_md2core_minidump_2_core_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/tools/linux/md2core/src_tools_linux_md2core_minidump_2_core_unittest-minidump_memory_range_unittest.obj `if test -f 'src/tools/linux/md2core/minidump_memory_range_unittest.cc'; then $(CYGPATH_W) 'src/tools/linux/md2core/minidump_memory_range_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/tools/linux/md2core/minidump_memory_range_unittest.cc'; fi` @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_tools_linux_md2core_minidump_2_core_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/tools/linux/md2core/src_tools_linux_md2core_minidump_2_core_unittest-minidump_memory_range_unittest.obj `if test -f 'src/tools/linux/md2core/minidump_memory_range_unittest.cc'; then $(CYGPATH_W) 'src/tools/linux/md2core/minidump_memory_range_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/tools/linux/md2core/minidump_memory_range_unittest.cc'; fi`
install-dist_docDATA: $(dist_doc_DATA) install-dist_docDATA: $(dist_doc_DATA)
@$(NORMAL_INSTALL) @$(NORMAL_INSTALL)
test -z "$(docdir)" || $(MKDIR_P) "$(DESTDIR)$(docdir)"
@list='$(dist_doc_DATA)'; test -n "$(docdir)" || list=; \ @list='$(dist_doc_DATA)'; test -n "$(docdir)" || list=; \
if test -n "$$list"; then \
echo " $(MKDIR_P) '$(DESTDIR)$(docdir)'"; \
$(MKDIR_P) "$(DESTDIR)$(docdir)" || exit 1; \
fi; \
for p in $$list; do \ for p in $$list; do \
if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
echo "$$d$$p"; \ echo "$$d$$p"; \
@ -5879,7 +5862,9 @@ uninstall-dist_docDATA:
@$(NORMAL_UNINSTALL) @$(NORMAL_UNINSTALL)
@list='$(dist_doc_DATA)'; test -n "$(docdir)" || list=; \ @list='$(dist_doc_DATA)'; test -n "$(docdir)" || list=; \
files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
dir='$(DESTDIR)$(docdir)'; $(am__uninstall_files_from_dir) test -n "$$files" || exit 0; \
echo " ( cd '$(DESTDIR)$(docdir)' && rm -f" $$files ")"; \
cd "$(DESTDIR)$(docdir)" && rm -f $$files
ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
@ -6014,15 +5999,14 @@ check-TESTS: $(TESTS)
fi; \ fi; \
dashes=`echo "$$dashes" | sed s/./=/g`; \ dashes=`echo "$$dashes" | sed s/./=/g`; \
if test "$$failed" -eq 0; then \ if test "$$failed" -eq 0; then \
col="$$grn"; \ echo "$$grn$$dashes"; \
else \ else \
col="$$red"; \ echo "$$red$$dashes"; \
fi; \ fi; \
echo "$${col}$$dashes$${std}"; \ echo "$$banner"; \
echo "$${col}$$banner$${std}"; \ test -z "$$skipped" || echo "$$skipped"; \
test -z "$$skipped" || echo "$${col}$$skipped$${std}"; \ test -z "$$report" || echo "$$report"; \
test -z "$$report" || echo "$${col}$$report$${std}"; \ echo "$$dashes$$std"; \
echo "$${col}$$dashes$${std}"; \
test "$$failed" -eq 0; \ test "$$failed" -eq 0; \
else :; fi else :; fi
@ -6070,11 +6054,7 @@ dist-gzip: distdir
$(am__remove_distdir) $(am__remove_distdir)
dist-bzip2: distdir dist-bzip2: distdir
tardir=$(distdir) && $(am__tar) | BZIP2=$${BZIP2--9} bzip2 -c >$(distdir).tar.bz2 tardir=$(distdir) && $(am__tar) | bzip2 -9 -c >$(distdir).tar.bz2
$(am__remove_distdir)
dist-lzip: distdir
tardir=$(distdir) && $(am__tar) | lzip -c $${LZIP_OPT--9} >$(distdir).tar.lz
$(am__remove_distdir) $(am__remove_distdir)
dist-lzma: distdir dist-lzma: distdir
@ -6082,7 +6062,7 @@ dist-lzma: distdir
$(am__remove_distdir) $(am__remove_distdir)
dist-xz: distdir dist-xz: distdir
tardir=$(distdir) && $(am__tar) | XZ_OPT=$${XZ_OPT--e} xz -c >$(distdir).tar.xz tardir=$(distdir) && $(am__tar) | xz -c >$(distdir).tar.xz
$(am__remove_distdir) $(am__remove_distdir)
dist-tarZ: distdir dist-tarZ: distdir
@ -6113,8 +6093,6 @@ distcheck: dist
bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\ bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\
*.tar.lzma*) \ *.tar.lzma*) \
lzma -dc $(distdir).tar.lzma | $(am__untar) ;;\ lzma -dc $(distdir).tar.lzma | $(am__untar) ;;\
*.tar.lz*) \
lzip -dc $(distdir).tar.lz | $(am__untar) ;;\
*.tar.xz*) \ *.tar.xz*) \
xz -dc $(distdir).tar.xz | $(am__untar) ;;\ xz -dc $(distdir).tar.xz | $(am__untar) ;;\
*.tar.Z*) \ *.tar.Z*) \
@ -6124,7 +6102,7 @@ distcheck: dist
*.zip*) \ *.zip*) \
unzip $(distdir).zip ;;\ unzip $(distdir).zip ;;\
esac esac
chmod -R a-w $(distdir); chmod u+w $(distdir) chmod -R a-w $(distdir); chmod a+w $(distdir)
mkdir $(distdir)/_build mkdir $(distdir)/_build
mkdir $(distdir)/_inst mkdir $(distdir)/_inst
chmod a-w $(distdir) chmod a-w $(distdir)
@ -6134,7 +6112,6 @@ distcheck: dist
&& am__cwd=`pwd` \ && am__cwd=`pwd` \
&& $(am__cd) $(distdir)/_build \ && $(am__cd) $(distdir)/_build \
&& ../configure --srcdir=.. --prefix="$$dc_install_base" \ && ../configure --srcdir=.. --prefix="$$dc_install_base" \
$(AM_DISTCHECK_CONFIGURE_FLAGS) \
$(DISTCHECK_CONFIGURE_FLAGS) \ $(DISTCHECK_CONFIGURE_FLAGS) \
&& $(MAKE) $(AM_MAKEFLAGS) \ && $(MAKE) $(AM_MAKEFLAGS) \
&& $(MAKE) $(AM_MAKEFLAGS) dvi \ && $(MAKE) $(AM_MAKEFLAGS) dvi \
@ -6163,16 +6140,8 @@ distcheck: dist
list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \ list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \
sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x' sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x'
distuninstallcheck: distuninstallcheck:
@test -n '$(distuninstallcheck_dir)' || { \ @$(am__cd) '$(distuninstallcheck_dir)' \
echo 'ERROR: trying to run $@ with an empty' \ && test `$(distuninstallcheck_listfiles) | wc -l` -le 1 \
'$$(distuninstallcheck_dir)' >&2; \
exit 1; \
}; \
$(am__cd) '$(distuninstallcheck_dir)' || { \
echo 'ERROR: cannot chdir into $(distuninstallcheck_dir)' >&2; \
exit 1; \
}; \
test `$(am__distuninstallcheck_listfiles) | wc -l` -eq 0 \
|| { echo "ERROR: files left after uninstall:" ; \ || { echo "ERROR: files left after uninstall:" ; \
if test -n "$(DESTDIR)"; then \ if test -n "$(DESTDIR)"; then \
echo " (check DESTDIR support)"; \ echo " (check DESTDIR support)"; \
@ -6207,15 +6176,10 @@ install-am: all-am
installcheck: installcheck-am installcheck: installcheck-am
install-strip: install-strip:
if test -z '$(STRIP)'; then \
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
install; \ `test -z '$(STRIP)' || \
else \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
"INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
fi
mostlyclean-generic: mostlyclean-generic:
clean-generic: clean-generic:
@ -6347,8 +6311,8 @@ uninstall-am: uninstall-binPROGRAMS uninstall-dist_docDATA \
.PHONY: CTAGS GTAGS all all-am am--refresh check check-TESTS check-am \ .PHONY: CTAGS GTAGS all all-am am--refresh check check-TESTS check-am \
clean clean-binPROGRAMS clean-checkPROGRAMS clean-generic \ clean clean-binPROGRAMS clean-checkPROGRAMS clean-generic \
clean-libLIBRARIES clean-noinstLIBRARIES clean-noinstPROGRAMS \ clean-libLIBRARIES clean-noinstLIBRARIES clean-noinstPROGRAMS \
ctags dist dist-all dist-bzip2 dist-gzip dist-lzip dist-lzma \ ctags dist dist-all dist-bzip2 dist-gzip dist-lzma dist-shar \
dist-shar dist-tarZ dist-xz dist-zip distcheck distclean \ dist-tarZ dist-xz dist-zip distcheck distclean \
distclean-compile distclean-generic distclean-hdr \ distclean-compile distclean-generic distclean-hdr \
distclean-tags distcleancheck distdir distuninstallcheck dvi \ distclean-tags distcleancheck distdir distuninstallcheck dvi \
dvi-am html html-am info info-am install install-am \ dvi-am html html-am info info-am install install-am \

76
aclocal.m4 vendored
View file

@ -1,8 +1,7 @@
# generated automatically by aclocal 1.11.6 -*- Autoconf -*- # generated automatically by aclocal 1.11.1 -*- Autoconf -*-
# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
# 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, # 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
# Inc.
# This file is free software; the Free Software Foundation # This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it, # gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved. # with or without modifications, as long as this notice is preserved.
@ -14,21 +13,18 @@
m4_ifndef([AC_AUTOCONF_VERSION], m4_ifndef([AC_AUTOCONF_VERSION],
[m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.69],, m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.65],,
[m4_warning([this file was generated for autoconf 2.69. [m4_warning([this file was generated for autoconf 2.65.
You have another version of autoconf. It may work, but is not guaranteed to. You have another version of autoconf. It may work, but is not guaranteed to.
If you have problems, you may need to regenerate the build system entirely. If you have problems, you may need to regenerate the build system entirely.
To do so, use the procedure documented by the package, typically `autoreconf'.])]) To do so, use the procedure documented by the package, typically `autoreconf'.])])
# Copyright (C) 2002, 2003, 2005, 2006, 2007, 2008, 2011 Free Software # Copyright (C) 2002, 2003, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
# Foundation, Inc.
# #
# This file is free software; the Free Software Foundation # This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it, # gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved. # with or without modifications, as long as this notice is preserved.
# serial 1
# AM_AUTOMAKE_VERSION(VERSION) # AM_AUTOMAKE_VERSION(VERSION)
# ---------------------------- # ----------------------------
# Automake X.Y traces this macro to ensure aclocal.m4 has been # Automake X.Y traces this macro to ensure aclocal.m4 has been
@ -38,7 +34,7 @@ AC_DEFUN([AM_AUTOMAKE_VERSION],
[am__api_version='1.11' [am__api_version='1.11'
dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to
dnl require some minimum version. Point them to the right macro. dnl require some minimum version. Point them to the right macro.
m4_if([$1], [1.11.6], [], m4_if([$1], [1.11.1], [],
[AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl
]) ])
@ -54,7 +50,7 @@ m4_define([_AM_AUTOCONF_VERSION], [])
# Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced. # Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced.
# This function is AC_REQUIREd by AM_INIT_AUTOMAKE. # This function is AC_REQUIREd by AM_INIT_AUTOMAKE.
AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION], AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION],
[AM_AUTOMAKE_VERSION([1.11.6])dnl [AM_AUTOMAKE_VERSION([1.11.1])dnl
m4_ifndef([AC_AUTOCONF_VERSION], m4_ifndef([AC_AUTOCONF_VERSION],
[m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
_AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))]) _AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))])
@ -83,14 +79,12 @@ _AM_IF_OPTION([no-dependencies],, [_AM_DEPENDENCIES([CCAS])])dnl
# AM_AUX_DIR_EXPAND -*- Autoconf -*- # AM_AUX_DIR_EXPAND -*- Autoconf -*-
# Copyright (C) 2001, 2003, 2005, 2011 Free Software Foundation, Inc. # Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc.
# #
# This file is free software; the Free Software Foundation # This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it, # gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved. # with or without modifications, as long as this notice is preserved.
# serial 1
# For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets # For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets
# $ac_aux_dir to `$srcdir/foo'. In other projects, it is set to # $ac_aux_dir to `$srcdir/foo'. In other projects, it is set to
# `$srcdir', `$srcdir/..', or `$srcdir/../..'. # `$srcdir', `$srcdir/..', or `$srcdir/../..'.
@ -172,14 +166,14 @@ AC_CONFIG_COMMANDS_PRE(
Usually this means the macro was only invoked conditionally.]]) Usually this means the macro was only invoked conditionally.]])
fi])]) fi])])
# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2009, # Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2009
# 2010, 2011 Free Software Foundation, Inc. # Free Software Foundation, Inc.
# #
# This file is free software; the Free Software Foundation # This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it, # gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved. # with or without modifications, as long as this notice is preserved.
# serial 12 # serial 10
# There are a few dirty hacks below to avoid letting `AC_PROG_CC' be # There are a few dirty hacks below to avoid letting `AC_PROG_CC' be
# written in clear, in which case automake, when reading aclocal.m4, # written in clear, in which case automake, when reading aclocal.m4,
@ -219,7 +213,6 @@ AC_CACHE_CHECK([dependency style of $depcc],
# instance it was reported that on HP-UX the gcc test will end up # instance it was reported that on HP-UX the gcc test will end up
# making a dummy file named `D' -- because `-MD' means `put the output # making a dummy file named `D' -- because `-MD' means `put the output
# in D'. # in D'.
rm -rf conftest.dir
mkdir conftest.dir mkdir conftest.dir
# Copy depcomp to subdir because otherwise we won't find it if we're # Copy depcomp to subdir because otherwise we won't find it if we're
# using a relative directory. # using a relative directory.
@ -284,7 +277,7 @@ AC_CACHE_CHECK([dependency style of $depcc],
break break
fi fi
;; ;;
msvc7 | msvc7msys | msvisualcpp | msvcmsys) msvisualcpp | msvcmsys)
# This compiler won't grok `-c -o', but also, the minuso test has # This compiler won't grok `-c -o', but also, the minuso test has
# not run yet. These depmodes are late enough in the game, and # not run yet. These depmodes are late enough in the game, and
# so weak that their functioning should not be impacted. # so weak that their functioning should not be impacted.
@ -349,13 +342,10 @@ AC_DEFUN([AM_DEP_TRACK],
if test "x$enable_dependency_tracking" != xno; then if test "x$enable_dependency_tracking" != xno; then
am_depcomp="$ac_aux_dir/depcomp" am_depcomp="$ac_aux_dir/depcomp"
AMDEPBACKSLASH='\' AMDEPBACKSLASH='\'
am__nodep='_no'
fi fi
AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno]) AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno])
AC_SUBST([AMDEPBACKSLASH])dnl AC_SUBST([AMDEPBACKSLASH])dnl
_AM_SUBST_NOTMAKE([AMDEPBACKSLASH])dnl _AM_SUBST_NOTMAKE([AMDEPBACKSLASH])dnl
AC_SUBST([am__nodep])dnl
_AM_SUBST_NOTMAKE([am__nodep])dnl
]) ])
# Generate code to set up dependency tracking. -*- Autoconf -*- # Generate code to set up dependency tracking. -*- Autoconf -*-
@ -589,15 +579,12 @@ for _am_header in $config_headers :; do
done done
echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count]) echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count])
# Copyright (C) 2001, 2003, 2005, 2008, 2011 Free Software Foundation, # Copyright (C) 2001, 2003, 2005, 2008 Free Software Foundation, Inc.
# Inc.
# #
# This file is free software; the Free Software Foundation # This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it, # gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved. # with or without modifications, as long as this notice is preserved.
# serial 1
# AM_PROG_INSTALL_SH # AM_PROG_INSTALL_SH
# ------------------ # ------------------
# Define $install_sh. # Define $install_sh.
@ -764,15 +751,12 @@ else
fi fi
]) ])
# Copyright (C) 2003, 2004, 2005, 2006, 2011 Free Software Foundation, # Copyright (C) 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
# Inc.
# #
# This file is free software; the Free Software Foundation # This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it, # gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved. # with or without modifications, as long as this notice is preserved.
# serial 1
# AM_PROG_MKDIR_P # AM_PROG_MKDIR_P
# --------------- # ---------------
# Check for `mkdir -p'. # Check for `mkdir -p'.
@ -795,14 +779,13 @@ esac
# Helper functions for option handling. -*- Autoconf -*- # Helper functions for option handling. -*- Autoconf -*-
# Copyright (C) 2001, 2002, 2003, 2005, 2008, 2010 Free Software # Copyright (C) 2001, 2002, 2003, 2005, 2008 Free Software Foundation, Inc.
# Foundation, Inc.
# #
# This file is free software; the Free Software Foundation # This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it, # gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved. # with or without modifications, as long as this notice is preserved.
# serial 5 # serial 4
# _AM_MANGLE_OPTION(NAME) # _AM_MANGLE_OPTION(NAME)
# ----------------------- # -----------------------
@ -810,13 +793,13 @@ AC_DEFUN([_AM_MANGLE_OPTION],
[[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])]) [[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])])
# _AM_SET_OPTION(NAME) # _AM_SET_OPTION(NAME)
# -------------------- # ------------------------------
# Set option NAME. Presently that only means defining a flag for this option. # Set option NAME. Presently that only means defining a flag for this option.
AC_DEFUN([_AM_SET_OPTION], AC_DEFUN([_AM_SET_OPTION],
[m4_define(_AM_MANGLE_OPTION([$1]), 1)]) [m4_define(_AM_MANGLE_OPTION([$1]), 1)])
# _AM_SET_OPTIONS(OPTIONS) # _AM_SET_OPTIONS(OPTIONS)
# ------------------------ # ----------------------------------
# OPTIONS is a space-separated list of Automake options. # OPTIONS is a space-separated list of Automake options.
AC_DEFUN([_AM_SET_OPTIONS], AC_DEFUN([_AM_SET_OPTIONS],
[m4_foreach_w([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])]) [m4_foreach_w([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])])
@ -827,14 +810,12 @@ AC_DEFUN([_AM_SET_OPTIONS],
AC_DEFUN([_AM_IF_OPTION], AC_DEFUN([_AM_IF_OPTION],
[m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])]) [m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])])
# Copyright (C) 2001, 2003, 2005, 2011 Free Software Foundation, Inc. # Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc.
# #
# This file is free software; the Free Software Foundation # This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it, # gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved. # with or without modifications, as long as this notice is preserved.
# serial 1
# AM_RUN_LOG(COMMAND) # AM_RUN_LOG(COMMAND)
# ------------------- # -------------------
# Run COMMAND, save the exit status in ac_status, and log it. # Run COMMAND, save the exit status in ac_status, and log it.
@ -911,14 +892,12 @@ Check your system clock])
fi fi
AC_MSG_RESULT(yes)]) AC_MSG_RESULT(yes)])
# Copyright (C) 2001, 2003, 2005, 2011 Free Software Foundation, Inc. # Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc.
# #
# This file is free software; the Free Software Foundation # This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it, # gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved. # with or without modifications, as long as this notice is preserved.
# serial 1
# AM_PROG_INSTALL_STRIP # AM_PROG_INSTALL_STRIP
# --------------------- # ---------------------
# One issue with vendor `install' (even GNU) is that you can't # One issue with vendor `install' (even GNU) is that you can't
@ -941,13 +920,13 @@ fi
INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s"
AC_SUBST([INSTALL_STRIP_PROGRAM])]) AC_SUBST([INSTALL_STRIP_PROGRAM])])
# Copyright (C) 2006, 2008, 2010 Free Software Foundation, Inc. # Copyright (C) 2006, 2008 Free Software Foundation, Inc.
# #
# This file is free software; the Free Software Foundation # This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it, # gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved. # with or without modifications, as long as this notice is preserved.
# serial 3 # serial 2
# _AM_SUBST_NOTMAKE(VARIABLE) # _AM_SUBST_NOTMAKE(VARIABLE)
# --------------------------- # ---------------------------
@ -956,13 +935,13 @@ AC_SUBST([INSTALL_STRIP_PROGRAM])])
AC_DEFUN([_AM_SUBST_NOTMAKE]) AC_DEFUN([_AM_SUBST_NOTMAKE])
# AM_SUBST_NOTMAKE(VARIABLE) # AM_SUBST_NOTMAKE(VARIABLE)
# -------------------------- # ---------------------------
# Public sister of _AM_SUBST_NOTMAKE. # Public sister of _AM_SUBST_NOTMAKE.
AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)]) AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)])
# Check how to create a tarball. -*- Autoconf -*- # Check how to create a tarball. -*- Autoconf -*-
# Copyright (C) 2004, 2005, 2012 Free Software Foundation, Inc. # Copyright (C) 2004, 2005 Free Software Foundation, Inc.
# #
# This file is free software; the Free Software Foundation # This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it, # gives unlimited permission to copy and/or distribute it,
@ -984,11 +963,10 @@ AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)])
# a tarball read from stdin. # a tarball read from stdin.
# $(am__untar) < result.tar # $(am__untar) < result.tar
AC_DEFUN([_AM_PROG_TAR], AC_DEFUN([_AM_PROG_TAR],
[# Always define AMTAR for backward compatibility. Yes, it's still used [# Always define AMTAR for backward compatibility.
# in the wild :-( We should find a proper way to deprecate it ... AM_MISSING_PROG([AMTAR], [tar])
AC_SUBST([AMTAR], ['$${TAR-tar}'])
m4_if([$1], [v7], m4_if([$1], [v7],
[am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'], [am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -'],
[m4_case([$1], [ustar],, [pax],, [m4_case([$1], [ustar],, [pax],,
[m4_fatal([Unknown tar format])]) [m4_fatal([Unknown tar format])])
AC_MSG_CHECKING([how to create a $1 tar archive]) AC_MSG_CHECKING([how to create a $1 tar archive])

724
configure vendored

File diff suppressed because it is too large Load diff

View file

@ -40,6 +40,7 @@ namespace google_breakpad {
class Minidump; class Minidump;
class ProcessState; class ProcessState;
class StackFrameSymbolizer;
class SourceLineResolverInterface; class SourceLineResolverInterface;
class SymbolSupplier; class SymbolSupplier;
struct SystemInfo; struct SystemInfo;
@ -102,6 +103,13 @@ class MinidumpProcessor {
SourceLineResolverInterface* resolver, SourceLineResolverInterface* resolver,
bool enable_exploitability); bool enable_exploitability);
// Initializes the MinidumpProcessor with source line resolver helper, and
// the option of enabling the exploitability framework to analyze dumps
// for probable security relevance.
// Does not take ownership of resolver_helper, which must NOT be NULL.
MinidumpProcessor(StackFrameSymbolizer* stack_frame_symbolizer,
bool enable_exploitability);
~MinidumpProcessor(); ~MinidumpProcessor();
// Processes the minidump file and fills process_state with the result. // Processes the minidump file and fills process_state with the result.
@ -155,8 +163,9 @@ class MinidumpProcessor {
static string GetAssertion(Minidump* dump); static string GetAssertion(Minidump* dump);
private: private:
SymbolSupplier *supplier_; StackFrameSymbolizer* frame_symbolizer_;
SourceLineResolverInterface *resolver_; // Indicate whether resolver_helper_ is owned by this instance.
bool own_frame_symbolizer_;
// This flag enables the exploitability scanner which attempts to // This flag enables the exploitability scanner which attempts to
// guess how likely it is that the crash represents an exploitable // guess how likely it is that the crash represents an exploitable

View file

@ -48,19 +48,16 @@
#include "google_breakpad/common/breakpad_types.h" #include "google_breakpad/common/breakpad_types.h"
#include "google_breakpad/processor/code_modules.h" #include "google_breakpad/processor/code_modules.h"
#include "google_breakpad/processor/memory_region.h" #include "google_breakpad/processor/memory_region.h"
#include "google_breakpad/processor/stack_frame_symbolizer.h"
namespace google_breakpad { namespace google_breakpad {
class CallStack; class CallStack;
class MinidumpContext; class MinidumpContext;
class SourceLineResolverInterface; class StackFrameSymbolizer;
struct StackFrame;
class SymbolSupplier;
struct SystemInfo;
using std::set; using std::set;
class Stackwalker { class Stackwalker {
public: public:
virtual ~Stackwalker() {} virtual ~Stackwalker() {}
@ -74,12 +71,12 @@ class Stackwalker {
// Returns a new concrete subclass suitable for the CPU that a stack was // Returns a new concrete subclass suitable for the CPU that a stack was
// generated on, according to the CPU type indicated by the context // generated on, according to the CPU type indicated by the context
// argument. If no suitable concrete subclass exists, returns NULL. // argument. If no suitable concrete subclass exists, returns NULL.
static Stackwalker* StackwalkerForCPU(const SystemInfo *system_info, static Stackwalker* StackwalkerForCPU(
const SystemInfo* system_info,
MinidumpContext* context, MinidumpContext* context,
MemoryRegion* memory, MemoryRegion* memory,
const CodeModules* modules, const CodeModules* modules,
SymbolSupplier *supplier, StackFrameSymbolizer* resolver_helper);
SourceLineResolverInterface *resolver);
static void set_max_frames(u_int32_t max_frames) { max_frames_ = max_frames; } static void set_max_frames(u_int32_t max_frames) { max_frames_ = max_frames; }
static u_int32_t max_frames() { return max_frames_; } static u_int32_t max_frames() { return max_frames_; }
@ -89,16 +86,15 @@ class Stackwalker {
// memory identifies a MemoryRegion that provides the stack memory // memory identifies a MemoryRegion that provides the stack memory
// for the stack to walk. modules, if non-NULL, is a CodeModules // for the stack to walk. modules, if non-NULL, is a CodeModules
// object that is used to look up which code module each stack frame is // object that is used to look up which code module each stack frame is
// associated with. supplier is an optional caller-supplied SymbolSupplier // associated with. frame_symbolizer is a StackFrameSymbolizer object that
// implementation. If supplier is NULL, source line info will not be // encapsulates the logic of how source line resolver interacts with symbol
// resolved. resolver is an instance of SourceLineResolverInterface // supplier to symbolize stack frame and look up caller frame information
// (see source_line_resolver_interface.h and basic_source_line_resolver.h). // (see stack_frame_symbolizer.h).
// If resolver is NULL, source line info will not be resolved. // frame_symbolizer MUST NOT be NULL (asserted).
Stackwalker(const SystemInfo* system_info, Stackwalker(const SystemInfo* system_info,
MemoryRegion* memory, MemoryRegion* memory,
const CodeModules* modules, const CodeModules* modules,
SymbolSupplier *supplier, StackFrameSymbolizer* frame_symbolizer);
SourceLineResolverInterface *resolver);
// This can be used to filter out potential return addresses when // This can be used to filter out potential return addresses when
// the stack walker resorts to stack scanning. // the stack walker resorts to stack scanning.
@ -142,7 +138,6 @@ class Stackwalker {
if (modules_ && modules_->GetModuleForAddress(ip) && if (modules_ && modules_->GetModuleForAddress(ip) &&
InstructionAddressSeemsValid(ip)) { InstructionAddressSeemsValid(ip)) {
*ip_found = ip; *ip_found = ip;
*location_found = location; *location_found = location;
return true; return true;
@ -165,8 +160,8 @@ class Stackwalker {
const CodeModules* modules_; const CodeModules* modules_;
protected: protected:
// The SourceLineResolver implementation. // The StackFrameSymbolizer implementation.
SourceLineResolverInterface *resolver_; StackFrameSymbolizer* frame_symbolizer_;
private: private:
// Obtains the context frame, the innermost called procedure in a stack // Obtains the context frame, the innermost called procedure in a stack
@ -185,14 +180,6 @@ class Stackwalker {
// the caller. // the caller.
virtual StackFrame* GetCallerFrame(const CallStack* stack) = 0; virtual StackFrame* GetCallerFrame(const CallStack* stack) = 0;
// The optional SymbolSupplier for resolving source line info.
SymbolSupplier *supplier_;
// A list of modules that we haven't found symbols for. We track
// this in order to avoid repeatedly looking them up again within
// one minidump.
set<string> no_symbol_modules_;
// The maximum number of frames Stackwalker will walk through. // The maximum number of frames Stackwalker will walk through.
// This defaults to 1024 to prevent infinite loops. // This defaults to 1024 to prevent infinite loops.
static u_int32_t max_frames_; static u_int32_t max_frames_;

View file

@ -36,6 +36,7 @@
#include "google_breakpad/processor/minidump.h" #include "google_breakpad/processor/minidump.h"
#include "google_breakpad/processor/process_state.h" #include "google_breakpad/processor/process_state.h"
#include "google_breakpad/processor/exploitability.h" #include "google_breakpad/processor/exploitability.h"
#include "google_breakpad/processor/stack_frame_symbolizer.h"
#include "processor/logging.h" #include "processor/logging.h"
#include "processor/scoped_ptr.h" #include "processor/scoped_ptr.h"
#include "processor/stackwalker_x86.h" #include "processor/stackwalker_x86.h"
@ -44,18 +45,29 @@ namespace google_breakpad {
MinidumpProcessor::MinidumpProcessor(SymbolSupplier *supplier, MinidumpProcessor::MinidumpProcessor(SymbolSupplier *supplier,
SourceLineResolverInterface *resolver) SourceLineResolverInterface *resolver)
: supplier_(supplier), resolver_(resolver), : frame_symbolizer_(new StackFrameSymbolizer(supplier, resolver)),
own_frame_symbolizer_(true),
enable_exploitability_(false) { enable_exploitability_(false) {
} }
MinidumpProcessor::MinidumpProcessor(SymbolSupplier *supplier, MinidumpProcessor::MinidumpProcessor(SymbolSupplier *supplier,
SourceLineResolverInterface *resolver, SourceLineResolverInterface *resolver,
bool enable_exploitability) bool enable_exploitability)
: supplier_(supplier), resolver_(resolver), : frame_symbolizer_(new StackFrameSymbolizer(supplier, resolver)),
own_frame_symbolizer_(true),
enable_exploitability_(enable_exploitability) { enable_exploitability_(enable_exploitability) {
} }
MinidumpProcessor::MinidumpProcessor(StackFrameSymbolizer *frame_symbolizer,
bool enable_exploitability)
: frame_symbolizer_(frame_symbolizer),
own_frame_symbolizer_(false),
enable_exploitability_(enable_exploitability) {
assert(frame_symbolizer_);
}
MinidumpProcessor::~MinidumpProcessor() { MinidumpProcessor::~MinidumpProcessor() {
if (own_frame_symbolizer_) delete frame_symbolizer_;
} }
ProcessResult MinidumpProcessor::Process( ProcessResult MinidumpProcessor::Process(
@ -126,6 +138,10 @@ ProcessResult MinidumpProcessor::Process(
bool interrupted = false; bool interrupted = false;
bool found_requesting_thread = false; bool found_requesting_thread = false;
unsigned int thread_count = threads->thread_count(); unsigned int thread_count = threads->thread_count();
// Reset frame_symbolizer_ at the beginning of stackwalk for each minidump.
frame_symbolizer_->Reset();
for (unsigned int thread_index = 0; for (unsigned int thread_index = 0;
thread_index < thread_count; thread_index < thread_count;
++thread_index) { ++thread_index) {
@ -208,8 +224,7 @@ ProcessResult MinidumpProcessor::Process(
context, context,
thread_memory, thread_memory,
process_state->modules_, process_state->modules_,
supplier_, frame_symbolizer_));
resolver_));
if (!stackwalker.get()) { if (!stackwalker.get()) {
BPLOG(ERROR) << "No stackwalker for " << thread_string; BPLOG(ERROR) << "No stackwalker for " << thread_string;
return PROCESS_ERROR_NO_STACKWALKER_FOR_THREAD; return PROCESS_ERROR_NO_STACKWALKER_FOR_THREAD;
@ -1160,7 +1175,8 @@ string MinidumpProcessor::GetAssertion(Minidump *dump) {
break; break;
default: { default: {
char assertion_type[32]; char assertion_type[32];
sprintf(assertion_type, "0x%08x", raw_assertion->type); snprintf(assertion_type, sizeof(assertion_type),
"0x%08x", raw_assertion->type);
assertion_string = "Unknown assertion type "; assertion_string = "Unknown assertion type ";
assertion_string += assertion_type; assertion_string += assertion_type;
break; break;
@ -1184,7 +1200,7 @@ string MinidumpProcessor::GetAssertion(Minidump *dump) {
if (raw_assertion->line != 0) { if (raw_assertion->line != 0) {
char assertion_line[32]; char assertion_line[32];
sprintf(assertion_line, "%u", raw_assertion->line); snprintf(assertion_line, sizeof(assertion_line), "%u", raw_assertion->line);
assertion_string.append(" at line "); assertion_string.append(" at line ");
assertion_string.append(assertion_line); assertion_string.append(assertion_line);
} }

View file

@ -41,9 +41,8 @@
#include "google_breakpad/processor/code_module.h" #include "google_breakpad/processor/code_module.h"
#include "google_breakpad/processor/code_modules.h" #include "google_breakpad/processor/code_modules.h"
#include "google_breakpad/processor/minidump.h" #include "google_breakpad/processor/minidump.h"
#include "google_breakpad/processor/source_line_resolver_interface.h"
#include "google_breakpad/processor/stack_frame.h" #include "google_breakpad/processor/stack_frame.h"
#include "google_breakpad/processor/symbol_supplier.h" #include "google_breakpad/processor/stack_frame_symbolizer.h"
#include "google_breakpad/processor/system_info.h" #include "google_breakpad/processor/system_info.h"
#include "processor/linked_ptr.h" #include "processor/linked_ptr.h"
#include "processor/logging.h" #include "processor/logging.h"
@ -61,13 +60,12 @@ u_int32_t Stackwalker::max_frames_ = 1024;
Stackwalker::Stackwalker(const SystemInfo* system_info, Stackwalker::Stackwalker(const SystemInfo* system_info,
MemoryRegion* memory, MemoryRegion* memory,
const CodeModules* modules, const CodeModules* modules,
SymbolSupplier *supplier, StackFrameSymbolizer* frame_symbolizer)
SourceLineResolverInterface *resolver)
: system_info_(system_info), : system_info_(system_info),
memory_(memory), memory_(memory),
modules_(modules), modules_(modules),
resolver_(resolver), frame_symbolizer_(frame_symbolizer) {
supplier_(supplier) { assert(frame_symbolizer_);
} }
@ -88,43 +86,13 @@ bool Stackwalker::Walk(CallStack *stack) {
// context frame (above) or a caller frame (below). // context frame (above) or a caller frame (below).
// Resolve the module information, if a module map was provided. // Resolve the module information, if a module map was provided.
if (modules_) { StackFrameSymbolizer::SymbolizerResult symbolizer_result =
const CodeModule *module = frame_symbolizer_->FillSourceLineInfo(modules_, system_info_,
modules_->GetModuleForAddress(frame->instruction); frame.get());
if (module) { if (symbolizer_result == StackFrameSymbolizer::INTERRUPT) {
frame->module = module; BPLOG(INFO) << "Stack walk is interrupted.";
if (resolver_ &&
!resolver_->HasModule(frame->module) &&
no_symbol_modules_.find(
module->code_file()) == no_symbol_modules_.end() &&
supplier_) {
string symbol_file;
char *symbol_data = NULL;
SymbolSupplier::SymbolResult symbol_result =
supplier_->GetCStringSymbolData(module,
system_info_,
&symbol_file,
&symbol_data);
switch (symbol_result) {
case SymbolSupplier::FOUND:
resolver_->LoadModuleUsingMemoryBuffer(frame->module,
symbol_data);
break;
case SymbolSupplier::NOT_FOUND:
no_symbol_modules_.insert(module->code_file());
break; // nothing to do
case SymbolSupplier::INTERRUPT:
return false; return false;
} }
// Inform symbol supplier to free the unused data memory buffer.
if (resolver_->ShouldDeleteMemoryBufferAfterLoadModule())
supplier_->FreeSymbolData(module);
}
if (resolver_)
resolver_->FillSourceLineInfo(frame.get());
}
}
// Add the frame to the call stack. Relinquish the ownership claim // Add the frame to the call stack. Relinquish the ownership claim
// over the frame, because the stack now owns it. // over the frame, because the stack now owns it.
@ -148,8 +116,7 @@ Stackwalker* Stackwalker::StackwalkerForCPU(
MinidumpContext* context, MinidumpContext* context,
MemoryRegion* memory, MemoryRegion* memory,
const CodeModules* modules, const CodeModules* modules,
SymbolSupplier *supplier, StackFrameSymbolizer* frame_symbolizer) {
SourceLineResolverInterface *resolver) {
if (!context) { if (!context) {
BPLOG(ERROR) << "Can't choose a stackwalker implementation without context"; BPLOG(ERROR) << "Can't choose a stackwalker implementation without context";
return NULL; return NULL;
@ -162,29 +129,25 @@ Stackwalker* Stackwalker::StackwalkerForCPU(
case MD_CONTEXT_X86: case MD_CONTEXT_X86:
cpu_stackwalker = new StackwalkerX86(system_info, cpu_stackwalker = new StackwalkerX86(system_info,
context->GetContextX86(), context->GetContextX86(),
memory, modules, supplier, memory, modules, frame_symbolizer);
resolver);
break; break;
case MD_CONTEXT_PPC: case MD_CONTEXT_PPC:
cpu_stackwalker = new StackwalkerPPC(system_info, cpu_stackwalker = new StackwalkerPPC(system_info,
context->GetContextPPC(), context->GetContextPPC(),
memory, modules, supplier, memory, modules, frame_symbolizer);
resolver);
break; break;
case MD_CONTEXT_AMD64: case MD_CONTEXT_AMD64:
cpu_stackwalker = new StackwalkerAMD64(system_info, cpu_stackwalker = new StackwalkerAMD64(system_info,
context->GetContextAMD64(), context->GetContextAMD64(),
memory, modules, supplier, memory, modules, frame_symbolizer);
resolver);
break; break;
case MD_CONTEXT_SPARC: case MD_CONTEXT_SPARC:
cpu_stackwalker = new StackwalkerSPARC(system_info, cpu_stackwalker = new StackwalkerSPARC(system_info,
context->GetContextSPARC(), context->GetContextSPARC(),
memory, modules, supplier, memory, modules, frame_symbolizer);
resolver);
break; break;
case MD_CONTEXT_ARM: case MD_CONTEXT_ARM:
@ -194,7 +157,7 @@ Stackwalker* Stackwalker::StackwalkerForCPU(
cpu_stackwalker = new StackwalkerARM(system_info, cpu_stackwalker = new StackwalkerARM(system_info,
context->GetContextARM(), context->GetContextARM(),
fp_register, memory, modules, fp_register, memory, modules,
supplier, resolver); frame_symbolizer);
break; break;
} }
@ -205,38 +168,28 @@ Stackwalker* Stackwalker::StackwalkerForCPU(
} }
bool Stackwalker::InstructionAddressSeemsValid(u_int64_t address) { bool Stackwalker::InstructionAddressSeemsValid(u_int64_t address) {
const CodeModule *module = modules_->GetModuleForAddress(address); StackFrame frame;
if (!module) { frame.instruction = address;
StackFrameSymbolizer::SymbolizerResult symbolizer_result =
frame_symbolizer_->FillSourceLineInfo(modules_, system_info_, &frame);
if (!frame.module) {
// not inside any loaded module // not inside any loaded module
return false; return false;
} }
if (!resolver_ || !supplier_) { if (!frame_symbolizer_->HasImplementation()) {
// we don't have a resolver and or symbol supplier, // No valid implementation to symbolize stack frame, but the address is
// but we're inside a known module // within a known module.
return true; return true;
} }
if (!resolver_->HasModule(module)) { if (symbolizer_result != StackFrameSymbolizer::NO_ERROR) {
string symbol_file; // Some error occurred during symbolization, but the address is within a
char *symbol_data = NULL; // known module
SymbolSupplier::SymbolResult symbol_result =
supplier_->GetCStringSymbolData(module, system_info_,
&symbol_file, &symbol_data);
if (symbol_result != SymbolSupplier::FOUND ||
!resolver_->LoadModuleUsingMemoryBuffer(module,
symbol_data)) {
// we don't have symbols, but we're inside a loaded module
return true; return true;
} }
}
StackFrame frame;
frame.module = module;
frame.instruction = address;
resolver_->FillSourceLineInfo(&frame);
// we have symbols, so return true if inside a function
return !frame.function_name.empty(); return !frame.function_name.empty();
} }

View file

@ -93,9 +93,8 @@ StackwalkerAMD64::StackwalkerAMD64(const SystemInfo *system_info,
const MDRawContextAMD64* context, const MDRawContextAMD64* context,
MemoryRegion* memory, MemoryRegion* memory,
const CodeModules* modules, const CodeModules* modules,
SymbolSupplier *supplier, StackFrameSymbolizer* resolver_helper)
SourceLineResolverInterface *resolver) : Stackwalker(system_info, memory, modules, resolver_helper),
: Stackwalker(system_info, memory, modules, supplier, resolver),
context_(context), context_(context),
cfi_walker_(cfi_register_map_, cfi_walker_(cfi_register_map_,
(sizeof(cfi_register_map_) / sizeof(cfi_register_map_[0]))) { (sizeof(cfi_register_map_) / sizeof(cfi_register_map_[0]))) {
@ -203,7 +202,7 @@ StackFrame* StackwalkerAMD64::GetCallerFrame(const CallStack *stack) {
// If we have DWARF CFI information, use it. // If we have DWARF CFI information, use it.
scoped_ptr<CFIFrameInfo> cfi_frame_info( scoped_ptr<CFIFrameInfo> cfi_frame_info(
resolver_ ? resolver_->FindCFIFrameInfo(last_frame) : NULL); frame_symbolizer_->FindCFIFrameInfo(last_frame));
if (cfi_frame_info.get()) if (cfi_frame_info.get())
new_frame.reset(GetCallerByCFIFrameInfo(frames, cfi_frame_info.get())); new_frame.reset(GetCallerByCFIFrameInfo(frames, cfi_frame_info.get()));

View file

@ -38,6 +38,7 @@
#ifndef PROCESSOR_STACKWALKER_AMD64_H__ #ifndef PROCESSOR_STACKWALKER_AMD64_H__
#define PROCESSOR_STACKWALKER_AMD64_H__ #define PROCESSOR_STACKWALKER_AMD64_H__
#include <vector>
#include "google_breakpad/common/breakpad_types.h" #include "google_breakpad/common/breakpad_types.h"
#include "google_breakpad/common/minidump_format.h" #include "google_breakpad/common/minidump_format.h"
@ -59,8 +60,7 @@ class StackwalkerAMD64 : public Stackwalker {
const MDRawContextAMD64* context, const MDRawContextAMD64* context,
MemoryRegion* memory, MemoryRegion* memory,
const CodeModules* modules, const CodeModules* modules,
SymbolSupplier *supplier, StackFrameSymbolizer* frame_symbolizer);
SourceLineResolverInterface *resolver);
private: private:
// A STACK CFI-driven frame walker for the AMD64 // A STACK CFI-driven frame walker for the AMD64

View file

@ -31,8 +31,8 @@
// stackwalker_amd64_unittest.cc: Unit tests for StackwalkerAMD64 class. // stackwalker_amd64_unittest.cc: Unit tests for StackwalkerAMD64 class.
#include <string>
#include <string.h> #include <string.h>
#include <string>
#include <vector> #include <vector>
#include "breakpad_googletest_includes.h" #include "breakpad_googletest_includes.h"
@ -48,6 +48,7 @@
using google_breakpad::BasicSourceLineResolver; using google_breakpad::BasicSourceLineResolver;
using google_breakpad::CallStack; using google_breakpad::CallStack;
using google_breakpad::StackFrameSymbolizer;
using google_breakpad::StackFrame; using google_breakpad::StackFrame;
using google_breakpad::StackFrameAMD64; using google_breakpad::StackFrameAMD64;
using google_breakpad::StackwalkerAMD64; using google_breakpad::StackwalkerAMD64;
@ -138,8 +139,9 @@ TEST_F(SanityCheck, NoResolver) {
raw_context.rip = 0x40000000c0000200ULL; raw_context.rip = 0x40000000c0000200ULL;
raw_context.rbp = 0x8000000080000000ULL; raw_context.rbp = 0x8000000080000000ULL;
StackFrameSymbolizer frame_symbolizer(NULL, NULL);
StackwalkerAMD64 walker(&system_info, &raw_context, &stack_region, &modules, StackwalkerAMD64 walker(&system_info, &raw_context, &stack_region, &modules,
NULL, NULL); &frame_symbolizer);
// This should succeed even without a resolver or supplier. // This should succeed even without a resolver or supplier.
ASSERT_TRUE(walker.Walk(&call_stack)); ASSERT_TRUE(walker.Walk(&call_stack));
frames = call_stack.frames(); frames = call_stack.frames();
@ -158,8 +160,9 @@ TEST_F(GetContextFrame, Simple) {
raw_context.rip = 0x40000000c0000200ULL; raw_context.rip = 0x40000000c0000200ULL;
raw_context.rbp = 0x8000000080000000ULL; raw_context.rbp = 0x8000000080000000ULL;
StackFrameSymbolizer frame_symbolizer(&supplier, &resolver);
StackwalkerAMD64 walker(&system_info, &raw_context, &stack_region, &modules, StackwalkerAMD64 walker(&system_info, &raw_context, &stack_region, &modules,
&supplier, &resolver); &frame_symbolizer);
ASSERT_TRUE(walker.Walk(&call_stack)); ASSERT_TRUE(walker.Walk(&call_stack));
frames = call_stack.frames(); frames = call_stack.frames();
ASSERT_GE(1U, frames->size()); ASSERT_GE(1U, frames->size());
@ -212,8 +215,9 @@ TEST_F(GetCallerFrame, ScanWithoutSymbols) {
raw_context.rbp = frame1_rbp.Value(); raw_context.rbp = frame1_rbp.Value();
raw_context.rsp = stack_section.start().Value(); raw_context.rsp = stack_section.start().Value();
StackFrameSymbolizer frame_symbolizer(&supplier, &resolver);
StackwalkerAMD64 walker(&system_info, &raw_context, &stack_region, &modules, StackwalkerAMD64 walker(&system_info, &raw_context, &stack_region, &modules,
&supplier, &resolver); &frame_symbolizer);
ASSERT_TRUE(walker.Walk(&call_stack)); ASSERT_TRUE(walker.Walk(&call_stack));
frames = call_stack.frames(); frames = call_stack.frames();
ASSERT_EQ(3U, frames->size()); ASSERT_EQ(3U, frames->size());
@ -279,8 +283,9 @@ TEST_F(GetCallerFrame, ScanWithFunctionSymbols) {
// The calling frame's function. // The calling frame's function.
"FUNC 100 400 10 echidna\n"); "FUNC 100 400 10 echidna\n");
StackFrameSymbolizer frame_symbolizer(&supplier, &resolver);
StackwalkerAMD64 walker(&system_info, &raw_context, &stack_region, &modules, StackwalkerAMD64 walker(&system_info, &raw_context, &stack_region, &modules,
&supplier, &resolver); &frame_symbolizer);
ASSERT_TRUE(walker.Walk(&call_stack)); ASSERT_TRUE(walker.Walk(&call_stack));
frames = call_stack.frames(); frames = call_stack.frames();
ASSERT_EQ(2U, frames->size()); ASSERT_EQ(2U, frames->size());
@ -343,8 +348,9 @@ TEST_F(GetCallerFrame, CallerPushedRBP) {
// The calling frame's function. // The calling frame's function.
"FUNC 100 400 10 yeti\n"); "FUNC 100 400 10 yeti\n");
StackFrameSymbolizer frame_symbolizer(&supplier, &resolver);
StackwalkerAMD64 walker(&system_info, &raw_context, &stack_region, &modules, StackwalkerAMD64 walker(&system_info, &raw_context, &stack_region, &modules,
&supplier, &resolver); &frame_symbolizer);
ASSERT_TRUE(walker.Walk(&call_stack)); ASSERT_TRUE(walker.Walk(&call_stack));
frames = call_stack.frames(); frames = call_stack.frames();
ASSERT_EQ(2U, frames->size()); ASSERT_EQ(2U, frames->size());
@ -418,8 +424,9 @@ struct CFIFixture: public StackwalkerAMD64Fixture {
RegionFromSection(); RegionFromSection();
raw_context.rsp = stack_section.start().Value(); raw_context.rsp = stack_section.start().Value();
StackFrameSymbolizer frame_symbolizer(&supplier, &resolver);
StackwalkerAMD64 walker(&system_info, &raw_context, &stack_region, &modules, StackwalkerAMD64 walker(&system_info, &raw_context, &stack_region, &modules,
&supplier, &resolver); &frame_symbolizer);
ASSERT_TRUE(walker.Walk(&call_stack)); ASSERT_TRUE(walker.Walk(&call_stack));
frames = call_stack.frames(); frames = call_stack.frames();
ASSERT_EQ(2U, frames->size()); ASSERT_EQ(2U, frames->size());

View file

@ -33,6 +33,8 @@
// //
// Author: Mark Mentovai, Ted Mielczarek, Jim Blandy // Author: Mark Mentovai, Ted Mielczarek, Jim Blandy
#include <vector>
#include "google_breakpad/processor/call_stack.h" #include "google_breakpad/processor/call_stack.h"
#include "google_breakpad/processor/memory_region.h" #include "google_breakpad/processor/memory_region.h"
#include "google_breakpad/processor/source_line_resolver_interface.h" #include "google_breakpad/processor/source_line_resolver_interface.h"
@ -50,9 +52,8 @@ StackwalkerARM::StackwalkerARM(const SystemInfo *system_info,
int fp_register, int fp_register,
MemoryRegion* memory, MemoryRegion* memory,
const CodeModules* modules, const CodeModules* modules,
SymbolSupplier *supplier, StackFrameSymbolizer* resolver_helper)
SourceLineResolverInterface *resolver) : Stackwalker(system_info, memory, modules, resolver_helper),
: Stackwalker(system_info, memory, modules, supplier, resolver),
context_(context), fp_register_(fp_register), context_(context), fp_register_(fp_register),
context_frame_validity_(StackFrameARM::CONTEXT_VALID_ALL) { } context_frame_validity_(StackFrameARM::CONTEXT_VALID_ALL) { }
@ -247,7 +248,7 @@ StackFrame* StackwalkerARM::GetCallerFrame(const CallStack *stack) {
// See if there is DWARF call frame information covering this address. // See if there is DWARF call frame information covering this address.
scoped_ptr<CFIFrameInfo> cfi_frame_info( scoped_ptr<CFIFrameInfo> cfi_frame_info(
resolver_ ? resolver_->FindCFIFrameInfo(last_frame) : NULL); frame_symbolizer_->FindCFIFrameInfo(last_frame));
if (cfi_frame_info.get()) if (cfi_frame_info.get())
frame.reset(GetCallerByCFIFrameInfo(frames, cfi_frame_info.get())); frame.reset(GetCallerByCFIFrameInfo(frames, cfi_frame_info.get()));

View file

@ -59,8 +59,7 @@ class StackwalkerARM : public Stackwalker {
int fp_register, int fp_register,
MemoryRegion* memory, MemoryRegion* memory,
const CodeModules* modules, const CodeModules* modules,
SymbolSupplier *supplier, StackFrameSymbolizer* frame_symbolizer);
SourceLineResolverInterface *resolver);
// Change the context validity mask of the frame returned by // Change the context validity mask of the frame returned by
// GetContextFrame to VALID. This is only for use by unit tests; the // GetContextFrame to VALID. This is only for use by unit tests; the

View file

@ -31,8 +31,8 @@
// stackwalker_arm_unittest.cc: Unit tests for StackwalkerARM class. // stackwalker_arm_unittest.cc: Unit tests for StackwalkerARM class.
#include <string>
#include <string.h> #include <string.h>
#include <string>
#include <vector> #include <vector>
#include "breakpad_googletest_includes.h" #include "breakpad_googletest_includes.h"
@ -49,6 +49,7 @@
using google_breakpad::BasicSourceLineResolver; using google_breakpad::BasicSourceLineResolver;
using google_breakpad::CallStack; using google_breakpad::CallStack;
using google_breakpad::StackFrameSymbolizer;
using google_breakpad::StackFrame; using google_breakpad::StackFrame;
using google_breakpad::StackFrameARM; using google_breakpad::StackFrameARM;
using google_breakpad::StackwalkerARM; using google_breakpad::StackwalkerARM;
@ -134,8 +135,9 @@ TEST_F(SanityCheck, NoResolver) {
// Since we have no call frame information, and all unwinding // Since we have no call frame information, and all unwinding
// requires call frame information, the stack walk will end after // requires call frame information, the stack walk will end after
// the first frame. // the first frame.
StackFrameSymbolizer frame_symbolizer(NULL, NULL);
StackwalkerARM walker(&system_info, &raw_context, -1, &stack_region, &modules, StackwalkerARM walker(&system_info, &raw_context, -1, &stack_region, &modules,
NULL, NULL); &frame_symbolizer);
// This should succeed even without a resolver or supplier. // This should succeed even without a resolver or supplier.
ASSERT_TRUE(walker.Walk(&call_stack)); ASSERT_TRUE(walker.Walk(&call_stack));
frames = call_stack.frames(); frames = call_stack.frames();
@ -152,8 +154,9 @@ TEST_F(GetContextFrame, Simple) {
// Since we have no call frame information, and all unwinding // Since we have no call frame information, and all unwinding
// requires call frame information, the stack walk will end after // requires call frame information, the stack walk will end after
// the first frame. // the first frame.
StackFrameSymbolizer frame_symbolizer(&supplier, &resolver);
StackwalkerARM walker(&system_info, &raw_context, -1, &stack_region, &modules, StackwalkerARM walker(&system_info, &raw_context, -1, &stack_region, &modules,
&supplier, &resolver); &frame_symbolizer);
ASSERT_TRUE(walker.Walk(&call_stack)); ASSERT_TRUE(walker.Walk(&call_stack));
frames = call_stack.frames(); frames = call_stack.frames();
ASSERT_EQ(1U, frames->size()); ASSERT_EQ(1U, frames->size());
@ -199,8 +202,9 @@ TEST_F(GetCallerFrame, ScanWithoutSymbols) {
raw_context.iregs[MD_CONTEXT_ARM_REG_PC] = 0x40005510; raw_context.iregs[MD_CONTEXT_ARM_REG_PC] = 0x40005510;
raw_context.iregs[MD_CONTEXT_ARM_REG_SP] = stack_section.start().Value(); raw_context.iregs[MD_CONTEXT_ARM_REG_SP] = stack_section.start().Value();
StackFrameSymbolizer frame_symbolizer(&supplier, &resolver);
StackwalkerARM walker(&system_info, &raw_context, -1, &stack_region, &modules, StackwalkerARM walker(&system_info, &raw_context, -1, &stack_region, &modules,
&supplier, &resolver); &frame_symbolizer);
ASSERT_TRUE(walker.Walk(&call_stack)); ASSERT_TRUE(walker.Walk(&call_stack));
frames = call_stack.frames(); frames = call_stack.frames();
ASSERT_EQ(3U, frames->size()); ASSERT_EQ(3U, frames->size());
@ -262,8 +266,9 @@ TEST_F(GetCallerFrame, ScanWithFunctionSymbols) {
// The calling frame's function. // The calling frame's function.
"FUNC 100 400 10 marsupial\n"); "FUNC 100 400 10 marsupial\n");
StackFrameSymbolizer frame_symbolizer(&supplier, &resolver);
StackwalkerARM walker(&system_info, &raw_context, -1, &stack_region, &modules, StackwalkerARM walker(&system_info, &raw_context, -1, &stack_region, &modules,
&supplier, &resolver); &frame_symbolizer);
ASSERT_TRUE(walker.Walk(&call_stack)); ASSERT_TRUE(walker.Walk(&call_stack));
frames = call_stack.frames(); frames = call_stack.frames();
ASSERT_EQ(2U, frames->size()); ASSERT_EQ(2U, frames->size());
@ -372,8 +377,9 @@ struct CFIFixture: public StackwalkerARMFixture {
RegionFromSection(); RegionFromSection();
raw_context.iregs[MD_CONTEXT_ARM_REG_SP] = stack_section.start().Value(); raw_context.iregs[MD_CONTEXT_ARM_REG_SP] = stack_section.start().Value();
StackFrameSymbolizer frame_symbolizer(&supplier, &resolver);
StackwalkerARM walker(&system_info, &raw_context, -1, &stack_region, StackwalkerARM walker(&system_info, &raw_context, -1, &stack_region,
&modules, &supplier, &resolver); &modules, &frame_symbolizer);
walker.SetContextFrameValidity(context_frame_validity); walker.SetContextFrameValidity(context_frame_validity);
ASSERT_TRUE(walker.Walk(&call_stack)); ASSERT_TRUE(walker.Walk(&call_stack));
frames = call_stack.frames(); frames = call_stack.frames();
@ -564,8 +570,9 @@ TEST_F(CFI, RejectBackwards) {
raw_context.iregs[MD_CONTEXT_ARM_REG_PC] = 0x40006000; raw_context.iregs[MD_CONTEXT_ARM_REG_PC] = 0x40006000;
raw_context.iregs[MD_CONTEXT_ARM_REG_SP] = 0x80000000; raw_context.iregs[MD_CONTEXT_ARM_REG_SP] = 0x80000000;
raw_context.iregs[MD_CONTEXT_ARM_REG_LR] = 0x40005510; raw_context.iregs[MD_CONTEXT_ARM_REG_LR] = 0x40005510;
StackFrameSymbolizer frame_symbolizer(&supplier, &resolver);
StackwalkerARM walker(&system_info, &raw_context, -1, &stack_region, &modules, StackwalkerARM walker(&system_info, &raw_context, -1, &stack_region, &modules,
&supplier, &resolver); &frame_symbolizer);
ASSERT_TRUE(walker.Walk(&call_stack)); ASSERT_TRUE(walker.Walk(&call_stack));
frames = call_stack.frames(); frames = call_stack.frames();
ASSERT_EQ(1U, frames->size()); ASSERT_EQ(1U, frames->size());
@ -575,8 +582,9 @@ TEST_F(CFI, RejectBackwards) {
TEST_F(CFI, RejectBadExpressions) { TEST_F(CFI, RejectBadExpressions) {
raw_context.iregs[MD_CONTEXT_ARM_REG_PC] = 0x40007000; raw_context.iregs[MD_CONTEXT_ARM_REG_PC] = 0x40007000;
raw_context.iregs[MD_CONTEXT_ARM_REG_SP] = 0x80000000; raw_context.iregs[MD_CONTEXT_ARM_REG_SP] = 0x80000000;
StackFrameSymbolizer frame_symbolizer(&supplier, &resolver);
StackwalkerARM walker(&system_info, &raw_context, -1, &stack_region, &modules, StackwalkerARM walker(&system_info, &raw_context, -1, &stack_region, &modules,
&supplier, &resolver); &frame_symbolizer);
ASSERT_TRUE(walker.Walk(&call_stack)); ASSERT_TRUE(walker.Walk(&call_stack));
frames = call_stack.frames(); frames = call_stack.frames();
ASSERT_EQ(1U, frames->size()); ASSERT_EQ(1U, frames->size());
@ -631,8 +639,9 @@ TEST_F(GetFramesByFramePointer, OnlyFramePointer) {
raw_context.iregs[MD_CONTEXT_ARM_REG_IOS_FP] = frame1_fp.Value(); raw_context.iregs[MD_CONTEXT_ARM_REG_IOS_FP] = frame1_fp.Value();
raw_context.iregs[MD_CONTEXT_ARM_REG_SP] = stack_section.start().Value(); raw_context.iregs[MD_CONTEXT_ARM_REG_SP] = stack_section.start().Value();
StackFrameSymbolizer frame_symbolizer(&supplier, &resolver);
StackwalkerARM walker(&system_info, &raw_context, MD_CONTEXT_ARM_REG_IOS_FP, StackwalkerARM walker(&system_info, &raw_context, MD_CONTEXT_ARM_REG_IOS_FP,
&stack_region, &modules, &supplier, &resolver); &stack_region, &modules, &frame_symbolizer);
ASSERT_TRUE(walker.Walk(&call_stack)); ASSERT_TRUE(walker.Walk(&call_stack));
frames = call_stack.frames(); frames = call_stack.frames();
@ -720,8 +729,9 @@ TEST_F(GetFramesByFramePointer, FramePointerAndCFI) {
raw_context.iregs[MD_CONTEXT_ARM_REG_IOS_FP] = frame1_fp.Value(); raw_context.iregs[MD_CONTEXT_ARM_REG_IOS_FP] = frame1_fp.Value();
raw_context.iregs[MD_CONTEXT_ARM_REG_SP] = stack_section.start().Value(); raw_context.iregs[MD_CONTEXT_ARM_REG_SP] = stack_section.start().Value();
StackFrameSymbolizer frame_symbolizer(&supplier, &resolver);
StackwalkerARM walker(&system_info, &raw_context, MD_CONTEXT_ARM_REG_IOS_FP, StackwalkerARM walker(&system_info, &raw_context, MD_CONTEXT_ARM_REG_IOS_FP,
&stack_region, &modules, &supplier, &resolver); &stack_region, &modules, &frame_symbolizer);
ASSERT_TRUE(walker.Walk(&call_stack)); ASSERT_TRUE(walker.Walk(&call_stack));
frames = call_stack.frames(); frames = call_stack.frames();

View file

@ -47,9 +47,8 @@ StackwalkerPPC::StackwalkerPPC(const SystemInfo *system_info,
const MDRawContextPPC* context, const MDRawContextPPC* context,
MemoryRegion* memory, MemoryRegion* memory,
const CodeModules* modules, const CodeModules* modules,
SymbolSupplier *supplier, StackFrameSymbolizer* resolver_helper)
SourceLineResolverInterface *resolver) : Stackwalker(system_info, memory, modules, resolver_helper),
: Stackwalker(system_info, memory, modules, supplier, resolver),
context_(context) { context_(context) {
if (memory_->GetBase() + memory_->GetSize() - 1 > 0xffffffff) { if (memory_->GetBase() + memory_->GetSize() - 1 > 0xffffffff) {
// This implementation only covers 32-bit ppc CPUs. The limits of the // This implementation only covers 32-bit ppc CPUs. The limits of the

View file

@ -57,8 +57,7 @@ class StackwalkerPPC : public Stackwalker {
const MDRawContextPPC* context, const MDRawContextPPC* context,
MemoryRegion* memory, MemoryRegion* memory,
const CodeModules* modules, const CodeModules* modules,
SymbolSupplier *supplier, StackFrameSymbolizer* frame_symbolizer);
SourceLineResolverInterface *resolver);
private: private:
// Implementation of Stackwalker, using ppc context (stack pointer in %r1, // Implementation of Stackwalker, using ppc context (stack pointer in %r1,

View file

@ -47,9 +47,8 @@ StackwalkerSPARC::StackwalkerSPARC(const SystemInfo *system_info,
const MDRawContextSPARC* context, const MDRawContextSPARC* context,
MemoryRegion* memory, MemoryRegion* memory,
const CodeModules* modules, const CodeModules* modules,
SymbolSupplier *supplier, StackFrameSymbolizer* resolver_helper)
SourceLineResolverInterface *resolver) : Stackwalker(system_info, memory, modules, resolver_helper),
: Stackwalker(system_info, memory, modules, supplier, resolver),
context_(context) { context_(context) {
} }

View file

@ -57,8 +57,7 @@ class StackwalkerSPARC : public Stackwalker {
const MDRawContextSPARC* context, const MDRawContextSPARC* context,
MemoryRegion* memory, MemoryRegion* memory,
const CodeModules* modules, const CodeModules* modules,
SymbolSupplier *supplier, StackFrameSymbolizer* frame_symbolizer);
SourceLineResolverInterface *resolver);
private: private:
// Implementation of Stackwalker, using sparc context (%fp, %sp, %pc) and // Implementation of Stackwalker, using sparc context (%fp, %sp, %pc) and

View file

@ -33,8 +33,7 @@
// //
// Author: Mark Mentovai // Author: Mark Mentovai
#include <string>
#include "processor/postfix_evaluator-inl.h"
#include "google_breakpad/processor/call_stack.h" #include "google_breakpad/processor/call_stack.h"
#include "google_breakpad/processor/code_modules.h" #include "google_breakpad/processor/code_modules.h"
@ -42,6 +41,7 @@
#include "google_breakpad/processor/source_line_resolver_interface.h" #include "google_breakpad/processor/source_line_resolver_interface.h"
#include "google_breakpad/processor/stack_frame_cpu.h" #include "google_breakpad/processor/stack_frame_cpu.h"
#include "processor/logging.h" #include "processor/logging.h"
#include "processor/postfix_evaluator-inl.h"
#include "processor/scoped_ptr.h" #include "processor/scoped_ptr.h"
#include "processor/stackwalker_x86.h" #include "processor/stackwalker_x86.h"
#include "processor/windows_frame_info.h" #include "processor/windows_frame_info.h"
@ -81,9 +81,8 @@ StackwalkerX86::StackwalkerX86(const SystemInfo *system_info,
const MDRawContextX86* context, const MDRawContextX86* context,
MemoryRegion* memory, MemoryRegion* memory,
const CodeModules* modules, const CodeModules* modules,
SymbolSupplier *supplier, StackFrameSymbolizer* resolver_helper)
SourceLineResolverInterface *resolver) : Stackwalker(system_info, memory, modules, resolver_helper),
: Stackwalker(system_info, memory, modules, supplier, resolver),
context_(context), context_(context),
cfi_walker_(cfi_register_map_, cfi_walker_(cfi_register_map_,
(sizeof(cfi_register_map_) / sizeof(cfi_register_map_[0]))) { (sizeof(cfi_register_map_) / sizeof(cfi_register_map_[0]))) {
@ -558,14 +557,14 @@ StackFrame *StackwalkerX86::GetCallerFrame(const CallStack *stack) {
// If the resolver has Windows stack walking information, use that. // If the resolver has Windows stack walking information, use that.
WindowsFrameInfo* windows_frame_info WindowsFrameInfo* windows_frame_info
= resolver_ ? resolver_->FindWindowsFrameInfo(last_frame) : NULL; = frame_symbolizer_->FindWindowsFrameInfo(last_frame);
if (windows_frame_info) if (windows_frame_info)
new_frame.reset(GetCallerByWindowsFrameInfo(frames, windows_frame_info)); new_frame.reset(GetCallerByWindowsFrameInfo(frames, windows_frame_info));
// If the resolver has DWARF CFI information, use that. // If the resolver has DWARF CFI information, use that.
if (!new_frame.get()) { if (!new_frame.get()) {
CFIFrameInfo* cfi_frame_info = CFIFrameInfo* cfi_frame_info =
resolver_ ? resolver_->FindCFIFrameInfo(last_frame) : NULL; frame_symbolizer_->FindCFIFrameInfo(last_frame);
if (cfi_frame_info) if (cfi_frame_info)
new_frame.reset(GetCallerByCFIFrameInfo(frames, cfi_frame_info)); new_frame.reset(GetCallerByCFIFrameInfo(frames, cfi_frame_info));
} }

View file

@ -40,6 +40,7 @@
#ifndef PROCESSOR_STACKWALKER_X86_H__ #ifndef PROCESSOR_STACKWALKER_X86_H__
#define PROCESSOR_STACKWALKER_X86_H__ #define PROCESSOR_STACKWALKER_X86_H__
#include <vector>
#include "google_breakpad/common/breakpad_types.h" #include "google_breakpad/common/breakpad_types.h"
#include "google_breakpad/common/minidump_format.h" #include "google_breakpad/common/minidump_format.h"
@ -62,8 +63,7 @@ class StackwalkerX86 : public Stackwalker {
const MDRawContextX86* context, const MDRawContextX86* context,
MemoryRegion* memory, MemoryRegion* memory,
const CodeModules* modules, const CodeModules* modules,
SymbolSupplier *supplier, StackFrameSymbolizer* frame_symbolizer);
SourceLineResolverInterface *resolver);
private: private:
// A STACK CFI-driven frame walker for the X86. // A STACK CFI-driven frame walker for the X86.

View file

@ -48,6 +48,7 @@
using google_breakpad::BasicSourceLineResolver; using google_breakpad::BasicSourceLineResolver;
using google_breakpad::CallStack; using google_breakpad::CallStack;
using google_breakpad::StackFrameSymbolizer;
using google_breakpad::StackFrame; using google_breakpad::StackFrame;
using google_breakpad::StackFrameX86; using google_breakpad::StackFrameX86;
using google_breakpad::StackwalkerX86; using google_breakpad::StackwalkerX86;
@ -148,8 +149,9 @@ TEST_F(SanityCheck, NoResolver) {
raw_context.eip = 0x40000200; raw_context.eip = 0x40000200;
raw_context.ebp = 0x80000000; raw_context.ebp = 0x80000000;
StackFrameSymbolizer frame_symbolizer(NULL, NULL);
StackwalkerX86 walker(&system_info, &raw_context, &stack_region, &modules, StackwalkerX86 walker(&system_info, &raw_context, &stack_region, &modules,
NULL, NULL); &frame_symbolizer);
// This should succeed, even without a resolver or supplier. // This should succeed, even without a resolver or supplier.
ASSERT_TRUE(walker.Walk(&call_stack)); ASSERT_TRUE(walker.Walk(&call_stack));
frames = call_stack.frames(); frames = call_stack.frames();
@ -168,8 +170,9 @@ TEST_F(GetContextFrame, Simple) {
raw_context.eip = 0x40000200; raw_context.eip = 0x40000200;
raw_context.ebp = 0x80000000; raw_context.ebp = 0x80000000;
StackFrameSymbolizer frame_symbolizer(&supplier, &resolver);
StackwalkerX86 walker(&system_info, &raw_context, &stack_region, &modules, StackwalkerX86 walker(&system_info, &raw_context, &stack_region, &modules,
&supplier, &resolver); &frame_symbolizer);
ASSERT_TRUE(walker.Walk(&call_stack)); ASSERT_TRUE(walker.Walk(&call_stack));
frames = call_stack.frames(); frames = call_stack.frames();
StackFrameX86 *frame = static_cast<StackFrameX86 *>(frames->at(0)); StackFrameX86 *frame = static_cast<StackFrameX86 *>(frames->at(0));
@ -200,8 +203,9 @@ TEST_F(GetCallerFrame, Traditional) {
raw_context.esp = stack_section.start().Value(); raw_context.esp = stack_section.start().Value();
raw_context.ebp = frame0_ebp.Value(); raw_context.ebp = frame0_ebp.Value();
StackFrameSymbolizer frame_symbolizer(&supplier, &resolver);
StackwalkerX86 walker(&system_info, &raw_context, &stack_region, &modules, StackwalkerX86 walker(&system_info, &raw_context, &stack_region, &modules,
&supplier, &resolver); &frame_symbolizer);
ASSERT_TRUE(walker.Walk(&call_stack)); ASSERT_TRUE(walker.Walk(&call_stack));
frames = call_stack.frames(); frames = call_stack.frames();
ASSERT_EQ(2U, frames->size()); ASSERT_EQ(2U, frames->size());
@ -255,8 +259,9 @@ TEST_F(GetCallerFrame, TraditionalScan) {
// for something that looks like a return address. // for something that looks like a return address.
raw_context.ebp = 0xd43eed6e; raw_context.ebp = 0xd43eed6e;
StackFrameSymbolizer frame_symbolizer(&supplier, &resolver);
StackwalkerX86 walker(&system_info, &raw_context, &stack_region, &modules, StackwalkerX86 walker(&system_info, &raw_context, &stack_region, &modules,
&supplier, &resolver); &frame_symbolizer);
ASSERT_TRUE(walker.Walk(&call_stack)); ASSERT_TRUE(walker.Walk(&call_stack));
frames = call_stack.frames(); frames = call_stack.frames();
ASSERT_EQ(2U, frames->size()); ASSERT_EQ(2U, frames->size());
@ -316,8 +321,9 @@ TEST_F(GetCallerFrame, TraditionalScanLongWay) {
// for something that looks like a return address. // for something that looks like a return address.
raw_context.ebp = 0xd43eed6e; raw_context.ebp = 0xd43eed6e;
StackFrameSymbolizer frame_symbolizer(&supplier, &resolver);
StackwalkerX86 walker(&system_info, &raw_context, &stack_region, &modules, StackwalkerX86 walker(&system_info, &raw_context, &stack_region, &modules,
&supplier, &resolver); &frame_symbolizer);
ASSERT_TRUE(walker.Walk(&call_stack)); ASSERT_TRUE(walker.Walk(&call_stack));
frames = call_stack.frames(); frames = call_stack.frames();
ASSERT_EQ(2U, frames->size()); ASSERT_EQ(2U, frames->size());
@ -387,8 +393,9 @@ TEST_F(GetCallerFrame, WindowsFrameData) {
raw_context.esp = stack_section.start().Value(); raw_context.esp = stack_section.start().Value();
raw_context.ebp = 0xf052c1de; // should not be needed to walk frame raw_context.ebp = 0xf052c1de; // should not be needed to walk frame
StackFrameSymbolizer frame_symbolizer(&supplier, &resolver);
StackwalkerX86 walker(&system_info, &raw_context, &stack_region, &modules, StackwalkerX86 walker(&system_info, &raw_context, &stack_region, &modules,
&supplier, &resolver); &frame_symbolizer);
ASSERT_TRUE(walker.Walk(&call_stack)); ASSERT_TRUE(walker.Walk(&call_stack));
frames = call_stack.frames(); frames = call_stack.frames();
ASSERT_EQ(2U, frames->size()); ASSERT_EQ(2U, frames->size());
@ -458,8 +465,9 @@ TEST_F(GetCallerFrame, WindowsFrameDataAligned) {
raw_context.esp = stack_section.start().Value(); raw_context.esp = stack_section.start().Value();
raw_context.ebp = 0xf052c1de; // should not be needed to walk frame raw_context.ebp = 0xf052c1de; // should not be needed to walk frame
StackFrameSymbolizer frame_symbolizer(&supplier, &resolver);
StackwalkerX86 walker(&system_info, &raw_context, &stack_region, &modules, StackwalkerX86 walker(&system_info, &raw_context, &stack_region, &modules,
&supplier, &resolver); &frame_symbolizer);
ASSERT_TRUE(walker.Walk(&call_stack)); ASSERT_TRUE(walker.Walk(&call_stack));
frames = call_stack.frames(); frames = call_stack.frames();
ASSERT_EQ(2U, frames->size()); ASSERT_EQ(2U, frames->size());
@ -540,8 +548,9 @@ TEST_F(GetCallerFrame, WindowsFrameDataParameterSize) {
raw_context.esp = stack_section.start().Value(); raw_context.esp = stack_section.start().Value();
raw_context.ebp = frame0_ebp.Value(); raw_context.ebp = frame0_ebp.Value();
StackFrameSymbolizer frame_symbolizer(&supplier, &resolver);
StackwalkerX86 walker(&system_info, &raw_context, &stack_region, &modules, StackwalkerX86 walker(&system_info, &raw_context, &stack_region, &modules,
&supplier, &resolver); &frame_symbolizer);
ASSERT_TRUE(walker.Walk(&call_stack)); ASSERT_TRUE(walker.Walk(&call_stack));
frames = call_stack.frames(); frames = call_stack.frames();
ASSERT_EQ(3U, frames->size()); ASSERT_EQ(3U, frames->size());
@ -634,8 +643,9 @@ TEST_F(GetCallerFrame, WindowsFrameDataScan) {
raw_context.esp = stack_section.start().Value(); raw_context.esp = stack_section.start().Value();
raw_context.ebp = 0x2ae314cd; // should not be needed to walk frame raw_context.ebp = 0x2ae314cd; // should not be needed to walk frame
StackFrameSymbolizer frame_symbolizer(&supplier, &resolver);
StackwalkerX86 walker(&system_info, &raw_context, &stack_region, &modules, StackwalkerX86 walker(&system_info, &raw_context, &stack_region, &modules,
&supplier, &resolver); &frame_symbolizer);
ASSERT_TRUE(walker.Walk(&call_stack)); ASSERT_TRUE(walker.Walk(&call_stack));
frames = call_stack.frames(); frames = call_stack.frames();
ASSERT_EQ(2U, frames->size()); ASSERT_EQ(2U, frames->size());
@ -717,8 +727,9 @@ TEST_F(GetCallerFrame, WindowsFrameDataBadEIPScan) {
raw_context.esp = stack_section.start().Value(); raw_context.esp = stack_section.start().Value();
raw_context.ebp = frame0_ebp.Value(); raw_context.ebp = frame0_ebp.Value();
StackFrameSymbolizer frame_symbolizer(&supplier, &resolver);
StackwalkerX86 walker(&system_info, &raw_context, &stack_region, &modules, StackwalkerX86 walker(&system_info, &raw_context, &stack_region, &modules,
&supplier, &resolver); &frame_symbolizer);
ASSERT_TRUE(walker.Walk(&call_stack)); ASSERT_TRUE(walker.Walk(&call_stack));
frames = call_stack.frames(); frames = call_stack.frames();
ASSERT_EQ(2U, frames->size()); ASSERT_EQ(2U, frames->size());
@ -784,8 +795,9 @@ TEST_F(GetCallerFrame, WindowsFPOUnchangedEBP) {
// Frame pointer unchanged from caller. // Frame pointer unchanged from caller.
raw_context.ebp = frame1_ebp.Value(); raw_context.ebp = frame1_ebp.Value();
StackFrameSymbolizer frame_symbolizer(&supplier, &resolver);
StackwalkerX86 walker(&system_info, &raw_context, &stack_region, &modules, StackwalkerX86 walker(&system_info, &raw_context, &stack_region, &modules,
&supplier, &resolver); &frame_symbolizer);
ASSERT_TRUE(walker.Walk(&call_stack)); ASSERT_TRUE(walker.Walk(&call_stack));
frames = call_stack.frames(); frames = call_stack.frames();
ASSERT_EQ(2U, frames->size()); ASSERT_EQ(2U, frames->size());
@ -860,8 +872,9 @@ TEST_F(GetCallerFrame, WindowsFPOUsedEBP) {
// RaisedByTheAliens uses %ebp for its own mysterious purposes. // RaisedByTheAliens uses %ebp for its own mysterious purposes.
raw_context.ebp = 0xecbdd1a5; raw_context.ebp = 0xecbdd1a5;
StackFrameSymbolizer frame_symbolizer(&supplier, &resolver);
StackwalkerX86 walker(&system_info, &raw_context, &stack_region, &modules, StackwalkerX86 walker(&system_info, &raw_context, &stack_region, &modules,
&supplier, &resolver); &frame_symbolizer);
ASSERT_TRUE(walker.Walk(&call_stack)); ASSERT_TRUE(walker.Walk(&call_stack));
frames = call_stack.frames(); frames = call_stack.frames();
ASSERT_EQ(2U, frames->size()); ASSERT_EQ(2U, frames->size());
@ -997,8 +1010,9 @@ TEST_F(GetCallerFrame, WindowsFPOSystemCall) {
ASSERT_TRUE(raw_context.esp == frame0_esp.Value()); ASSERT_TRUE(raw_context.esp == frame0_esp.Value());
raw_context.ebp = frame1_ebp.Value(); raw_context.ebp = frame1_ebp.Value();
StackFrameSymbolizer frame_symbolizer(&supplier, &resolver);
StackwalkerX86 walker(&system_info, &raw_context, &stack_region, &modules, StackwalkerX86 walker(&system_info, &raw_context, &stack_region, &modules,
&supplier, &resolver); &frame_symbolizer);
ASSERT_TRUE(walker.Walk(&call_stack)); ASSERT_TRUE(walker.Walk(&call_stack));
frames = call_stack.frames(); frames = call_stack.frames();
@ -1097,8 +1111,9 @@ struct CFIFixture: public StackwalkerX86Fixture {
RegionFromSection(); RegionFromSection();
raw_context.esp = stack_section.start().Value(); raw_context.esp = stack_section.start().Value();
StackFrameSymbolizer frame_symbolizer(&supplier, &resolver);
StackwalkerX86 walker(&system_info, &raw_context, &stack_region, &modules, StackwalkerX86 walker(&system_info, &raw_context, &stack_region, &modules,
&supplier, &resolver); &frame_symbolizer);
ASSERT_TRUE(walker.Walk(&call_stack)); ASSERT_TRUE(walker.Walk(&call_stack));
frames = call_stack.frames(); frames = call_stack.frames();
ASSERT_EQ(2U, frames->size()); ASSERT_EQ(2U, frames->size());