| OLD | NEW |
| 1 /* Symbol table definitions for GDB. | 1 /* Symbol table definitions for GDB. |
| 2 | 2 |
| 3 Copyright (C) 1986, 1988-2004, 2007-2012 Free Software Foundation, | 3 Copyright (C) 1986, 1988-2004, 2007-2012 Free Software Foundation, |
| 4 Inc. | 4 Inc. |
| 5 | 5 |
| 6 This file is part of GDB. | 6 This file is part of GDB. |
| 7 | 7 |
| 8 This program is free software; you can redistribute it and/or modify | 8 This program is free software; you can redistribute it and/or modify |
| 9 it under the terms of the GNU General Public License as published by | 9 it under the terms of the GNU General Public License as published by |
| 10 the Free Software Foundation; either version 3 of the License, or | 10 the Free Software Foundation; either version 3 of the License, or |
| 11 (at your option) any later version. | 11 (at your option) any later version. |
| 12 | 12 |
| 13 This program is distributed in the hope that it will be useful, | 13 This program is distributed in the hope that it will be useful, |
| 14 but WITHOUT ANY WARRANTY; without even the implied warranty of | 14 but WITHOUT ANY WARRANTY; without even the implied warranty of |
| 15 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | 15 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
| 16 GNU General Public License for more details. | 16 GNU General Public License for more details. |
| 17 | 17 |
| 18 You should have received a copy of the GNU General Public License | 18 You should have received a copy of the GNU General Public License |
| 19 along with this program. If not, see <http://www.gnu.org/licenses/>. */ | 19 along with this program. If not, see <http://www.gnu.org/licenses/>. */ |
| 20 | 20 |
| 21 #if !defined (SYMTAB_H) | 21 #if !defined (SYMTAB_H) |
| 22 #define SYMTAB_H 1 | 22 #define SYMTAB_H 1 |
| 23 | 23 |
| 24 #include "vec.h" | 24 #include "vec.h" |
| 25 #include "gdb_vecs.h" |
| 25 | 26 |
| 26 /* Opaque declarations. */ | 27 /* Opaque declarations. */ |
| 27 struct ui_file; | 28 struct ui_file; |
| 28 struct frame_info; | 29 struct frame_info; |
| 29 struct symbol; | 30 struct symbol; |
| 30 struct obstack; | 31 struct obstack; |
| 31 struct objfile; | 32 struct objfile; |
| 32 struct block; | 33 struct block; |
| 33 struct blockvector; | 34 struct blockvector; |
| 34 struct axs_value; | 35 struct axs_value; |
| 35 struct agent_expr; | 36 struct agent_expr; |
| 36 struct program_space; | 37 struct program_space; |
| 37 struct language_defn; | 38 struct language_defn; |
| 39 struct probe; |
| 38 | 40 |
| 39 /* Some of the structures in this file are space critical. | 41 /* Some of the structures in this file are space critical. |
| 40 The space-critical structures are: | 42 The space-critical structures are: |
| 41 | 43 |
| 42 struct general_symbol_info | 44 struct general_symbol_info |
| 43 struct symbol | 45 struct symbol |
| 44 struct partial_symbol | 46 struct partial_symbol |
| 45 | 47 |
| 46 These structures are laid out to encourage good packing. | 48 These structures are laid out to encourage good packing. |
| 47 They use ENUM_BITFIELD and short int fields, and they order the | 49 They use ENUM_BITFIELD and short int fields, and they order the |
| (...skipping 26 matching lines...) Expand all Loading... |
| 74 The third line shows the savings from the optimizations in symtab.h. | 76 The third line shows the savings from the optimizations in symtab.h. |
| 75 The fourth line shows the savings from the optimizations in | 77 The fourth line shows the savings from the optimizations in |
| 76 gdbtypes.h. Both optimizations are in gdb HEAD now. | 78 gdbtypes.h. Both optimizations are in gdb HEAD now. |
| 77 | 79 |
| 78 --chastain 2003-08-21 */ | 80 --chastain 2003-08-21 */ |
| 79 | 81 |
| 80 /* Struct for storing C++ specific information. Allocated when needed. */ | 82 /* Struct for storing C++ specific information. Allocated when needed. */ |
| 81 | 83 |
| 82 struct cplus_specific | 84 struct cplus_specific |
| 83 { | 85 { |
| 84 char *demangled_name; | 86 const char *demangled_name; |
| 85 }; | 87 }; |
| 86 | 88 |
| 87 /* Define a structure for the information that is common to all symbol types, | 89 /* Define a structure for the information that is common to all symbol types, |
| 88 including minimal symbols, partial symbols, and full symbols. In a | 90 including minimal symbols, partial symbols, and full symbols. In a |
| 89 multilanguage environment, some language specific information may need to | 91 multilanguage environment, some language specific information may need to |
| 90 be recorded along with each symbol. */ | 92 be recorded along with each symbol. */ |
| 91 | 93 |
| 92 /* This structure is space critical. See space comments at the top. */ | 94 /* This structure is space critical. See space comments at the top. */ |
| 93 | 95 |
| 94 struct general_symbol_info | 96 struct general_symbol_info |
| 95 { | 97 { |
| 96 /* Name of the symbol. This is a required field. Storage for the | 98 /* Name of the symbol. This is a required field. Storage for the |
| 97 name is allocated on the objfile_obstack for the associated | 99 name is allocated on the objfile_obstack for the associated |
| 98 objfile. For languages like C++ that make a distinction between | 100 objfile. For languages like C++ that make a distinction between |
| 99 the mangled name and demangled name, this is the mangled | 101 the mangled name and demangled name, this is the mangled |
| 100 name. */ | 102 name. */ |
| 101 | 103 |
| 102 char *name; | 104 const char *name; |
| 103 | 105 |
| 104 /* Value of the symbol. Which member of this union to use, and what | 106 /* Value of the symbol. Which member of this union to use, and what |
| 105 it means, depends on what kind of symbol this is and its | 107 it means, depends on what kind of symbol this is and its |
| 106 SYMBOL_CLASS. See comments there for more details. All of these | 108 SYMBOL_CLASS. See comments there for more details. All of these |
| 107 are in host byte order (though what they point to might be in | 109 are in host byte order (though what they point to might be in |
| 108 target byte order, e.g. LOC_CONST_BYTES). */ | 110 target byte order, e.g. LOC_CONST_BYTES). */ |
| 109 | 111 |
| 110 union | 112 union |
| 111 { | 113 { |
| 112 /* The fact that this is a long not a LONGEST mainly limits the | 114 LONGEST ivalue; |
| 113 range of a LOC_CONST. Since LOC_CONST_BYTES exists, I'm not | |
| 114 sure that is a big deal. */ | |
| 115 long ivalue; | |
| 116 | 115 |
| 117 struct block *block; | 116 struct block *block; |
| 118 | 117 |
| 119 gdb_byte *bytes; | 118 gdb_byte *bytes; |
| 120 | 119 |
| 121 CORE_ADDR address; | 120 CORE_ADDR address; |
| 122 | 121 |
| 123 /* For opaque typedef struct chain. */ | 122 /* For opaque typedef struct chain. */ |
| 124 | 123 |
| 125 struct symbol *chain; | 124 struct symbol *chain; |
| 126 } | 125 } |
| 127 value; | 126 value; |
| 128 | 127 |
| 129 /* Since one and only one language can apply, wrap the language specific | 128 /* Since one and only one language can apply, wrap the language specific |
| 130 information inside a union. */ | 129 information inside a union. */ |
| 131 | 130 |
| 132 union | 131 union |
| 133 { | 132 { |
| 134 /* This is used by languages which wish to store a demangled name. | 133 /* This is used by languages which wish to store a demangled name. |
| 135 currently used by Ada, Java, and Objective C. */ | 134 currently used by Ada, Java, and Objective C. */ |
| 136 struct mangled_lang | 135 struct mangled_lang |
| 137 { | 136 { |
| 138 char *demangled_name; | 137 const char *demangled_name; |
| 139 } | 138 } |
| 140 mangled_lang; | 139 mangled_lang; |
| 141 | 140 |
| 142 struct cplus_specific *cplus_specific; | 141 struct cplus_specific *cplus_specific; |
| 143 } | 142 } |
| 144 language_specific; | 143 language_specific; |
| 145 | 144 |
| 146 /* Record the source code language that applies to this symbol. | 145 /* Record the source code language that applies to this symbol. |
| 147 This is used to select one of the fields from the language specific | 146 This is used to select one of the fields from the language specific |
| 148 union above. */ | 147 union above. */ |
| (...skipping 10 matching lines...) Expand all Loading... |
| 159 short section; | 158 short section; |
| 160 | 159 |
| 161 /* The section associated with this symbol. It can be NULL. */ | 160 /* The section associated with this symbol. It can be NULL. */ |
| 162 | 161 |
| 163 struct obj_section *obj_section; | 162 struct obj_section *obj_section; |
| 164 }; | 163 }; |
| 165 | 164 |
| 166 extern void symbol_set_demangled_name (struct general_symbol_info *, char *, | 165 extern void symbol_set_demangled_name (struct general_symbol_info *, char *, |
| 167 struct objfile *); | 166 struct objfile *); |
| 168 | 167 |
| 169 extern char *symbol_get_demangled_name (const struct general_symbol_info *); | 168 extern const char *symbol_get_demangled_name |
| 169 (const struct general_symbol_info *); |
| 170 | 170 |
| 171 extern CORE_ADDR symbol_overlayed_address (CORE_ADDR, struct obj_section *); | 171 extern CORE_ADDR symbol_overlayed_address (CORE_ADDR, struct obj_section *); |
| 172 | 172 |
| 173 /* Note that all the following SYMBOL_* macros are used with the | 173 /* Note that all the following SYMBOL_* macros are used with the |
| 174 SYMBOL argument being either a partial symbol, a minimal symbol or | 174 SYMBOL argument being either a partial symbol, a minimal symbol or |
| 175 a full symbol. All three types have a ginfo field. In particular | 175 a full symbol. All three types have a ginfo field. In particular |
| 176 the SYMBOL_SET_LANGUAGE, SYMBOL_DEMANGLED_NAME, etc. | 176 the SYMBOL_SET_LANGUAGE, SYMBOL_DEMANGLED_NAME, etc. |
| 177 macros cannot be entirely substituted by | 177 macros cannot be entirely substituted by |
| 178 functions, unless the callers are changed to pass in the ginfo | 178 functions, unless the callers are changed to pass in the ginfo |
| 179 field only, instead of the SYMBOL parameter. */ | 179 field only, instead of the SYMBOL parameter. */ |
| (...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 218 specifically need to know whether SYMBOL_NATURAL_NAME and | 218 specifically need to know whether SYMBOL_NATURAL_NAME and |
| 219 SYMBOL_LINKAGE_NAME are different. */ | 219 SYMBOL_LINKAGE_NAME are different. */ |
| 220 | 220 |
| 221 /* Return SYMBOL's "natural" name, i.e. the name that it was called in | 221 /* Return SYMBOL's "natural" name, i.e. the name that it was called in |
| 222 the original source code. In languages like C++ where symbols may | 222 the original source code. In languages like C++ where symbols may |
| 223 be mangled for ease of manipulation by the linker, this is the | 223 be mangled for ease of manipulation by the linker, this is the |
| 224 demangled name. */ | 224 demangled name. */ |
| 225 | 225 |
| 226 #define SYMBOL_NATURAL_NAME(symbol) \ | 226 #define SYMBOL_NATURAL_NAME(symbol) \ |
| 227 (symbol_natural_name (&(symbol)->ginfo)) | 227 (symbol_natural_name (&(symbol)->ginfo)) |
| 228 extern char *symbol_natural_name (const struct general_symbol_info *symbol); | 228 extern const char *symbol_natural_name |
| 229 (const struct general_symbol_info *symbol); |
| 229 | 230 |
| 230 /* Return SYMBOL's name from the point of view of the linker. In | 231 /* Return SYMBOL's name from the point of view of the linker. In |
| 231 languages like C++ where symbols may be mangled for ease of | 232 languages like C++ where symbols may be mangled for ease of |
| 232 manipulation by the linker, this is the mangled name; otherwise, | 233 manipulation by the linker, this is the mangled name; otherwise, |
| 233 it's the same as SYMBOL_NATURAL_NAME. */ | 234 it's the same as SYMBOL_NATURAL_NAME. */ |
| 234 | 235 |
| 235 #define SYMBOL_LINKAGE_NAME(symbol) (symbol)->ginfo.name | 236 #define SYMBOL_LINKAGE_NAME(symbol) (symbol)->ginfo.name |
| 236 | 237 |
| 237 /* Return the demangled name for a symbol based on the language for | 238 /* Return the demangled name for a symbol based on the language for |
| 238 that symbol. If no demangled name exists, return NULL. */ | 239 that symbol. If no demangled name exists, return NULL. */ |
| 239 #define SYMBOL_DEMANGLED_NAME(symbol) \ | 240 #define SYMBOL_DEMANGLED_NAME(symbol) \ |
| 240 (symbol_demangled_name (&(symbol)->ginfo)) | 241 (symbol_demangled_name (&(symbol)->ginfo)) |
| 241 extern char *symbol_demangled_name (const struct general_symbol_info *symbol); | 242 extern const char *symbol_demangled_name |
| 243 (const struct general_symbol_info *symbol); |
| 242 | 244 |
| 243 /* Macro that returns a version of the name of a symbol that is | 245 /* Macro that returns a version of the name of a symbol that is |
| 244 suitable for output. In C++ this is the "demangled" form of the | 246 suitable for output. In C++ this is the "demangled" form of the |
| 245 name if demangle is on and the "mangled" form of the name if | 247 name if demangle is on and the "mangled" form of the name if |
| 246 demangle is off. In other languages this is just the symbol name. | 248 demangle is off. In other languages this is just the symbol name. |
| 247 The result should never be NULL. Don't use this for internal | 249 The result should never be NULL. Don't use this for internal |
| 248 purposes (e.g. storing in a hashtable): it's only suitable for output. | 250 purposes (e.g. storing in a hashtable): it's only suitable for output. |
| 249 | 251 |
| 250 N.B. symbol may be anything with a ginfo member, | 252 N.B. symbol may be anything with a ginfo member, |
| 251 e.g., struct symbol or struct minimal_symbol. */ | 253 e.g., struct symbol or struct minimal_symbol. */ |
| 252 | 254 |
| 253 #define SYMBOL_PRINT_NAME(symbol) \ | 255 #define SYMBOL_PRINT_NAME(symbol) \ |
| 254 (demangle ? SYMBOL_NATURAL_NAME (symbol) : SYMBOL_LINKAGE_NAME (symbol)) | 256 (demangle ? SYMBOL_NATURAL_NAME (symbol) : SYMBOL_LINKAGE_NAME (symbol)) |
| 255 extern int demangle; | 257 extern int demangle; |
| 256 | 258 |
| 257 /* Macro that tests a symbol for a match against a specified name string. | |
| 258 First test the unencoded name, then looks for and test a C++ encoded | |
| 259 name if it exists. Note that whitespace is ignored while attempting to | |
| 260 match a C++ encoded name, so that "foo::bar(int,long)" is the same as | |
| 261 "foo :: bar (int, long)". | |
| 262 Evaluates to zero if the match fails, or nonzero if it succeeds. */ | |
| 263 | |
| 264 /* Macro that tests a symbol for a match against a specified name | |
| 265 string. It tests against SYMBOL_NATURAL_NAME, and it ignores | |
| 266 whitespace and trailing parentheses. (See strcmp_iw for details | |
| 267 about its behavior.) */ | |
| 268 | |
| 269 #define SYMBOL_MATCHES_NATURAL_NAME(symbol, name) \ | |
| 270 (strcmp_iw (SYMBOL_NATURAL_NAME (symbol), (name)) == 0) | |
| 271 | |
| 272 /* Macro that returns the name to be used when sorting and searching symbols. | 259 /* Macro that returns the name to be used when sorting and searching symbols. |
| 273 In C++, Chill, and Java, we search for the demangled form of a name, | 260 In C++, Chill, and Java, we search for the demangled form of a name, |
| 274 and so sort symbols accordingly. In Ada, however, we search by mangled | 261 and so sort symbols accordingly. In Ada, however, we search by mangled |
| 275 name. If there is no distinct demangled name, then SYMBOL_SEARCH_NAME | 262 name. If there is no distinct demangled name, then SYMBOL_SEARCH_NAME |
| 276 returns the same value (same pointer) as SYMBOL_LINKAGE_NAME. */ | 263 returns the same value (same pointer) as SYMBOL_LINKAGE_NAME. */ |
| 277 #define SYMBOL_SEARCH_NAME(symbol) \ | 264 #define SYMBOL_SEARCH_NAME(symbol) \ |
| 278 (symbol_search_name (&(symbol)->ginfo)) | 265 (symbol_search_name (&(symbol)->ginfo)) |
| 279 extern char *symbol_search_name (const struct general_symbol_info *); | 266 extern const char *symbol_search_name (const struct general_symbol_info *); |
| 280 | 267 |
| 281 /* Analogous to SYMBOL_MATCHES_NATURAL_NAME, but uses the search | 268 /* Return non-zero if NAME matches the "search" name of SYMBOL. |
| 282 name. */ | 269 Whitespace and trailing parentheses are ignored. |
| 270 See strcmp_iw for details about its behavior. */ |
| 283 #define SYMBOL_MATCHES_SEARCH_NAME(symbol, name) \ | 271 #define SYMBOL_MATCHES_SEARCH_NAME(symbol, name) \ |
| 284 (strcmp_iw (SYMBOL_SEARCH_NAME (symbol), (name)) == 0) | 272 (strcmp_iw (SYMBOL_SEARCH_NAME (symbol), (name)) == 0) |
| 285 | 273 |
| 286 /* Classification types for a minimal symbol. These should be taken as | 274 /* Classification types for a minimal symbol. These should be taken as |
| 287 "advisory only", since if gdb can't easily figure out a | 275 "advisory only", since if gdb can't easily figure out a |
| 288 classification it simply selects mst_unknown. It may also have to | 276 classification it simply selects mst_unknown. It may also have to |
| 289 guess when it can't figure out which is a better match between two | 277 guess when it can't figure out which is a better match between two |
| 290 types (mst_data versus mst_bss) for example. Since the minimal | 278 types (mst_data versus mst_bss) for example. Since the minimal |
| 291 symbol info is sometimes derived from the BFD library's view of a | 279 symbol info is sometimes derived from the BFD library's view of a |
| 292 file, we need to live with what information bfd supplies. */ | 280 file, we need to live with what information bfd supplies. */ |
| (...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 339 | 327 |
| 340 struct general_symbol_info ginfo; | 328 struct general_symbol_info ginfo; |
| 341 | 329 |
| 342 /* Size of this symbol. end_psymtab in dbxread.c uses this | 330 /* Size of this symbol. end_psymtab in dbxread.c uses this |
| 343 information to calculate the end of the partial symtab based on the | 331 information to calculate the end of the partial symtab based on the |
| 344 address of the last symbol plus the size of the last symbol. */ | 332 address of the last symbol plus the size of the last symbol. */ |
| 345 | 333 |
| 346 unsigned long size; | 334 unsigned long size; |
| 347 | 335 |
| 348 /* Which source file is this symbol in? Only relevant for mst_file_*. */ | 336 /* Which source file is this symbol in? Only relevant for mst_file_*. */ |
| 349 char *filename; | 337 const char *filename; |
| 350 | 338 |
| 351 /* Classification type for this minimal symbol. */ | 339 /* Classification type for this minimal symbol. */ |
| 352 | 340 |
| 353 ENUM_BITFIELD(minimal_symbol_type) type : 8; | 341 ENUM_BITFIELD(minimal_symbol_type) type : 8; |
| 354 | 342 |
| 343 /* Non-zero if this symbol was created by gdb. |
| 344 Such symbols do not appear in the output of "info var|fun". */ |
| 345 unsigned int created_by_gdb : 1; |
| 346 |
| 355 /* Two flag bits provided for the use of the target. */ | 347 /* Two flag bits provided for the use of the target. */ |
| 356 unsigned int target_flag_1 : 1; | 348 unsigned int target_flag_1 : 1; |
| 357 unsigned int target_flag_2 : 1; | 349 unsigned int target_flag_2 : 1; |
| 358 | 350 |
| 359 /* Minimal symbols with the same hash key are kept on a linked | 351 /* Minimal symbols with the same hash key are kept on a linked |
| 360 list. This is the link. */ | 352 list. This is the link. */ |
| 361 | 353 |
| 362 struct minimal_symbol *hash_next; | 354 struct minimal_symbol *hash_next; |
| 363 | 355 |
| 364 /* Minimal symbols are stored in two different hash tables. This is | 356 /* Minimal symbols are stored in two different hash tables. This is |
| 365 the `next' pointer for the demangled hash table. */ | 357 the `next' pointer for the demangled hash table. */ |
| 366 | 358 |
| 367 struct minimal_symbol *demangled_hash_next; | 359 struct minimal_symbol *demangled_hash_next; |
| 368 }; | 360 }; |
| 369 | 361 |
| 370 #define MSYMBOL_TARGET_FLAG_1(msymbol) (msymbol)->target_flag_1 | 362 #define MSYMBOL_TARGET_FLAG_1(msymbol) (msymbol)->target_flag_1 |
| 371 #define MSYMBOL_TARGET_FLAG_2(msymbol) (msymbol)->target_flag_2 | 363 #define MSYMBOL_TARGET_FLAG_2(msymbol) (msymbol)->target_flag_2 |
error: old chunk mismatch |
None
| OLD | NEW |