1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
|
2004-04-19 Daniel Jacobowitz <drow@mvista.com>
* cli/cli-setshow.c (cmd_show_list): Check for "show" in the middle
of prefixes. Don't print the prefix twice in the CLI.
2004-04-18 Daniel Jacobowitz <drow@mvista.com>
* dwarf2read.c (add_partial_structure): Remove.
(load_partial_die): Rename to read_partial_die.
(skip_one_die): Move prototype.
(clear_per_cu_pointer): Rename to free_stack_comp_unit. Always
free the obstack.
(dwarf2_build_psymtabs_hard): Update comments. Move
cleanup. Initialize the comp_unit_obstack. Remove hash table
creation.
(load_comp_unit): Initialize the comp_unit_obstack. Remove
hash table creation.
(create_comp_unit_tree): Update comments. Read less data.
(scan_partial_symbols): Update comment. Rename pdi_p to pdi.
(add_partial_enumeration): Likewise.
(add_partial_symbol): Remove psym2.
(add_partial_namespace): Don't set the name here.
(guess_structure_name): Make static.
(locate_pdi_sibling): Rearrange.
(determine_class_name): Update comment.
(load_partial_dies): Create the hash table here. Update comments.
Don't use obstack_free.
(fixup_partial_die): Add comment. Fix typo.
(dwarf_alloc_block): Readd comment.
2004-04-02 Daniel Jacobowitz <drow@mvista.com>
* dwarf2read.c (struct dwarf2_cu): Add comments. Rename
partial_die_obstack to comp_unit_obstack.
(struct partial_die_info): Move higher in file. Add comments.
Use ENUM_BITFIELD.
(dwarf2_tmp_obstack, dwarf2_free_tmp_obstack): Remove.
(partial_die_hash, partial_die_eq): Move lower in file.
(hashtab_obstack_allocate): Likewise. Renamed from
hash_obstack_allocate.
(dummy_obstack_deallocate): Likewise. Renamed from
splay_tree_obstack_deallocate.
(dwarf2_build_psymtabs_hard): Remove references to
dwarf2_tmp_obstack. Update names of changed variables/functions.
(load_comp_unit, create_comp_unit_tree, partial_die_parent_scope)
(guess_structure_name, psymtab_to_symtab_1, load_full_comp_unit)
(add_to_cu_func_list, load_partial_dies, dwarf_alloc_block)
(free_one_comp_unit, clear_per_cu_pointer, set_die_type)
(dwarf2_add_dependence): Likewise.
2004-04-01 Daniel Jacobowitz <drow@mvista.com>
* dwarf2read.c (struct partial_die_info): Replace full_name and
full_name_set with scope and scope_set.
(partial_die_parent_scope): New function.
(partial_die_full_name): Use it.
(add_partial_symbol): Don't check full_name_set or set full_name.
(add_partial_namespace): Remove unused variable.
(guess_partial_structure): New function, broken out from
add_partial_structure. Set the name field of the partial DIE.
(add_partial_structure): Simplify.
(find_partial_die): Always set *TARGET_CU.
(fixup_partial_die): Call guess_structure_scope. Set the names
of anonymous classes and namespaces.
2004-04-01 Daniel Jacobowitz <drow@mvista.com>
* dwarf2read.c (struct dwarf2_cu): Add has_form_ref_addr and
has_namespace_info.
(dwarf2_read_abbrevs): Set the new flags. Change return type back
to void. Update comments.
(dwarf2_build_psymtabs_hard): Update call to dwarf2_read_abbrevs.
Use new has_form_ref_addr flag. Update call to
scan_partial_symbols.
(scan_partial_symbols, add_partial_symbol, add_partial_structure)
(add_partial_enumeration, add_partial_namespace): Remove
have_namespace_info argument. Use new has_namespace_info CU flag.
Update calls to changed functions.
2004-03-14 Daniel Jacobowitz <drow@mvista.com>
* dwarf2read.c (read_structure_type): Renamed from
read_structure_scope.
(process_enumeration_scope): Renamed from read_enumeration_scope.
(add_partial_structure, process_die, new_symbol)
(read_type_die): Update calls and comments.
2004-02-24 Daniel Jacobowitz <drow@mvista.com>
* dwarf2read.c (struct comp_unit_head): Remove dwarf2_abbrevs array.
(struct dwarf2_cu): Add dwarf2_abbrevs pointer. Update comment about
comp_unit_head.
(dwarf2_free_abbrev_table): Renamed from dwarf2_empty_abbrev_table.
Clear the pointer abbrev table pointer.
(dwarf2_build_psymtabs_hard, load_comp_unit, load_full_comp_unit):
Update calls.
(dwarf2_read_abbrevs): Update for moved dwarf2_abbrevs pointer.
Allocate the hash table from the obstack.
(dwarf2_lookup_abbrev): Update for moved dwarf2_abbrevs pointer.
2004-02-24 Daniel Jacobowitz <drow@mvista.com>
* dwarf2read.c (skip_leb128, peek_die_abbrev, skip_one_die)
(skip_children, locate_pdi_sibling): Update comments and
clean up.
2004-02-24 Daniel Jacobowitz <drow@mvista.com>
* dwarf2read.c (free_one_comp_unit): Update signature so it can be
used as a cleanup. Clear the per_cu pointer. Add some comments.
(free_one_cached_comp_unit): Update signature so it can be used
as a cleanup. Remove unused argument.
(dwarf2_build_psymtabs_hard): Update call to
free_one_cached_comp_unit. Don't free the obstack here.
(process_queue): Keep dwarf2_queue up to date as we remove items
from the queue.
(dwarf2_release_queue): New function.
(psymtab_to_symtab_1): Use cleanups.
(load_full_comp_unit): Likewise.
(free_comp_units_worker): Remove clearing of the cu pointer.
(clear_per_cu_pointer): Also free the partial_die_obstack. Update
comments.
2004-02-23 Daniel Jacobowitz <drow@mvista.com>
* dwarf2read.c (MAX_CACHE_AGE): Lower to 5.
(struct dwarf2_cu): Add dependencies and mark fields.
(free_one_comp_unit): New function, broken out from
free_comp_units_worker.
(dwarf2_add_dependence, dwarf2_clear_marks, dwarf2_mark)
(dwarf2_mark_helper): New functions.
(psymtab_to_symtab_1): Call free_one_comp_unit. Re-enable
aging.
(read_full_die): Call dwarf2_add_dependence.
(free_comp_units_worker): Call free_one_comp_unit. Use
marking to free old comp units.
2004-02-23 Daniel Jacobowitz <drow@mvista.com>
* dwarf2read.c (struct dwarf2_cu): Add dies.
(struct dwarf2_per_cu_data): Shrink length field to add new
queued flag.
(make_cleanup_free_die_list, do_free_die_list_cleanup): Remove.
(dwarf_alloc_block): Take a dwarf2_cu argument. Allocate
blocks on the partial_die_obstack.
(dwarf2_find_comp_unit_psymtab, struct dwarf2_queue_item)
(dwarf2_queue, queue_comp_unit, process_queue): New.
(load_full_comp_unit, process_full_comp_unit): New functions,
split from psymtab_to_symtab_1.
(psymtab_to_symtab_1): Remove.
(dwarf2_build_psymtabs_hard): Initialize the whole dwarf2_cu
structure. Cache the psymtab if we have a per_cu structure.
(load_comp_unit): Initialize the whole dwarf2_cu structure.
(dwarf2_psymtab_to_symtab): Restore dwarf2_per_objfile here.
(read_full_die): Queue compilation units for references.
(read_attribute_value): Update calls to dwarf_alloc_block.
(follow_die_ref): Follow inter-complation-unit references.
(free_comp_units_worker): Free the die list.
(get_die_type): Take the hash table as an argument.
(reset_die_and_siblings_types): Don't try to restore types
if none were saved.
2004-02-23 Daniel Jacobowitz <drow@mvista.com>
* dwarf2read.c (struct dwarf2_per_objfile_data): Add comment
for cu_tree. Add read_in_chain.
(age_cached_comp_units): New function.
(clear_per_cu_pointer): Clear the pointer ourself. Call
age_cached_comp_units.
(free_cached_comp_units, free_one_cached_comp_unit): Update call to
free_comp_units_worker.
(dwarf2_build_psymtabs_hard): Use the per-objfile read_in_chain.
(find_partial_die): Likewise.
(free_comp_units_worker): Don't try to clear the per_cu pointer
for the list head. Remove now-unused argument. Use the per-objfile
read_in_chain.
2004-02-23 Daniel Jacobowitz <drow@mvista.com>
* dwarf2read.c (dwarf2_read_abbrevs): Return 1 for DW_FORM_indirect
also.
2004-02-23 Daniel Jacobowitz <drow@mvista.com>
* dwarf2read.c (dwarf2_read_abbrevs): Return 1 iff we saw any
DW_FORM_ref_addr tags.
(create_comp_unit_tree): Add prototype. Take an objfile instead
of a compilation unit.
(dwarf2_build_psymtabs_hard): Build the compilation unit tree
as soon as we find an inter-CU reference. Update call to
create_comp_unit_tree.
(dwarf2_find_containing_comp_unit): Don't create the tree here.
(psymtab_to_symtab_1): Update to support no tree having been built.
(set_die_type): Likewise.
2004-02-23 Daniel Jacobowitz <drow@mvista.com>
* dwarf2read.c (dwarf2_per_objfile_data): New.
(struct dwarf2_per_objfile_data): New.
(dwarf2_per_objfile): New.
(dwarf_info_size, dwarf_abbrev_size, dwarf_line_size)
(dwarf_pubnames_size, dwarf_aranges_size, dwarf_loc_size)
(dwarf_macinfo_size, dwarf_str_size, dwarf_ranges_size)
(dwarf_frame_size, dwarf_eh_frame_size, dwarf_info_buffer)
(dwarf_abbrev_buffer, dwarf_line_buffer, dwarf_str_buffer)
(dwarf_macinfo_buffer, dwarf_ranges_buffer, dwarf_loc_buffer):
Replace with macros.
(dwarf2_cu_tree): Remove.
(struct dwarf2_pinfo): Remove per-objfile members.
(DWARF_INFO_SIZE, DWARF_ABBREV_SIZE, DWARF_LINE_SIZE)
(DWARF_LOC_SIZE, DWARF_MACINFO_SIZE, DWARF_STR_SIZE)
(DWARF_RANGES_SIZE, DWARF_INFO_BUFFER)
(DWARF_ABBREV_BUFFER, DWARF_LINE_BUFFER, DWARF_STR_BUFFER)
(DWARF_MACINFO_BUFFER, DWARF_RANGES_BUFFER, DWARF_LOC_BUFFER):
Remove macros.
(dwarf2_has_info): Take an objfile argument. Allocate per-objfile
data.
(dwarf2_build_psymtabs_hard): Remove use of removed macros. Fetch
cu_tree from dwarf2_per_objfile.
(create_comp_unit_tree): Save cu_tree in dwarf2_per_objfile.
(psymtab_to_symtab_1): Restore per-objfile data pointer. Remove use
of removed macros.
(dwarf2_find_containing_comp_unit): Fetch cu_tree from
dwarf2_per_objfile.
(_initialize_dwarf2_read): Register dwarf2_per_objfile_data instead
of dwarf2_cu_tree.
* symfile.h (dwarf2_has_info): Update prototype.
* coffread.c (coff_symfile_read): Update call to dwarf2_has_info.
* elfread.c (elf_symfile_read): Likewise.
2004-02-23 Daniel Jacobowitz <drow@mvista.com>
* dwarf2read.c (struct dwarf2_per_cu_data): Add psymtab member.
(struct dwarf2_pinfo): Add dwarf_info_size and type_hash.
Rearrange and update comments.
(DWARF_INFO_SIZE): Define.
(set_die_type, get_die_type, reset_die_and_siblings_types): New
fucntions.
(dwarf2_build_psymtabs_hard): Save dwarf_info_size. Initialize
type_hash.
(psymtab_to_symtab_1): Restore dwarf_info_size. Create per_cu
data for the current compilation unit.
(read_structure_scope, read_enumeration_type, read_array_type)
(read_tag_pointer_type, read_tag_ptr_to_member_type)
(read_tag_reference_type, read_tag_const_type)
(read_tag_volatile_type, read_tag_string_type)
(read_subroutine_type, read_typedef, read_base_type): Call
set_die_type.
(read_subrange_type): Likewise. Use dwarf2_attr_with_cu, since
array bounds may be DIE references.
(struct dwarf2_offset_and_type, offset_and_type_hash)
(offset_and_type_eq): New.
2004-02-23 Daniel Jacobowitz <drow@mvista.com>
* dwarf2read.c (REF_HASH_SIZE): Move above struct dwarf2_cu.
(struct dwarf2_cu): Add die_ref_table.
(die_ref_table): Delete static variable.
(store_in_ref_table): Take a comp unit argument and use its
die_ref_table.
(dwarf2_empty_hash_tables): Likewise.
(read_comp_unit): Update call to dwarf2_empty_hash_tables.
(read_die_and_children): Update call to store_in_ref_table.
(follow_die_ref): Use the comp unit's die_ref_table.
2004-02-23 Daniel Jacobowitz <drow@mvista.com>
* dwarf2read.c (read_structure_scope): Don't create a symbol
or call process_die. Return immediately if die->type is set.
Call read_type_die before dwarf2_add_member_fn.
(process_structure_scope): New function.
(read_enumeration_type, read_enumeration_scope): New functions,
broken out from read_enumeration. Don't create the enumeration
type if it has already been created.
(read_enumeration): Removed.
(process_die): Call process_structure_scope, read_enumeration_type,
and read_enumeration_scope. Just call new_symbol for base and
subrange types. Add a comment about other type dies.
(read_type_die): Call read_enumeration_type.
2004-02-22 Daniel Jacobowitz <drow@mvista.com>
* dwarf2read.c (dwarf2_attr_with_cu): New function, renamed
from dwarf2_attr. Also return the compilation unit associated
with the attribute if we have followed a reference. Complain
if we return a reference attribute and the caller does not want
the target compilation unit.
(dwarf2_attr): Call dwarf2_attr_with_cu.
(die_specification, dwarf2_extension): Also return a compilation
unit.
(follow_die_ref): Take attribute and compilation unit arguments.
Call dwarf2_get_ref_die_offset. Also return the target
compilation unit.
(read_func_scope, read_structure_scope): Update calls to
die_specification. Use the result.
(read_namespace): Update call to dwarf2_extension.
(namespace_name): Likewise. Use the result.
(new_symbol): Call dwarf2_attr_with_cu to check for DIE type.
(die_type): Likewise. Update call to follow_die_ref. Use the
results.
(dwarf2_add_member_fn, read_structure_scope): Likewise for
DW_AT_containing_type.
(die_containing_type): Likewise.
(die_is_declaration): Likewise for DW_AT_specification.
2004-02-22 Daniel Jacobowitz <drow@mvista.com>
* dwarf2read.c (MAX_CACHE_AGE): Define.
(struct dwarf2_cu): Add last_used counter.
(free_comp_units_worker): New function, based on
clear_per_cu_pointer. Support aging.
(clear_per_cu_pointer): Use it.
(free_cached_comp_units, free_one_cached_comp_unit): New functions.
(dwarf2_build_psymtabs_hard): Keep read_in_chain across iterations.
Free all cached comp units after building psymtabs. Free any cached
copy of a comp unit before building a psymtab for it.
(find_partial_die): Clear the last_used counter.
2004-02-22 Daniel Jacobowitz <drow@mvista.com>
* dwarf2read.c (partial_die_full_name): Always return NULL or
malloc'd memory. Don't try to free real_parent->full_name.
2004-02-22 Daniel Jacobowitz <drow@mvista.com>
* dwarf2read.c (struct dwarf2_cu): Add read_in_chain and per_cu.
(dwarf2_cu_tree): New variable.
(struct dwarf2_per_cu_data): New type.
(struct partial_die_info): Remove abbrev. Make tag a bitfield. Add
full_name_set.
(load_partial_dies): Take a flag indicating whether we are building
a psymtab.
(find_partial_die_in_comp_unit): Rename frome find_partial_die.
(find_partial_die): New function to support inter-CU references.
Return the CU of the found DIE.
(splay_tree_obstack_allocate): Remove #if 0.
(partial_read_comp_unit_head): New function, broken out from
dwarf2_build_psymtabs_hard.
(dwarf2_build_psymtabs_hard): Remove unused variable abbrev_ptr.
Add the current CU to the splay tree if the tree already exists.
Update call to load_partial_dies.
(partial_die_full_name): Rewrite to support inter-CU references.
(add_partial_symbol): Check and set pdi->full_name_set.
(fixup_partial_die): Support inter-CU references.
(dwarf2_find_containing_comp_unit, clear_per_cu_pointer)
(load_comp_unit, create_comp_unit_tree, _initialize_dwarf2_read): New
functions.
2004-02-22 Daniel Jacobowitz <drow@mvista.com>
* dwarf2read.c (partial_die_full_name): Remove allocate argument,
always use concat.
(add_partial_symbol): Copy the name from the psymbol.
2004-02-21 Daniel Jacobowitz <drow@mvista.com>
* dwarf2read.c (struct partial_die_info): Add full_name.
(scan_partial_symbols, add_partial_symbol, add_partial_structure)
(add_partial_enumeration): Change namespace argument to
have_namespace_info flag. Move DW_TAG_namespace handling to
add_partial_symbol. Update comments.
(pdi_needs_namespace): Remove namespace argument. Handle
DW_TAG_namespace.
(partial_determine_prefix, partial_determine_prefix_aux): Remove.
(dwarf2_build_psymtabs_hard): Update call to scan_partial_symbols.
(partial_die_full_name): New function.
(load_partial_die): Correct comment formatting. Don't handle
DW_TAG_enumeration_type.
(load_partial_dies): Correct comment formatting.
2004-02-21 Daniel Jacobowitz <drow@mvista.com>
* dwarf2read.c (load_partial_dies): Check for NULL name before
adding types.
2004-02-21 Daniel Jacobowitz <drow@mvista.com>
* dwarf2read.c (maybe_specification_partial_die): Removed.
(is_type_tag_for_partial): Renamed from is_type_tag. Remove
some tags.
(load_partial_dies): Call is_type_tag_for_partial. Handle simple
DIEs early.
2004-02-21 Daniel Jacobowitz <drow@mvista.com>
* dwarf2read.c (scan_partial_symbols): Don't return anything. Take
a DIE argument instead of an info_ptr.
(add_partial_namespace, add_partial_structure)
add_partial_enumeration): Likewise.
(load_partial_dies): Return the first interesting DIE.
Do not add DIEs to the hash table if we aren't going to look them
up.
(dwarf2_build_psymtabs_hard): Adjust call to scan_partial_symbols.
2004-02-21 Daniel Jacobowitz <drow@mvista.com>
* dwarf2read.c (peek_die_abbrev): Add prototype.
(load_partial_die): Take an abbrev and its uleb128 length as
arguments.
(dwarf2_build_psymtabs_hard): Adjust call to load_partial_die.
(load_partial_dies): Likewise.
2004-02-21 Daniel Jacobowitz <drow@mvista.com>
* dwarf2read.c (splay_tree_obstack_allocate): Disable.
(add_partial_symbol): Fix a warning.
(fixup_partial_die): Recurse if necessary.
2004-02-21 Daniel Jacobowitz <drow@mvista.com>
* dwarf2read.c (partial_determine_prefix)
(partial_determine_prefix_aux): New functions.
(add_partial_symbol): Call partial_determine_prefix.
(add_partial_structure): Remove workaround for DW_AT_specification.
(load_partial_die): Save DW_AT_extension.
(determine_prefix_aux): Reuse the return value of dwarf2_name.
2004-02-21 Daniel Jacobowitz <drow@mvista.com>
* dwarf2read.c (load_partial_dies): Follow unions. Follow
aggregates for all non-C languages.
2004-02-21 Daniel Jacobowitz <drow@mvista.com>
* dwarf2read.c (dwarf2_build_psymtabs_hard): Estimate the initial
size of the hash table.
2004-02-21 Daniel Jacobowitz <drow@mvista.com>
* dwarf2read.c (struct dwarf2_cu): Add abbrev_obstack.
(struct abbrev_info): Shorten two int flags.
(dwarf_alloc_abbrev): Take a CU argument.
(dwarf2_build_psymtabs_hard): Call dwarf2_empty_abbrev_table
each time through the loop. Update cleanup argument.
(psymtab_to_symtab_1): Update cleanup argument.
(dwarf2_read_abbrevs, dwarf2_alloc_abbrev): Allocate on the
abbrev_obstack.
(dwarf2_empty_abbrev_table): Just call obstack_free.
2004-02-21 Daniel Jacobowitz <drow@mvista.com>
* Makefile.in (hashtab_h): Add.
(dwarf2read.o): Update dependencies.
* dwarf2read.c: Include "hashtab.h".
(struct dwarf2_cu): Change partial_dies to an htab_t.
(hash_obstack_allocate, partial_die_hash, partial_die_eq): New
functions.
(dwarf2_build_psymtabs_hard): Call htab_create_alloc_ex.
(load_partial_dies): Call htab_find_slot_with_hash.
(find_partial_die): Call htab_find_with_hash.
2004-02-21 Daniel Jacobowitz <drow@mvista.com>
* dwarf2read.c (struct partial_die_info): Use bitfields and
rearrange members for packing. Replace spec_attr with spec_offset.
(load_partial_dies): Only follow structures for C++.
(load_partial_die): Use memset. Save specification attributes
only as offsets.
(fixup_partial_die): Adjust to use spec_offset.
2004-02-21 Daniel Jacobowitz <drow@mvista.com>
* dwarf2read.c (struct dwarf2_cu): Add partial_die_obstack.
(splay_tree_obstack_allocate, splay_tree_obstack_deallocate): New
functions.
(dwarf2_build_psymtabs_hard): Use splay_tree_new_with_allocator
and obstack_free to manage partial_dies.
(load_partial_dies): Allocate partial DIEs on the obstack. Don't
initialize the splay tree here.
2004-02-21 Daniel Jacobowitz <drow@mvista.com>
* dwarf2read.c (skip_leb128, peek_die_abbrev, skip_one_die)
(skip_children): New functions.
(locate_pdi_sibling): Call skip_children.
(load_partial_dies): Use peek_die_abbrev and skip_one_die.
2004-02-21 Daniel Jacobowitz <drow@mvista.com>
* dwarf2read.c (find_partial_die, fixup_partial_die): New functions,
broken out from read_partial_die.
(read_partial_die): Remove function.
(dwarf2_build_psymtabs_hard): Update comments.
(scan_partial_symbols): Use the new functions. Reduce copying of
partial DIEs.
2004-02-21 Daniel Jacobowitz <drow@mvista.com>
* dwarf2read.c: Include "splay-tree.h".
(struct dwarf2_cu): Add splay tree for partial DIEs.
(struct partial_die_info): Move after struct attribute.
Add has_specification, spec_attr, die_parent, die_child,
and die_sibling fields.
(load_partial_dies): New function.
(load_partial_die): New function, broken out from read_partial_die.
Correct setting of part_die->offset. Save any specification
attributes for later.
(read_partial_die): Look up DIEs in the splay tree.
(dwarf2_build_psymtabs_hard): Initialize partial_dies. Call
load_partial_die to read in the compilation unit DIE. Call
load_partial_dies. Free the splay tree after use.
(scan_partial_symbols): Follow the die_sibling chain.
(add_partial_structure): Use die_child and die_sibling instead of
read_partial_die and locate_pdi_sibling.
(add_partial_enumeration): Likewise.
(locate_pdi_sibling): Use load_partial_die instead of
read_partial_die.
(is_type_tag): New function.
* Makefile.in (dwarf2read.o): Update dependencies.
|