16ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh/* 26ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh * Copyright (C) 2012 The Android Open Source Project 36ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh * All rights reserved. 46ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh * 56ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh * Redistribution and use in source and binary forms, with or without 66ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh * modification, are permitted provided that the following conditions 76ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh * are met: 86ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh * * Redistributions of source code must retain the above copyright 96ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh * notice, this list of conditions and the following disclaimer. 106ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh * * Redistributions in binary form must reproduce the above copyright 116ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh * notice, this list of conditions and the following disclaimer in 126ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh * the documentation and/or other materials provided with the 136ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh * distribution. 146ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh * 156ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 166ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 176ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS 186ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 196ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, 206ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, 216ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS 226ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED 236ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 246ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT 256ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 266ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh * SUCH DAMAGE. 276ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh */ 286ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh#ifndef _LINK_H_ 296ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh#define _LINK_H_ 306ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh 316ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh#include <sys/types.h> 326ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh#include <elf.h> 336ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh 346ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh__BEGIN_DECLS 356ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh 366ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh/* bionic is currently only 32-bit. */ 376ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh#define ElfW(type) Elf32_##type 386ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh 396ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsiehstruct dl_phdr_info { 406ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh ElfW(Addr) dlpi_addr; 416ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh const char* dlpi_name; 426ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh const ElfW(Phdr)* dlpi_phdr; 436ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh ElfW(Half) dlpi_phnum; 446ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh}; 456ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh 466ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh#ifdef __arm__ 476ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsiehtypedef long unsigned int* _Unwind_Ptr; 486ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh_Unwind_Ptr dl_unwind_find_exidx(_Unwind_Ptr pc, int* pcount); 496ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh#else 506ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsiehint dl_iterate_phdr(int (*cb)(struct dl_phdr_info*, size_t, void*), void*); 516ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh#endif 526ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh 536ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh__END_DECLS 546ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh 556ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh#endif /* _LINK_H_ */ 56