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