1 /* 2 * Copyright (C) 2012 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 17 #pragma once 18 19 #define _BSD_SOURCE 20 #define _GNU_SOURCE 1 21 22 // NetBSD uses _DIAGASSERT to null-check arguments and the like, 23 // but it's clear from the number of mistakes in their assertions 24 // that they don't actually test or ship with this. 25 #define _DIAGASSERT(e) /* nothing */ 26 27 /* 28 * The following macro is used to remove const cast-away warnings 29 * from gcc -Wcast-qual; it should be used with caution because it 30 * can hide valid errors; in particular most valid uses are in 31 * situations where the API requires it, not to cast away string 32 * constants. We don't use *intptr_t on purpose here and we are 33 * explicit about unsigned long so that we don't have additional 34 * dependencies. 35 */ 36 #define __UNCONST(a) ((void *)(unsigned long)(const void *)(a)) 37 38 // TODO: we don't yet have thread-safe environment variables. 39 #define __readlockenv() 0 40 #define __unlockenv() 0 41 42 #include <sys/cdefs.h> 43 #include <stddef.h> 44 int reallocarr(void*, size_t, size_t); 45 46 #define __arraycount(a) (sizeof(a) / sizeof(a[0])) 47 48 /* Use appropriate shell depending on process's executable. */ 49 __LIBC_HIDDEN__ extern const char* __bionic_get_shell_path(); 50 #define _PATH_BSHELL __bionic_get_shell_path() 51