diff options
author | Andreas Gampe <agampe@google.com> | 2019-06-17 14:38:45 -0700 |
---|---|---|
committer | Andreas Gampe <agampe@google.com> | 2019-06-20 11:43:09 -0700 |
commit | 3ffc0193084c1ae3802f7eb38deb0c6e7d3bf0f9 (patch) | |
tree | 1dfb7d8d5c0eccdf2d19f0dc0477c14f9bfac3e9 /tools/lock_agent | |
parent | afb660cb4928a9ffd1581ca1383219df521f415b (diff) |
LockAgent: Add crasher binary
Add a helper that crashes with a given message.
Test: manual
Change-Id: I77e249484e65e7532045d0f8cc53ceb18d94bff5
Diffstat (limited to 'tools/lock_agent')
-rw-r--r-- | tools/lock_agent/Android.bp | 11 | ||||
-rw-r--r-- | tools/lock_agent/crasher.cpp | 30 |
2 files changed, 41 insertions, 0 deletions
diff --git a/tools/lock_agent/Android.bp b/tools/lock_agent/Android.bp index c54e5b57ccc5..2125ad682bb6 100644 --- a/tools/lock_agent/Android.bp +++ b/tools/lock_agent/Android.bp @@ -51,11 +51,22 @@ java_library { installable: true, } +cc_binary { + name: "lockagent_crasher", + srcs: ["crasher.cpp"], + static_libs: ["libbase_ndk"], + shared_libs: ["liblog"], + sdk_version: "current", + stl: "c++_static", + compile_multilib: "first", +} + sh_binary { name: "start_with_lockagent", src: "start_with_lockagent.sh", required: [ "liblockagent", "lockagent", + "lockagent_crasher", ], } diff --git a/tools/lock_agent/crasher.cpp b/tools/lock_agent/crasher.cpp new file mode 100644 index 000000000000..2829d6d9447c --- /dev/null +++ b/tools/lock_agent/crasher.cpp @@ -0,0 +1,30 @@ +/* + * Copyright (C) 2019 The Android Open Source Project + * + * 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 <android-base/logging.h> + +// Simple binary that will just crash with the message given as the first parameter. +// +// This is helpful in cases the caller does not want to crash itself, e.g., fork+crash +// instead, as LOG(FATAL) might not be safe (for example in a multi-threaded environment). +int main(int argc, char *argv[]) { + if (argc != 2) { + LOG(FATAL) << "Need one argument for abort message"; + __builtin_unreachable(); + } + LOG(FATAL) << argv[1]; + __builtin_unreachable(); +} |