193c0f5ee00d1357247fda333c9d49c8673c9c83bJosh Gao/* 293c0f5ee00d1357247fda333c9d49c8673c9c83bJosh Gao * Copyright (C) 2015 The Android Open Source Project 393c0f5ee00d1357247fda333c9d49c8673c9c83bJosh Gao * All rights reserved. 493c0f5ee00d1357247fda333c9d49c8673c9c83bJosh Gao * 593c0f5ee00d1357247fda333c9d49c8673c9c83bJosh Gao * Redistribution and use in source and binary forms, with or without 693c0f5ee00d1357247fda333c9d49c8673c9c83bJosh Gao * modification, are permitted provided that the following conditions 793c0f5ee00d1357247fda333c9d49c8673c9c83bJosh Gao * are met: 893c0f5ee00d1357247fda333c9d49c8673c9c83bJosh Gao * * Redistributions of source code must retain the above copyright 993c0f5ee00d1357247fda333c9d49c8673c9c83bJosh Gao * notice, this list of conditions and the following disclaimer. 1093c0f5ee00d1357247fda333c9d49c8673c9c83bJosh Gao * * Redistributions in binary form must reproduce the above copyright 1193c0f5ee00d1357247fda333c9d49c8673c9c83bJosh Gao * notice, this list of conditions and the following disclaimer in 1293c0f5ee00d1357247fda333c9d49c8673c9c83bJosh Gao * the documentation and/or other materials provided with the 1393c0f5ee00d1357247fda333c9d49c8673c9c83bJosh Gao * distribution. 1493c0f5ee00d1357247fda333c9d49c8673c9c83bJosh Gao * 1593c0f5ee00d1357247fda333c9d49c8673c9c83bJosh Gao * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 1693c0f5ee00d1357247fda333c9d49c8673c9c83bJosh Gao * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 1793c0f5ee00d1357247fda333c9d49c8673c9c83bJosh Gao * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS 1893c0f5ee00d1357247fda333c9d49c8673c9c83bJosh Gao * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 1993c0f5ee00d1357247fda333c9d49c8673c9c83bJosh Gao * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, 2093c0f5ee00d1357247fda333c9d49c8673c9c83bJosh Gao * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, 2193c0f5ee00d1357247fda333c9d49c8673c9c83bJosh Gao * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS 2293c0f5ee00d1357247fda333c9d49c8673c9c83bJosh Gao * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED 2393c0f5ee00d1357247fda333c9d49c8673c9c83bJosh Gao * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 2493c0f5ee00d1357247fda333c9d49c8673c9c83bJosh Gao * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT 2593c0f5ee00d1357247fda333c9d49c8673c9c83bJosh Gao * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 2693c0f5ee00d1357247fda333c9d49c8673c9c83bJosh Gao * SUCH DAMAGE. 2793c0f5ee00d1357247fda333c9d49c8673c9c83bJosh Gao */ 2812393862e55b9ab28dd29ae16fbdf498371726a7Elliott Hughes 2993c0f5ee00d1357247fda333c9d49c8673c9c83bJosh Gao#ifndef _PRIVATE_BIONIC_GLOBALS_H 3093c0f5ee00d1357247fda333c9d49c8673c9c83bJosh Gao#define _PRIVATE_BIONIC_GLOBALS_H 3193c0f5ee00d1357247fda333c9d49c8673c9c83bJosh Gao 3293c0f5ee00d1357247fda333c9d49c8673c9c83bJosh Gao#include <sys/cdefs.h> 3312393862e55b9ab28dd29ae16fbdf498371726a7Elliott Hughes 343c8fc2fea9dac044f4903b0c315b5cda1c1f5301Josh Gao#include "private/bionic_malloc_dispatch.h" 3593c0f5ee00d1357247fda333c9d49c8673c9c83bJosh Gao#include "private/bionic_vdso.h" 3693c0f5ee00d1357247fda333c9d49c8673c9c83bJosh Gao#include "private/WriteProtected.h" 3793c0f5ee00d1357247fda333c9d49c8673c9c83bJosh Gao 3893c0f5ee00d1357247fda333c9d49c8673c9c83bJosh Gaostruct libc_globals { 3993c0f5ee00d1357247fda333c9d49c8673c9c83bJosh Gao vdso_entry vdso[VDSO_END]; 40fe9d0ed6cb10d5403e54d2dd12628a0ec345ae6eJosh Gao long setjmp_cookie; 4163860cb8fd1adf3f679b9b4ad876323a8d65cd9dChristopher Ferris MallocDispatch malloc_dispatch; 4293c0f5ee00d1357247fda333c9d49c8673c9c83bJosh Gao}; 4393c0f5ee00d1357247fda333c9d49c8673c9c83bJosh Gao 4493c0f5ee00d1357247fda333c9d49c8673c9c83bJosh Gao__LIBC_HIDDEN__ extern WriteProtected<libc_globals> __libc_globals; 4593c0f5ee00d1357247fda333c9d49c8673c9c83bJosh Gao 4693c0f5ee00d1357247fda333c9d49c8673c9c83bJosh Gaoclass KernelArgumentBlock; 4712393862e55b9ab28dd29ae16fbdf498371726a7Elliott Hughes__LIBC_HIDDEN__ void __libc_init_global_stack_chk_guard(KernelArgumentBlock& args); 483c8fc2fea9dac044f4903b0c315b5cda1c1f5301Josh Gao__LIBC_HIDDEN__ void __libc_init_malloc(libc_globals* globals); 4912393862e55b9ab28dd29ae16fbdf498371726a7Elliott Hughes__LIBC_HIDDEN__ void __libc_init_setjmp_cookie(libc_globals* globals, KernelArgumentBlock& args); 5012393862e55b9ab28dd29ae16fbdf498371726a7Elliott Hughes__LIBC_HIDDEN__ void __libc_init_vdso(libc_globals* globals, KernelArgumentBlock& args); 5112393862e55b9ab28dd29ae16fbdf498371726a7Elliott Hughes 529ce09e423f24823d52f19ab8247e078977100132Mingwei Shi#if defined(__i386__) 539ce09e423f24823d52f19ab8247e078977100132Mingwei Shi__LIBC_HIDDEN__ extern void* __libc_sysinfo; 549ce09e423f24823d52f19ab8247e078977100132Mingwei Shi__LIBC_HIDDEN__ void __libc_init_sysinfo(KernelArgumentBlock& args); 559ce09e423f24823d52f19ab8247e078977100132Mingwei Shi#endif 569ce09e423f24823d52f19ab8247e078977100132Mingwei Shi 5793c0f5ee00d1357247fda333c9d49c8673c9c83bJosh Gao#endif 58