| OLD | NEW |
| 1 /* DWARF 2 location expression support for GDB. | 1 /* DWARF 2 location expression support for GDB. |
| 2 | 2 |
| 3 Copyright (C) 2003, 2005, 2007-2012 Free Software Foundation, Inc. | 3 Copyright (C) 2003, 2005, 2007-2012 Free Software Foundation, Inc. |
| 4 | 4 |
| 5 This file is part of GDB. | 5 This file is part of GDB. |
| 6 | 6 |
| 7 This program is free software; you can redistribute it and/or modify | 7 This program is free software; you can redistribute it and/or modify |
| 8 it under the terms of the GNU General Public License as published by | 8 it under the terms of the GNU General Public License as published by |
| 9 the Free Software Foundation; either version 3 of the License, or | 9 the Free Software Foundation; either version 3 of the License, or |
| 10 (at your option) any later version. | 10 (at your option) any later version. |
| 11 | 11 |
| 12 This program is distributed in the hope that it will be useful, | 12 This program is distributed in the hope that it will be useful, |
| 13 but WITHOUT ANY WARRANTY; without even the implied warranty of | 13 but WITHOUT ANY WARRANTY; without even the implied warranty of |
| 14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | 14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
| 15 GNU General Public License for more details. | 15 GNU General Public License for more details. |
| 16 | 16 |
| 17 You should have received a copy of the GNU General Public License | 17 You should have received a copy of the GNU General Public License |
| 18 along with this program. If not, see <http://www.gnu.org/licenses/>. */ | 18 along with this program. If not, see <http://www.gnu.org/licenses/>. */ |
| 19 | 19 |
| 20 #if !defined (DWARF2LOC_H) | 20 #if !defined (DWARF2LOC_H) |
| 21 #define DWARF2LOC_H | 21 #define DWARF2LOC_H |
| 22 | 22 |
| 23 #include "dwarf2expr.h" |
| 24 |
| 23 struct symbol_computed_ops; | 25 struct symbol_computed_ops; |
| 24 struct objfile; | 26 struct objfile; |
| 25 struct dwarf2_per_cu_data; | 27 struct dwarf2_per_cu_data; |
| 26 struct dwarf2_loclist_baton; | 28 struct dwarf2_loclist_baton; |
| 27 struct agent_expr; | 29 struct agent_expr; |
| 28 struct axs_value; | 30 struct axs_value; |
| 29 | 31 |
| 30 /* This header is private to the DWARF-2 reader. It is shared between | 32 /* This header is private to the DWARF-2 reader. It is shared between |
| 31 dwarf2read.c and dwarf2loc.c. */ | 33 dwarf2read.c and dwarf2loc.c. */ |
| 32 | 34 |
| 33 /* `set debug entry-values' setting. */ | 35 /* `set debug entry-values' setting. */ |
| 34 extern int entry_values_debug; | 36 extern int entry_values_debug; |
| 35 | 37 |
| 36 /* Return the OBJFILE associated with the compilation unit CU. If CU | 38 /* Return the OBJFILE associated with the compilation unit CU. If CU |
| 37 came from a separate debuginfo file, then the master objfile is | 39 came from a separate debuginfo file, then the master objfile is |
| 38 returned. */ | 40 returned. */ |
| 39 struct objfile *dwarf2_per_cu_objfile (struct dwarf2_per_cu_data *cu); | 41 struct objfile *dwarf2_per_cu_objfile (struct dwarf2_per_cu_data *cu); |
| 40 | 42 |
| 41 /* Return the address size given in the compilation unit header for CU. */ | 43 /* Return the address size given in the compilation unit header for CU. */ |
| 42 CORE_ADDR dwarf2_per_cu_addr_size (struct dwarf2_per_cu_data *cu); | 44 int dwarf2_per_cu_addr_size (struct dwarf2_per_cu_data *cu); |
| 43 | 45 |
| 44 /* Return the DW_FORM_ref_addr size given in the compilation unit header for | 46 /* Return the DW_FORM_ref_addr size given in the compilation unit header for |
| 45 CU. */ | 47 CU. */ |
| 46 int dwarf2_per_cu_ref_addr_size (struct dwarf2_per_cu_data *cu); | 48 int dwarf2_per_cu_ref_addr_size (struct dwarf2_per_cu_data *cu); |
| 47 | 49 |
| 48 /* Return the offset size given in the compilation unit header for CU. */ | 50 /* Return the offset size given in the compilation unit header for CU. */ |
| 49 int dwarf2_per_cu_offset_size (struct dwarf2_per_cu_data *cu); | 51 int dwarf2_per_cu_offset_size (struct dwarf2_per_cu_data *cu); |
| 50 | 52 |
| 51 /* Return the text offset of the CU. The returned offset comes from | 53 /* Return the text offset of the CU. The returned offset comes from |
| 52 this CU's objfile. If this objfile came from a separate debuginfo | 54 this CU's objfile. If this objfile came from a separate debuginfo |
| 53 file, then the offset may be different from the corresponding | 55 file, then the offset may be different from the corresponding |
| 54 offset in the parent objfile. */ | 56 offset in the parent objfile. */ |
| 55 CORE_ADDR dwarf2_per_cu_text_offset (struct dwarf2_per_cu_data *cu); | 57 CORE_ADDR dwarf2_per_cu_text_offset (struct dwarf2_per_cu_data *cu); |
| 56 | 58 |
| 57 /* Find a particular location expression from a location list. */ | 59 /* Find a particular location expression from a location list. */ |
| 58 const gdb_byte *dwarf2_find_location_expression | 60 const gdb_byte *dwarf2_find_location_expression |
| 59 (struct dwarf2_loclist_baton *baton, | 61 (struct dwarf2_loclist_baton *baton, |
| 60 size_t *locexpr_length, | 62 size_t *locexpr_length, |
| 61 CORE_ADDR pc); | 63 CORE_ADDR pc); |
| 62 | 64 |
| 63 struct dwarf2_locexpr_baton dwarf2_fetch_die_location_block | 65 struct dwarf2_locexpr_baton dwarf2_fetch_die_location_block |
| 64 (unsigned int offset, struct dwarf2_per_cu_data *per_cu, | 66 (cu_offset offset_in_cu, struct dwarf2_per_cu_data *per_cu, |
| 65 CORE_ADDR (*get_frame_pc) (void *baton), | 67 CORE_ADDR (*get_frame_pc) (void *baton), |
| 66 void *baton); | 68 void *baton); |
| 67 | 69 |
| 68 struct type *dwarf2_get_die_type (unsigned int die_offset, | 70 struct type *dwarf2_get_die_type (cu_offset die_offset, |
| 69 struct dwarf2_per_cu_data *per_cu); | 71 struct dwarf2_per_cu_data *per_cu); |
| 70 | 72 |
| 71 /* Evaluate a location description, starting at DATA and with length | 73 /* Evaluate a location description, starting at DATA and with length |
| 72 SIZE, to find the current location of variable of TYPE in the context | 74 SIZE, to find the current location of variable of TYPE in the context |
| 73 of FRAME. */ | 75 of FRAME. */ |
| 74 | 76 |
| 75 struct value *dwarf2_evaluate_loc_desc (struct type *type, | 77 struct value *dwarf2_evaluate_loc_desc (struct type *type, |
| 76 struct frame_info *frame, | 78 struct frame_info *frame, |
| 77 const gdb_byte *data, | 79 const gdb_byte *data, |
| 78 unsigned short size, | 80 unsigned short size, |
| 79 struct dwarf2_per_cu_data *per_cu); | 81 struct dwarf2_per_cu_data *per_cu); |
| 80 | 82 |
| 83 CORE_ADDR dwarf2_read_addr_index (struct dwarf2_per_cu_data *per_cu, |
| 84 unsigned int addr_index); |
| 85 |
| 81 /* The symbol location baton types used by the DWARF-2 reader (i.e. | 86 /* The symbol location baton types used by the DWARF-2 reader (i.e. |
| 82 SYMBOL_LOCATION_BATON for a LOC_COMPUTED symbol). "struct | 87 SYMBOL_LOCATION_BATON for a LOC_COMPUTED symbol). "struct |
| 83 dwarf2_locexpr_baton" is for a symbol with a single location | 88 dwarf2_locexpr_baton" is for a symbol with a single location |
| 84 expression; "struct dwarf2_loclist_baton" is for a symbol with a | 89 expression; "struct dwarf2_loclist_baton" is for a symbol with a |
| 85 location list. */ | 90 location list. */ |
| 86 | 91 |
| 87 struct dwarf2_locexpr_baton | 92 struct dwarf2_locexpr_baton |
| 88 { | 93 { |
| 89 /* Pointer to the start of the location expression. Valid only if SIZE is | 94 /* Pointer to the start of the location expression. Valid only if SIZE is |
| 90 not zero. */ | 95 not zero. */ |
| (...skipping 16 matching lines...) Expand all Loading... |
| 107 | 112 |
| 108 /* Pointer to the start of the location list. */ | 113 /* Pointer to the start of the location list. */ |
| 109 const gdb_byte *data; | 114 const gdb_byte *data; |
| 110 | 115 |
| 111 /* Length of the location list. */ | 116 /* Length of the location list. */ |
| 112 unsigned long size; | 117 unsigned long size; |
| 113 | 118 |
| 114 /* The compilation unit containing the symbol whose location | 119 /* The compilation unit containing the symbol whose location |
| 115 we're computing. */ | 120 we're computing. */ |
| 116 struct dwarf2_per_cu_data *per_cu; | 121 struct dwarf2_per_cu_data *per_cu; |
| 122 |
| 123 /* Non-zero if the location list lives in .debug_loc.dwo. |
| 124 The format of entries in this section are different. */ |
| 125 unsigned char from_dwo; |
| 117 }; | 126 }; |
| 118 | 127 |
| 119 extern const struct symbol_computed_ops dwarf2_locexpr_funcs; | 128 extern const struct symbol_computed_ops dwarf2_locexpr_funcs; |
| 120 extern const struct symbol_computed_ops dwarf2_loclist_funcs; | 129 extern const struct symbol_computed_ops dwarf2_loclist_funcs; |
| 121 | 130 |
| 122 /* Compile a DWARF location expression to an agent expression. | 131 /* Compile a DWARF location expression to an agent expression. |
| 123 | 132 |
| 124 EXPR is the agent expression we are building. | 133 EXPR is the agent expression we are building. |
| 125 LOC is the agent value we modify. | 134 LOC is the agent value we modify. |
| 126 ARCH is the architecture. | 135 ARCH is the architecture. |
| (...skipping 26 matching lines...) Expand all Loading... |
| 153 (GDB "next") sites. One is interested primarily in the PC field. */ | 162 (GDB "next") sites. One is interested primarily in the PC field. */ |
| 154 struct call_site *call_site[1]; | 163 struct call_site *call_site[1]; |
| 155 }; | 164 }; |
| 156 | 165 |
| 157 struct call_site_stuff; | 166 struct call_site_stuff; |
| 158 extern struct call_site_chain *call_site_find_chain (struct gdbarch *gdbarch, | 167 extern struct call_site_chain *call_site_find_chain (struct gdbarch *gdbarch, |
| 159 CORE_ADDR caller_pc, | 168 CORE_ADDR caller_pc, |
| 160 CORE_ADDR callee_pc); | 169 CORE_ADDR callee_pc); |
| 161 | 170 |
| 162 #endif /* dwarf2loc.h */ | 171 #endif /* dwarf2loc.h */ |
| OLD | NEW |