103f75e22ad9ea75dc536d199c3d11a98884be314Shih-wei Liao/*
203f75e22ad9ea75dc536d199c3d11a98884be314Shih-wei Liao * Copyright 2011, The Android Open Source Project
303f75e22ad9ea75dc536d199c3d11a98884be314Shih-wei Liao *
403f75e22ad9ea75dc536d199c3d11a98884be314Shih-wei Liao * Licensed under the Apache License, Version 2.0 (the "License");
503f75e22ad9ea75dc536d199c3d11a98884be314Shih-wei Liao * you may not use this file except in compliance with the License.
603f75e22ad9ea75dc536d199c3d11a98884be314Shih-wei Liao * You may obtain a copy of the License at
703f75e22ad9ea75dc536d199c3d11a98884be314Shih-wei Liao *
803f75e22ad9ea75dc536d199c3d11a98884be314Shih-wei Liao *     http://www.apache.org/licenses/LICENSE-2.0
903f75e22ad9ea75dc536d199c3d11a98884be314Shih-wei Liao *
1003f75e22ad9ea75dc536d199c3d11a98884be314Shih-wei Liao * Unless required by applicable law or agreed to in writing, software
1103f75e22ad9ea75dc536d199c3d11a98884be314Shih-wei Liao * distributed under the License is distributed on an "AS IS" BASIS,
1203f75e22ad9ea75dc536d199c3d11a98884be314Shih-wei Liao * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1303f75e22ad9ea75dc536d199c3d11a98884be314Shih-wei Liao * See the License for the specific language governing permissions and
1403f75e22ad9ea75dc536d199c3d11a98884be314Shih-wei Liao * limitations under the License.
1503f75e22ad9ea75dc536d199c3d11a98884be314Shih-wei Liao */
1603f75e22ad9ea75dc536d199c3d11a98884be314Shih-wei Liao
17ff5aa61c184ca2e80b1bce5c20dbc0028296f69dLogan Chien#include "rsl_assert.h"
18ff5aa61c184ca2e80b1bce5c20dbc0028296f69dLogan Chien
19ff5aa61c184ca2e80b1bce5c20dbc0028296f69dLogan Chien#include <llvm/Support/raw_ostream.h>
20ff5aa61c184ca2e80b1bce5c20dbc0028296f69dLogan Chien
21ff5aa61c184ca2e80b1bce5c20dbc0028296f69dLogan Chien#include <stdlib.h>
22ff5aa61c184ca2e80b1bce5c20dbc0028296f69dLogan Chien
23e0766885c735fd9872cf64295ed5dfb512f4f65fAndrew Hsieh#if !defined(__HOST__)
24ff5aa61c184ca2e80b1bce5c20dbc0028296f69dLogan Chien#define LOG_TAG "bcc"
25ff5aa61c184ca2e80b1bce5c20dbc0028296f69dLogan Chien#include <cutils/log.h>
26ff5aa61c184ca2e80b1bce5c20dbc0028296f69dLogan Chien#endif
27ff5aa61c184ca2e80b1bce5c20dbc0028296f69dLogan Chien
28ff5aa61c184ca2e80b1bce5c20dbc0028296f69dLogan Chienextern "C" void ASSERT_FAILED(char const *file,
29ff5aa61c184ca2e80b1bce5c20dbc0028296f69dLogan Chien                              unsigned line,
30ff5aa61c184ca2e80b1bce5c20dbc0028296f69dLogan Chien                              char const *expr) {
31e0766885c735fd9872cf64295ed5dfb512f4f65fAndrew Hsieh#if defined(__HOST__)
32ff5aa61c184ca2e80b1bce5c20dbc0028296f69dLogan Chien  llvm::errs() << "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n";
33ff5aa61c184ca2e80b1bce5c20dbc0028296f69dLogan Chien  llvm::errs() << "rslAssert [" << file << ":" << line << "] " << expr << "\n";
34ff5aa61c184ca2e80b1bce5c20dbc0028296f69dLogan Chien  llvm::errs() << "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n";
35ff5aa61c184ca2e80b1bce5c20dbc0028296f69dLogan Chien#else
36c9acf1fd2d58985b95793374b15cc3bdd11e271bSteve Block  ALOGE("!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n");
37c9acf1fd2d58985b95793374b15cc3bdd11e271bSteve Block  ALOGE("rslAssert [%s:%d] %s\n", file, line, expr);
38c9acf1fd2d58985b95793374b15cc3bdd11e271bSteve Block  ALOGE("!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n");
39ff5aa61c184ca2e80b1bce5c20dbc0028296f69dLogan Chien#endif
40ff5aa61c184ca2e80b1bce5c20dbc0028296f69dLogan Chien
41ff5aa61c184ca2e80b1bce5c20dbc0028296f69dLogan Chien  abort();
42ff5aa61c184ca2e80b1bce5c20dbc0028296f69dLogan Chien}
43