blob: edce965e33b5089d46bcaa5e4823647ebd730814 [file] [log] [blame]
Dmitriy Ivanovf57874d2014-10-07 13:43:23 -07001/*
2 * Copyright (C) 2014 The Android Open Source Project
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16
Ian Rogerscf7f1912014-10-22 22:06:39 -070017#include <stdio.h>
18#include <stdlib.h>
19
Bilyan Borisovbb661c02016-04-04 16:27:32 +010020#ifdef ART_TARGET_ANDROID
Dmitriy Ivanovf57874d2014-10-07 13:43:23 -070021#include <android/log.h>
22#else
23#include <stdarg.h>
24#include <iostream>
25#endif
26
Dmitriy Ivanovf57874d2014-10-07 13:43:23 -070027#include "sigchain.h"
28
Andreas Gampe9d9cfa82014-11-03 20:25:24 -080029#define ATTRIBUTE_UNUSED __attribute__((__unused__))
30
Andreas Gampeba1ff842015-04-06 14:33:54 -070031// We cannot annotate the declarations, as they are not no-return in the non-dummy version.
32#pragma GCC diagnostic push
33#pragma GCC diagnostic ignored "-Wunknown-pragmas"
34#pragma GCC diagnostic ignored "-Wmissing-noreturn"
35
Dmitriy Ivanovf57874d2014-10-07 13:43:23 -070036static void log(const char* format, ...) {
37 char buf[256];
38 va_list ap;
39 va_start(ap, format);
40 vsnprintf(buf, sizeof(buf), format, ap);
Bilyan Borisovbb661c02016-04-04 16:27:32 +010041#ifdef ART_TARGET_ANDROID
Dmitriy Ivanovf57874d2014-10-07 13:43:23 -070042 __android_log_write(ANDROID_LOG_ERROR, "libsigchain", buf);
43#else
44 std::cout << buf << "\n";
45#endif
46 va_end(ap);
47}
48
Andreas Gampe277ccbd2014-11-03 21:36:10 -080049namespace art {
50
Josh Gao85a78cf2017-03-20 16:26:42 -070051extern "C" void EnsureFrontOfChain(int signal ATTRIBUTE_UNUSED) {
Mathieu Chartierd0004802014-10-15 16:59:47 -070052 log("EnsureFrontOfChain is not exported by the main executable.");
53 abort();
54}
Andreas Gampe277ccbd2014-11-03 21:36:10 -080055
Josh Gao85a78cf2017-03-20 16:26:42 -070056extern "C" void AddSpecialSignalHandlerFn(int signal ATTRIBUTE_UNUSED,
Josh Gao6b2018f2017-05-04 13:55:28 -070057 SigchainAction* sa ATTRIBUTE_UNUSED) {
Josh Gao85a78cf2017-03-20 16:26:42 -070058 log("SetSpecialSignalHandlerFn is not exported by the main executable.");
59 abort();
60}
61
62extern "C" void RemoveSpecialSignalHandlerFn(int signal ATTRIBUTE_UNUSED,
Josh Gao6b2018f2017-05-04 13:55:28 -070063 bool (*fn)(int, siginfo_t*, void*) ATTRIBUTE_UNUSED) {
Andreas Gampe03c2cc82015-05-22 18:31:50 -070064 log("SetSpecialSignalHandlerFn is not exported by the main executable.");
65 abort();
66}
67
Andreas Gampeba1ff842015-04-06 14:33:54 -070068#pragma GCC diagnostic pop
69
Andreas Gampe277ccbd2014-11-03 21:36:10 -080070} // namespace art