15cd605f62b687b22ff44a9de096b5f297eed74afGlenn Kasten/* 25cd605f62b687b22ff44a9de096b5f297eed74afGlenn Kasten * Copyright (C) 2011 The Android Open Source Project 35cd605f62b687b22ff44a9de096b5f297eed74afGlenn Kasten * 45cd605f62b687b22ff44a9de096b5f297eed74afGlenn Kasten * Licensed under the Apache License, Version 2.0 (the "License"); 55cd605f62b687b22ff44a9de096b5f297eed74afGlenn Kasten * you may not use this file except in compliance with the License. 65cd605f62b687b22ff44a9de096b5f297eed74afGlenn Kasten * You may obtain a copy of the License at 75cd605f62b687b22ff44a9de096b5f297eed74afGlenn Kasten * 85cd605f62b687b22ff44a9de096b5f297eed74afGlenn Kasten * http://www.apache.org/licenses/LICENSE-2.0 95cd605f62b687b22ff44a9de096b5f297eed74afGlenn Kasten * 105cd605f62b687b22ff44a9de096b5f297eed74afGlenn Kasten * Unless required by applicable law or agreed to in writing, software 115cd605f62b687b22ff44a9de096b5f297eed74afGlenn Kasten * distributed under the License is distributed on an "AS IS" BASIS, 125cd605f62b687b22ff44a9de096b5f297eed74afGlenn Kasten * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 135cd605f62b687b22ff44a9de096b5f297eed74afGlenn Kasten * See the License for the specific language governing permissions and 145cd605f62b687b22ff44a9de096b5f297eed74afGlenn Kasten * limitations under the License. 155cd605f62b687b22ff44a9de096b5f297eed74afGlenn Kasten */ 165cd605f62b687b22ff44a9de096b5f297eed74afGlenn Kasten 175cd605f62b687b22ff44a9de096b5f297eed74afGlenn Kasten// Replace bionic/libc/stdlib/assert.c which logs to stderr with our version which does LOGF. 185cd605f62b687b22ff44a9de096b5f297eed74afGlenn Kasten// To be effective, add CFLAGS += -UNDEBUG and explicitly link in assert.c in all build modules. 195cd605f62b687b22ff44a9de096b5f297eed74afGlenn Kasten 205cd605f62b687b22ff44a9de096b5f297eed74afGlenn Kasten#include <utils/Log.h> 215cd605f62b687b22ff44a9de096b5f297eed74afGlenn Kasten 225cd605f62b687b22ff44a9de096b5f297eed74afGlenn Kastenvoid __assert(const char *file, int line, const char *failedexpr) 235cd605f62b687b22ff44a9de096b5f297eed74afGlenn Kasten{ 245cd605f62b687b22ff44a9de096b5f297eed74afGlenn Kasten LOG_ALWAYS_FATAL("assertion \"%s\" failed: file \"%s\", line %d", failedexpr, file, line); 255cd605f62b687b22ff44a9de096b5f297eed74afGlenn Kasten // not reached 265cd605f62b687b22ff44a9de096b5f297eed74afGlenn Kasten} 275cd605f62b687b22ff44a9de096b5f297eed74afGlenn Kasten 285cd605f62b687b22ff44a9de096b5f297eed74afGlenn Kastenvoid __assert2(const char *file, int line, const char *func, const char *failedexpr) 295cd605f62b687b22ff44a9de096b5f297eed74afGlenn Kasten{ 305cd605f62b687b22ff44a9de096b5f297eed74afGlenn Kasten LOG_ALWAYS_FATAL("assertion \"%s\" failed: file \"%s\", line %d, function \"%s\"", 315cd605f62b687b22ff44a9de096b5f297eed74afGlenn Kasten failedexpr, file, line, func); 325cd605f62b687b22ff44a9de096b5f297eed74afGlenn Kasten // not reached 335cd605f62b687b22ff44a9de096b5f297eed74afGlenn Kasten} 34