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
This commit is contained in:
mark@chromium.org 2012-08-10 15:41:19 +00:00
parent 43c933d7f8
commit 066d09538f
2 changed files with 12 additions and 0 deletions

View file

@ -323,6 +323,16 @@ bool ExceptionHandler::HandleSignal(int sig, siginfo_t* info, void* uc) {
return GenerateDump(&context); 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. // This function may run in a compromised context: see the top of the file.
bool ExceptionHandler::GenerateDump(CrashContext *context) { bool ExceptionHandler::GenerateDump(CrashContext *context) {
if (IsOutOfProcess()) if (IsOutOfProcess())

View file

@ -193,6 +193,8 @@ class ExceptionHandler {
size_t mapping_size, size_t mapping_size,
size_t file_offset); size_t file_offset);
// Force signal handling for the specified signal.
bool SimulateSignalDelivery(int sig);
private: private:
bool InstallHandlers(); bool InstallHandlers();
void UninstallHandlers(); void UninstallHandlers();