Refactor CrashpadHandlerMain into its own target

Currently crashpad's CrashpadHandlerMain can not be overridden. Change
it to be in its own target so that implementers can override it if they
so choose.

Bug: chromium:973167
Change-Id: Ie44eac24c54948154ff550072560732faf621739
Reviewed-on: https://chromium-review.googlesource.com/c/crashpad/crashpad/+/1682932
Commit-Queue: Vlad Tsyrklevich <vtsyrklevich@chromium.org>
Reviewed-by: Joshua Peraza <jperaza@chromium.org>
This commit is contained in:
Vlad Tsyrklevich 2019-07-15 10:23:10 -07:00 committed by Commit Bot
parent 137506bf1e
commit b946fdd438
3 changed files with 47 additions and 12 deletions

View File

@ -88,6 +88,20 @@ static_library("handler") {
}
}
if (crashpad_is_android) {
# CrashpadHandlerMain is defined in a separate target so that it can be
# overriden by implementers
source_set("crashpad_handler_main") {
sources = [
"crashpad_handler_main.cc",
]
deps = [
":handler",
]
}
}
source_set("handler_test") {
testonly = true

View File

@ -0,0 +1,33 @@
// Copyright 2019 The Crashpad Authors. All rights reserved.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
#include "handler/handler_main.h"
namespace crashpad {
extern "C" {
//! \brief The `main()` entry point for Android libraries.
//!
//! This symbol is the entry point for crashpad when it is dynamically loaded
//! using /system/bin/linker.
//!
//! \sa CrashpadClient::StartHandlerWithLinkerAtCrash()
__attribute__((visibility("default"), used)) int CrashpadHandlerMain(
int argc,
char* argv[]) {
return HandlerMain(argc, argv, nullptr);
}
} // extern "C"
} // namespace crashpad

View File

@ -506,18 +506,6 @@ class ScopedStoppable {
} // namespace
#if defined(OS_ANDROID)
extern "C" {
__attribute__((visibility("default"), used)) int CrashpadHandlerMain(
int argc,
char* argv[]) {
return HandlerMain(argc, argv, nullptr);
}
} // extern "C"
#endif // OS_ANDROID
int HandlerMain(int argc,
char* argv[],
const UserStreamDataSources* user_stream_sources) {