aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authormark@chromium.org <mark@chromium.org@4c0a9323-5329-0410-9bdc-e9ce6186880e>2012-08-10 15:41:19 +0000
committermark@chromium.org <mark@chromium.org@4c0a9323-5329-0410-9bdc-e9ce6186880e>2012-08-10 15:41:19 +0000
commit066d09538f8c6c231c22fe89a4fe278e0e05acea (patch)
tree627c2fbd12ef0b21249ccde688cfa55e7fc27224 /src
parentAdding a way to create an ExceptionHandler that takes in a file descriptor (diff)
downloadbreakpad-066d09538f8c6c231c22fe89a4fe278e0e05acea.tar.xz
Make ExceptionHandler::HandleSignal() public.
Patch by Alexander Potapenko <glider@chromium.org> Review URL: https://codereview.appspot.com/6461052/ git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@1008 4c0a9323-5329-0410-9bdc-e9ce6186880e
Diffstat (limited to 'src')
-rw-r--r--src/client/linux/handler/exception_handler.cc10
-rw-r--r--src/client/linux/handler/exception_handler.h2
2 files changed, 12 insertions, 0 deletions
diff --git a/src/client/linux/handler/exception_handler.cc b/src/client/linux/handler/exception_handler.cc
index 73c3bdfb..61dc2a1a 100644
--- a/src/client/linux/handler/exception_handler.cc
+++ b/src/client/linux/handler/exception_handler.cc
@@ -323,6 +323,16 @@ bool ExceptionHandler::HandleSignal(int sig, siginfo_t* info, void* uc) {
return GenerateDump(&context);
}
+// This is a public interface to HandleSignal that allows the client to
+// generate a crash dump. This function may run in a compromised context.
+bool ExceptionHandler::SimulateSignalDelivery(int sig) {
+ siginfo_t siginfo;
+ my_memset(&siginfo, 0, sizeof(siginfo_t));
+ struct ucontext context;
+ getcontext(&context);
+ return HandleSignal(sig, &siginfo, &context);
+}
+
// This function may run in a compromised context: see the top of the file.
bool ExceptionHandler::GenerateDump(CrashContext *context) {
if (IsOutOfProcess())
diff --git a/src/client/linux/handler/exception_handler.h b/src/client/linux/handler/exception_handler.h
index c339b7dd..f66b8270 100644
--- a/src/client/linux/handler/exception_handler.h
+++ b/src/client/linux/handler/exception_handler.h
@@ -193,6 +193,8 @@ class ExceptionHandler {
size_t mapping_size,
size_t file_offset);
+ // Force signal handling for the specified signal.
+ bool SimulateSignalDelivery(int sig);
private:
bool InstallHandlers();
void UninstallHandlers();