Home | History | Annotate | Download | only in codesighs
      1 /* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*-
      2  *
      3  * ***** BEGIN LICENSE BLOCK *****
      4  * Version: MPL 1.1/GPL 2.0/LGPL 2.1
      5  *
      6  * The contents of this file are subject to the Mozilla Public License Version
      7  * 1.1 (the "License"); you may not use this file except in compliance with
      8  * the License. You may obtain a copy of the License at
      9  * http://www.mozilla.org/MPL/
     10  *
     11  * Software distributed under the License is distributed on an "AS IS" basis,
     12  * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
     13  * for the specific language governing rights and limitations under the
     14  * License.
     15  *
     16  * The Original Code is msmap.h code, released
     17  * Oct 3, 2002.
     18  *
     19  * The Initial Developer of the Original Code is
     20  * Netscape Communications Corporation.
     21  * Portions created by the Initial Developer are Copyright (C) 2002
     22  * the Initial Developer. All Rights Reserved.
     23  *
     24  * Contributor(s):
     25  *   Garrett Arch Blythe, 03-October-2002
     26  *
     27  * Alternatively, the contents of this file may be used under the terms of
     28  * either the GNU General Public License Version 2 or later (the "GPL"), or
     29  * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
     30  * in which case the provisions of the GPL or the LGPL are applicable instead
     31  * of those above. If you wish to allow use of your version of this file only
     32  * under the terms of either the GPL or the LGPL, and not to allow others to
     33  * use your version of this file under the terms of the MPL, indicate your
     34  * decision by deleting the provisions above and replace them with the notice
     35  * and other provisions required by the GPL or the LGPL. If you do not delete
     36  * the provisions above, a recipient may use your version of this file under
     37  * the terms of any one of the MPL, the GPL or the LGPL.
     38  *
     39  * ***** END LICENSE BLOCK ***** */
     40 
     41 #if !defined __msmap_H
     42 #define __msmap_H
     43 
     44 
     45 #if defined(__cplusplus)
     46 extern "C" {
     47 #endif
     48 #if 0
     49 }
     50 #endif
     51 
     52 
     53 /*
     54 **  Used to numerically represent addresses.
     55 */
     56 typedef unsigned long address;
     57 
     58 
     59 typedef enum __enum_MSMap_SymbolScope
     60 /*
     61 **  Symbol scope.
     62 */
     63 {
     64     PUBLIC,
     65     STATIC,
     66     UNDEFINED
     67 }
     68 MSMap_SymbolScope;
     69 
     70 
     71 typedef enum __enum_MSMap_SegmentClass
     72 /*
     73 **  Segment class.
     74 */
     75 {
     76     CODE,
     77     DATA
     78 }
     79 MSMap_SegmentClass;
     80 
     81 
     82 typedef struct __struct_MSMap_Segment
     83 /*
     84 **  Information about a segment.
     85 */
     86 {
     87     address mPrefix;
     88     address mOffset;
     89     address mLength;
     90     address mUsed;
     91     char* mSegment;
     92     MSMap_SegmentClass mClass;
     93 }
     94 MSMap_Segment;
     95 
     96 
     97 typedef struct __struct_MSMap_Symbol
     98 /*
     99 **  Information about a symbol.
    100 */
    101 {
    102     address mPrefix;
    103     address mOffset;
    104     char* mSymbol;
    105     address mRVABase;
    106     char* mObject;
    107     MSMap_SymbolScope mScope;
    108     unsigned mSymDBSize;
    109     MSMap_Segment* mSection;
    110 }
    111 MSMap_Symbol;
    112 
    113 
    114 typedef struct __struct_MSMap_Module
    115 /*
    116 **  Top level container of the map data.
    117 */
    118 {
    119     char* mModule;
    120     time_t mTimestamp;
    121     address mPreferredLoadAddress;
    122     MSMap_Segment* mSegments;
    123     unsigned mSegmentCount;
    124     unsigned mSegmentCapacity;
    125     address mEntryPrefix;
    126     address mEntryOffset;
    127     MSMap_Symbol* mSymbols;
    128     unsigned mSymbolCount;
    129     unsigned mSymbolCapacity;
    130 }
    131 MSMap_Module;
    132 
    133 
    134 /*
    135 **  How much to grow our arrays by.
    136 */
    137 #define MSMAP_SEGMENT_GROWBY 0x10
    138 #define MSMAP_SYMBOL_GROWBY  0x100
    139 
    140 
    141 #if 0
    142 {
    143 #endif
    144 #if defined(__cplusplus)
    145 } /* extern "C" */
    146 #endif
    147 
    148 
    149 #endif /* __msmap_H */
    150