1 /* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ 2 /* vim: set ts=8 sts=2 et sw=2 tw=80: */ 3 4 // Copyright (c) 2006, 2011, 2012 Google Inc. 5 // All rights reserved. 6 // 7 // Redistribution and use in source and binary forms, with or without 8 // modification, are permitted provided that the following conditions are 9 // met: 10 // 11 // * Redistributions of source code must retain the above copyright 12 // notice, this list of conditions and the following disclaimer. 13 // * Redistributions in binary form must reproduce the above 14 // copyright notice, this list of conditions and the following disclaimer 15 // in the documentation and/or other materials provided with the 16 // distribution. 17 // * Neither the name of Google Inc. nor the names of its 18 // contributors may be used to endorse or promote products derived from 19 // this software without specific prior written permission. 20 // 21 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 22 // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 23 // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 24 // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 25 // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 26 // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 27 // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 28 // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 29 // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 30 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 31 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 32 33 // This file is derived from the following files in 34 // toolkit/crashreporter/google-breakpad: 35 // src/common/linux/dump_symbols.h 36 37 #ifndef LulElfExt_h 38 #define LulElfExt_h 39 40 // These two functions are the external interface to the 41 // ELF/Dwarf/EXIDX reader. 42 43 #include "LulMainInt.h" 44 45 using lul::SecMap; 46 47 namespace lul { 48 49 // Find all the unwind information in OBJ_FILE, an ELF executable 50 // or shared library, and add it to SMAP. 51 bool ReadSymbolData(const std::string& obj_file, 52 const std::vector<std::string>& debug_dirs, 53 SecMap* smap, 54 void* rx_avma, size_t rx_size, 55 void (*log)(const char*)); 56 57 // The same as ReadSymbolData, except that OBJ_FILE is assumed to 58 // point to a mapped-in image of OBJ_FILENAME. 59 bool ReadSymbolDataInternal(const uint8_t* obj_file, 60 const std::string& obj_filename, 61 const std::vector<std::string>& debug_dirs, 62 SecMap* smap, 63 void* rx_avma, size_t rx_size, 64 void (*log)(const char*)); 65 66 } // namespace lul 67 68 #endif // LulElfExt_h 69