2 Copyright (C) 1994-2018 Free Software Foundation, Inc.
4 Adapted from gdb/dwarf2read.c by Gavin Koch of Cygnus Solutions
7 From the dwarf2read.c header:
8 Adapted by Gary Funck (gary@intrepid.com), Intrepid Technology,
9 Inc. with support from Florida State University (under contract
10 with the Ada Joint Program Office), and Silicon Graphics, Inc.
11 Initial contribution by Brent Benson, Harris Computer Systems, Inc.,
12 based on Fred Fish's (Cygnus Support) implementation of DWARF 1
13 support in dwarfread.c
15 This file is part of BFD.
17 This program is free software; you can redistribute it and/or modify
18 it under the terms of the GNU General Public License as published by
19 the Free Software Foundation; either version 3 of the License, or (at
20 your option) any later version.
22 This program is distributed in the hope that it will be useful, but
23 WITHOUT ANY WARRANTY; without even the implied warranty of
24 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
25 General Public License for more details.
27 You should have received a copy of the GNU General Public License
28 along with this program; if not, write to the Free Software
29 Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston,
30 MA 02110-1301, USA. */
34 #include "libiberty.h"
39 /* The data in the .debug_line statement prologue looks like this. */
44 unsigned short version;
45 bfd_vma prologue_length;
46 unsigned char minimum_instruction_length;
47 unsigned char maximum_ops_per_insn;
48 unsigned char default_is_stmt;
50 unsigned char line_range;
51 unsigned char opcode_base;
52 unsigned char *standard_opcode_lengths;
55 /* Attributes have a name and a value. */
59 enum dwarf_attribute name;
64 struct dwarf_block *blk;
71 /* Blocks are a bunch of untyped bytes. */
78 struct adjusted_section
86 /* A list of all previously read comp_units. */
87 struct comp_unit *all_comp_units;
89 /* Last comp unit in list above. */
90 struct comp_unit *last_comp_unit;
92 /* Names of the debug sections. */
93 const struct dwarf_debug_section *debug_sections;
95 /* The next unread compilation unit within the .debug_info section.
96 Zero indicates that the .debug_info section has not been loaded
100 /* Pointer to the end of the .debug_info section memory buffer. */
101 bfd_byte *info_ptr_end;
103 /* Pointer to the original bfd for which debug was loaded. This is what
104 we use to compare and so check that the cached debug data is still
105 valid - it saves having to possibly dereference the gnu_debuglink each
109 /* Pointer to the bfd, section and address of the beginning of the
110 section. The bfd might be different than expected because of
111 gnu_debuglink sections. */
114 bfd_byte *sec_info_ptr;
116 /* Support for alternate debug info sections created by the DWZ utility:
117 This includes a pointer to an alternate bfd which contains *extra*,
118 possibly duplicate debug sections, and pointers to the loaded
119 .debug_str and .debug_info sections from this bfd. */
121 bfd_byte * alt_dwarf_str_buffer;
122 bfd_size_type alt_dwarf_str_size;
123 bfd_byte * alt_dwarf_info_buffer;
124 bfd_size_type alt_dwarf_info_size;
126 /* A pointer to the memory block allocated for info_ptr. Neither
127 info_ptr nor sec_info_ptr are guaranteed to stay pointing to the
128 beginning of the malloc block. */
129 bfd_byte *info_ptr_memory;
131 /* Pointer to the symbol table. */
134 /* Pointer to the .debug_abbrev section loaded into memory. */
135 bfd_byte *dwarf_abbrev_buffer;
137 /* Length of the loaded .debug_abbrev section. */
138 bfd_size_type dwarf_abbrev_size;
140 /* Buffer for decode_line_info. */
141 bfd_byte *dwarf_line_buffer;
143 /* Length of the loaded .debug_line section. */
144 bfd_size_type dwarf_line_size;
146 /* Pointer to the .debug_str section loaded into memory. */
147 bfd_byte *dwarf_str_buffer;
149 /* Length of the loaded .debug_str section. */
150 bfd_size_type dwarf_str_size;
152 /* Pointer to the .debug_line_str section loaded into memory. */
153 bfd_byte *dwarf_line_str_buffer;
155 /* Length of the loaded .debug_line_str section. */
156 bfd_size_type dwarf_line_str_size;
158 /* Pointer to the .debug_ranges section loaded into memory. */
159 bfd_byte *dwarf_ranges_buffer;
161 /* Length of the loaded .debug_ranges section. */
162 bfd_size_type dwarf_ranges_size;
164 /* If the most recent call to bfd_find_nearest_line was given an
165 address in an inlined function, preserve a pointer into the
166 calling chain for subsequent calls to bfd_find_inliner_info to
168 struct funcinfo *inliner_chain;
170 /* Section VMAs at the time the stash was built. */
173 /* Number of sections whose VMA we must adjust. */
174 int adjusted_section_count;
176 /* Array of sections with adjusted VMA. */
177 struct adjusted_section *adjusted_sections;
179 /* Number of times find_line is called. This is used in
180 the heuristic for enabling the info hash tables. */
183 #define STASH_INFO_HASH_TRIGGER 100
185 /* Hash table mapping symbol names to function infos. */
186 struct info_hash_table *funcinfo_hash_table;
188 /* Hash table mapping symbol names to variable infos. */
189 struct info_hash_table *varinfo_hash_table;
191 /* Head of comp_unit list in the last hash table update. */
192 struct comp_unit *hash_units_head;
194 /* Status of info hash. */
195 int info_hash_status;
196 #define STASH_INFO_HASH_OFF 0
197 #define STASH_INFO_HASH_ON 1
198 #define STASH_INFO_HASH_DISABLED 2
200 /* True if we opened bfd_ptr. */
201 bfd_boolean close_on_cleanup;
211 /* A minimal decoding of DWARF2 compilation units. We only decode
212 what's needed to get to the line number information. */
216 /* Chain the previously read compilation units. */
217 struct comp_unit *next_unit;
219 /* Likewise, chain the compilation unit read after this one.
220 The comp units are stored in reversed reading order. */
221 struct comp_unit *prev_unit;
223 /* Keep the bfd convenient (for memory allocation). */
226 /* The lowest and highest addresses contained in this compilation
227 unit as specified in the compilation unit header. */
228 struct arange arange;
230 /* The DW_AT_name attribute (for error messages). */
233 /* The abbrev hash table. */
234 struct abbrev_info **abbrevs;
236 /* DW_AT_language. */
239 /* Note that an error was found by comp_unit_find_nearest_line. */
242 /* The DW_AT_comp_dir attribute. */
245 /* TRUE if there is a line number table associated with this comp. unit. */
248 /* Pointer to the current comp_unit so that we can find a given entry
250 bfd_byte *info_ptr_unit;
252 /* The offset into .debug_line of the line number table. */
253 unsigned long line_offset;
255 /* Pointer to the first child die for the comp unit. */
256 bfd_byte *first_child_die_ptr;
258 /* The end of the comp unit. */
261 /* The decoded line number, NULL if not yet decoded. */
262 struct line_info_table *line_table;
264 /* A list of the functions found in this comp. unit. */
265 struct funcinfo *function_table;
267 /* A table of function information references searchable by address. */
268 struct lookup_funcinfo *lookup_funcinfo_table;
270 /* Number of functions in the function_table and sorted_function_table. */
271 bfd_size_type number_of_functions;
273 /* A list of the variables found in this comp. unit. */
274 struct varinfo *variable_table;
276 /* Pointer to dwarf2_debug structure. */
277 struct dwarf2_debug *stash;
279 /* DWARF format version for this unit - from unit header. */
282 /* Address size for this unit - from unit header. */
283 unsigned char addr_size;
285 /* Offset size for this unit - from unit header. */
286 unsigned char offset_size;
288 /* Base address for this unit - from DW_AT_low_pc attribute of
289 DW_TAG_compile_unit DIE */
290 bfd_vma base_address;
292 /* TRUE if symbols are cached in hash table for faster lookup by name. */
296 /* This data structure holds the information of an abbrev. */
299 unsigned int number; /* Number identifying abbrev. */
300 enum dwarf_tag tag; /* DWARF tag. */
301 int has_children; /* Boolean. */
302 unsigned int num_attrs; /* Number of attributes. */
303 struct attr_abbrev *attrs; /* An array of attribute descriptions. */
304 struct abbrev_info *next; /* Next in chain. */
309 enum dwarf_attribute name;
310 enum dwarf_form form;
311 bfd_vma implicit_const;
314 /* Map of uncompressed DWARF debug section name to compressed one. It
315 is terminated by NULL uncompressed_name. */
317 const struct dwarf_debug_section dwarf_debug_sections[] =
319 { ".debug_abbrev", ".zdebug_abbrev" },
320 { ".debug_aranges", ".zdebug_aranges" },
321 { ".debug_frame", ".zdebug_frame" },
322 { ".debug_info", ".zdebug_info" },
323 { ".debug_info", ".zdebug_info" },
324 { ".debug_line", ".zdebug_line" },
325 { ".debug_loc", ".zdebug_loc" },
326 { ".debug_macinfo", ".zdebug_macinfo" },
327 { ".debug_macro", ".zdebug_macro" },
328 { ".debug_pubnames", ".zdebug_pubnames" },
329 { ".debug_pubtypes", ".zdebug_pubtypes" },
330 { ".debug_ranges", ".zdebug_ranges" },
331 { ".debug_static_func", ".zdebug_static_func" },
332 { ".debug_static_vars", ".zdebug_static_vars" },
333 { ".debug_str", ".zdebug_str", },
334 { ".debug_str", ".zdebug_str", },
335 { ".debug_line_str", ".zdebug_line_str", },
336 { ".debug_types", ".zdebug_types" },
337 /* GNU DWARF 1 extensions */
338 { ".debug_sfnames", ".zdebug_sfnames" },
339 { ".debug_srcinfo", ".zebug_srcinfo" },
340 /* SGI/MIPS DWARF 2 extensions */
341 { ".debug_funcnames", ".zdebug_funcnames" },
342 { ".debug_typenames", ".zdebug_typenames" },
343 { ".debug_varnames", ".zdebug_varnames" },
344 { ".debug_weaknames", ".zdebug_weaknames" },
348 /* NB/ Numbers in this enum must match up with indices
349 into the dwarf_debug_sections[] array above. */
350 enum dwarf_debug_section_enum
379 /* A static assertion. */
380 extern int dwarf_debug_section_assert[ARRAY_SIZE (dwarf_debug_sections)
381 == debug_max + 1 ? 1 : -1];
383 #ifndef ABBREV_HASH_SIZE
384 #define ABBREV_HASH_SIZE 121
386 #ifndef ATTR_ALLOC_CHUNK
387 #define ATTR_ALLOC_CHUNK 4
390 /* Variable and function hash tables. This is used to speed up look-up
391 in lookup_symbol_in_var_table() and lookup_symbol_in_function_table().
392 In order to share code between variable and function infos, we use
393 a list of untyped pointer for all variable/function info associated with
394 a symbol. We waste a bit of memory for list with one node but that
395 simplifies the code. */
397 struct info_list_node
399 struct info_list_node *next;
403 /* Info hash entry. */
404 struct info_hash_entry
406 struct bfd_hash_entry root;
407 struct info_list_node *head;
410 struct info_hash_table
412 struct bfd_hash_table base;
415 /* Function to create a new entry in info hash table. */
417 static struct bfd_hash_entry *
418 info_hash_table_newfunc (struct bfd_hash_entry *entry,
419 struct bfd_hash_table *table,
422 struct info_hash_entry *ret = (struct info_hash_entry *) entry;
424 /* Allocate the structure if it has not already been allocated by a
428 ret = (struct info_hash_entry *) bfd_hash_allocate (table,
434 /* Call the allocation method of the base class. */
435 ret = ((struct info_hash_entry *)
436 bfd_hash_newfunc ((struct bfd_hash_entry *) ret, table, string));
438 /* Initialize the local fields here. */
442 return (struct bfd_hash_entry *) ret;
445 /* Function to create a new info hash table. It returns a pointer to the
446 newly created table or NULL if there is any error. We need abfd
447 solely for memory allocation. */
449 static struct info_hash_table *
450 create_info_hash_table (bfd *abfd)
452 struct info_hash_table *hash_table;
454 hash_table = ((struct info_hash_table *)
455 bfd_alloc (abfd, sizeof (struct info_hash_table)));
459 if (!bfd_hash_table_init (&hash_table->base, info_hash_table_newfunc,
460 sizeof (struct info_hash_entry)))
462 bfd_release (abfd, hash_table);
469 /* Insert an info entry into an info hash table. We do not check of
470 duplicate entries. Also, the caller need to guarantee that the
471 right type of info in inserted as info is passed as a void* pointer.
472 This function returns true if there is no error. */
475 insert_info_hash_table (struct info_hash_table *hash_table,
480 struct info_hash_entry *entry;
481 struct info_list_node *node;
483 entry = (struct info_hash_entry*) bfd_hash_lookup (&hash_table->base,
488 node = (struct info_list_node *) bfd_hash_allocate (&hash_table->base,
494 node->next = entry->head;
500 /* Look up an info entry list from an info hash table. Return NULL
503 static struct info_list_node *
504 lookup_info_hash_table (struct info_hash_table *hash_table, const char *key)
506 struct info_hash_entry *entry;
508 entry = (struct info_hash_entry*) bfd_hash_lookup (&hash_table->base, key,
510 return entry ? entry->head : NULL;
513 /* Read a section into its appropriate place in the dwarf2_debug
514 struct (indicated by SECTION_BUFFER and SECTION_SIZE). If SYMS is
515 not NULL, use bfd_simple_get_relocated_section_contents to read the
516 section contents, otherwise use bfd_get_section_contents. Fail if
517 the located section does not contain at least OFFSET bytes. */
520 read_section (bfd * abfd,
521 const struct dwarf_debug_section *sec,
524 bfd_byte ** section_buffer,
525 bfd_size_type * section_size)
528 const char *section_name = sec->uncompressed_name;
529 bfd_byte *contents = *section_buffer;
531 /* The section may have already been read. */
532 if (contents == NULL)
534 msec = bfd_get_section_by_name (abfd, section_name);
537 section_name = sec->compressed_name;
538 if (section_name != NULL)
539 msec = bfd_get_section_by_name (abfd, section_name);
543 _bfd_error_handler (_("DWARF error: can't find %s section."),
544 sec->uncompressed_name);
545 bfd_set_error (bfd_error_bad_value);
549 *section_size = msec->rawsize ? msec->rawsize : msec->size;
550 /* Paranoia - alloc one extra so that we can make sure a string
551 section is NUL terminated. */
552 contents = (bfd_byte *) bfd_malloc (*section_size + 1);
553 if (contents == NULL)
556 ? !bfd_simple_get_relocated_section_contents (abfd, msec, contents,
558 : !bfd_get_section_contents (abfd, msec, contents, 0, *section_size))
563 contents[*section_size] = 0;
564 *section_buffer = contents;
567 /* It is possible to get a bad value for the offset into the section
568 that the client wants. Validate it here to avoid trouble later. */
569 if (offset != 0 && offset >= *section_size)
571 /* xgettext: c-format */
572 _bfd_error_handler (_("DWARF error: offset (%" PRIu64 ")"
573 " greater than or equal to %s size (%" PRIu64 ")"),
574 (uint64_t) offset, section_name,
575 (uint64_t) *section_size);
576 bfd_set_error (bfd_error_bad_value);
583 /* Read dwarf information from a buffer. */
586 read_1_byte (bfd *abfd ATTRIBUTE_UNUSED, bfd_byte *buf, bfd_byte *end)
590 return bfd_get_8 (abfd, buf);
594 read_1_signed_byte (bfd *abfd ATTRIBUTE_UNUSED, bfd_byte *buf, bfd_byte *end)
598 return bfd_get_signed_8 (abfd, buf);
602 read_2_bytes (bfd *abfd, bfd_byte *buf, bfd_byte *end)
606 return bfd_get_16 (abfd, buf);
610 read_4_bytes (bfd *abfd, bfd_byte *buf, bfd_byte *end)
614 return bfd_get_32 (abfd, buf);
618 read_8_bytes (bfd *abfd, bfd_byte *buf, bfd_byte *end)
622 return bfd_get_64 (abfd, buf);
626 read_n_bytes (bfd_byte * buf,
628 struct dwarf_block * block)
630 unsigned int size = block->size;
631 bfd_byte * block_end = buf + size;
633 if (block_end > end || block_end < buf)
646 /* Scans a NUL terminated string starting at BUF, returning a pointer to it.
647 Returns the number of characters in the string, *including* the NUL byte,
648 in BYTES_READ_PTR. This value is set even if the function fails. Bytes
649 at or beyond BUF_END will not be read. Returns NULL if there was a
650 problem, or if the string is empty. */
653 read_string (bfd * abfd ATTRIBUTE_UNUSED,
656 unsigned int * bytes_read_ptr)
662 * bytes_read_ptr = 0;
668 * bytes_read_ptr = 1;
672 while (buf < buf_end)
675 * bytes_read_ptr = buf - str;
679 * bytes_read_ptr = buf - str;
683 /* Reads an offset from BUF and then locates the string at this offset
684 inside the debug string section. Returns a pointer to the string.
685 Returns the number of bytes read from BUF, *not* the length of the string,
686 in BYTES_READ_PTR. This value is set even if the function fails. Bytes
687 at or beyond BUF_END will not be read from BUF. Returns NULL if there was
688 a problem, or if the string is empty. Does not check for NUL termination
692 read_indirect_string (struct comp_unit * unit,
695 unsigned int * bytes_read_ptr)
698 struct dwarf2_debug *stash = unit->stash;
701 if (buf + unit->offset_size > buf_end)
703 * bytes_read_ptr = 0;
707 if (unit->offset_size == 4)
708 offset = read_4_bytes (unit->abfd, buf, buf_end);
710 offset = read_8_bytes (unit->abfd, buf, buf_end);
712 *bytes_read_ptr = unit->offset_size;
714 if (! read_section (unit->abfd, &stash->debug_sections[debug_str],
716 &stash->dwarf_str_buffer, &stash->dwarf_str_size))
719 if (offset >= stash->dwarf_str_size)
721 str = (char *) stash->dwarf_str_buffer + offset;
727 /* Like read_indirect_string but from .debug_line_str section. */
730 read_indirect_line_string (struct comp_unit * unit,
733 unsigned int * bytes_read_ptr)
736 struct dwarf2_debug *stash = unit->stash;
739 if (buf + unit->offset_size > buf_end)
741 * bytes_read_ptr = 0;
745 if (unit->offset_size == 4)
746 offset = read_4_bytes (unit->abfd, buf, buf_end);
748 offset = read_8_bytes (unit->abfd, buf, buf_end);
750 *bytes_read_ptr = unit->offset_size;
752 if (! read_section (unit->abfd, &stash->debug_sections[debug_line_str],
754 &stash->dwarf_line_str_buffer,
755 &stash->dwarf_line_str_size))
758 if (offset >= stash->dwarf_line_str_size)
760 str = (char *) stash->dwarf_line_str_buffer + offset;
766 /* Like read_indirect_string but uses a .debug_str located in
767 an alternate file pointed to by the .gnu_debugaltlink section.
768 Used to impement DW_FORM_GNU_strp_alt. */
771 read_alt_indirect_string (struct comp_unit * unit,
774 unsigned int * bytes_read_ptr)
777 struct dwarf2_debug *stash = unit->stash;
780 if (buf + unit->offset_size > buf_end)
782 * bytes_read_ptr = 0;
786 if (unit->offset_size == 4)
787 offset = read_4_bytes (unit->abfd, buf, buf_end);
789 offset = read_8_bytes (unit->abfd, buf, buf_end);
791 *bytes_read_ptr = unit->offset_size;
793 if (stash->alt_bfd_ptr == NULL)
796 char * debug_filename = bfd_follow_gnu_debugaltlink (unit->abfd, DEBUGDIR);
798 if (debug_filename == NULL)
801 if ((debug_bfd = bfd_openr (debug_filename, NULL)) == NULL
802 || ! bfd_check_format (debug_bfd, bfd_object))
805 bfd_close (debug_bfd);
807 /* FIXME: Should we report our failure to follow the debuglink ? */
808 free (debug_filename);
811 stash->alt_bfd_ptr = debug_bfd;
814 if (! read_section (unit->stash->alt_bfd_ptr,
815 stash->debug_sections + debug_str_alt,
816 NULL, /* FIXME: Do we need to load alternate symbols ? */
818 &stash->alt_dwarf_str_buffer,
819 &stash->alt_dwarf_str_size))
822 if (offset >= stash->alt_dwarf_str_size)
824 str = (char *) stash->alt_dwarf_str_buffer + offset;
831 /* Resolve an alternate reference from UNIT at OFFSET.
832 Returns a pointer into the loaded alternate CU upon success
833 or NULL upon failure. */
836 read_alt_indirect_ref (struct comp_unit * unit,
839 struct dwarf2_debug *stash = unit->stash;
841 if (stash->alt_bfd_ptr == NULL)
844 char * debug_filename = bfd_follow_gnu_debugaltlink (unit->abfd, DEBUGDIR);
846 if (debug_filename == NULL)
849 if ((debug_bfd = bfd_openr (debug_filename, NULL)) == NULL
850 || ! bfd_check_format (debug_bfd, bfd_object))
853 bfd_close (debug_bfd);
855 /* FIXME: Should we report our failure to follow the debuglink ? */
856 free (debug_filename);
859 stash->alt_bfd_ptr = debug_bfd;
862 if (! read_section (unit->stash->alt_bfd_ptr,
863 stash->debug_sections + debug_info_alt,
864 NULL, /* FIXME: Do we need to load alternate symbols ? */
866 &stash->alt_dwarf_info_buffer,
867 &stash->alt_dwarf_info_size))
870 if (offset >= stash->alt_dwarf_info_size)
872 return stash->alt_dwarf_info_buffer + offset;
876 read_address (struct comp_unit *unit, bfd_byte *buf, bfd_byte * buf_end)
880 if (bfd_get_flavour (unit->abfd) == bfd_target_elf_flavour)
881 signed_vma = get_elf_backend_data (unit->abfd)->sign_extend_vma;
883 if (buf + unit->addr_size > buf_end)
888 switch (unit->addr_size)
891 return bfd_get_signed_64 (unit->abfd, buf);
893 return bfd_get_signed_32 (unit->abfd, buf);
895 return bfd_get_signed_16 (unit->abfd, buf);
902 switch (unit->addr_size)
905 return bfd_get_64 (unit->abfd, buf);
907 return bfd_get_32 (unit->abfd, buf);
909 return bfd_get_16 (unit->abfd, buf);
916 /* Lookup an abbrev_info structure in the abbrev hash table. */
918 static struct abbrev_info *
919 lookup_abbrev (unsigned int number, struct abbrev_info **abbrevs)
921 unsigned int hash_number;
922 struct abbrev_info *abbrev;
924 hash_number = number % ABBREV_HASH_SIZE;
925 abbrev = abbrevs[hash_number];
929 if (abbrev->number == number)
932 abbrev = abbrev->next;
938 /* In DWARF version 2, the description of the debugging information is
939 stored in a separate .debug_abbrev section. Before we read any
940 dies from a section we read in all abbreviations and install them
943 static struct abbrev_info**
944 read_abbrevs (bfd *abfd, bfd_uint64_t offset, struct dwarf2_debug *stash)
946 struct abbrev_info **abbrevs;
947 bfd_byte *abbrev_ptr;
948 bfd_byte *abbrev_end;
949 struct abbrev_info *cur_abbrev;
950 unsigned int abbrev_number, bytes_read, abbrev_name;
951 unsigned int abbrev_form, hash_number;
954 if (! read_section (abfd, &stash->debug_sections[debug_abbrev],
956 &stash->dwarf_abbrev_buffer, &stash->dwarf_abbrev_size))
959 if (offset >= stash->dwarf_abbrev_size)
962 amt = sizeof (struct abbrev_info*) * ABBREV_HASH_SIZE;
963 abbrevs = (struct abbrev_info **) bfd_zalloc (abfd, amt);
967 abbrev_ptr = stash->dwarf_abbrev_buffer + offset;
968 abbrev_end = stash->dwarf_abbrev_buffer + stash->dwarf_abbrev_size;
969 abbrev_number = _bfd_safe_read_leb128 (abfd, abbrev_ptr, &bytes_read,
971 abbrev_ptr += bytes_read;
973 /* Loop until we reach an abbrev number of 0. */
974 while (abbrev_number)
976 amt = sizeof (struct abbrev_info);
977 cur_abbrev = (struct abbrev_info *) bfd_zalloc (abfd, amt);
978 if (cur_abbrev == NULL)
981 /* Read in abbrev header. */
982 cur_abbrev->number = abbrev_number;
983 cur_abbrev->tag = (enum dwarf_tag)
984 _bfd_safe_read_leb128 (abfd, abbrev_ptr, &bytes_read,
986 abbrev_ptr += bytes_read;
987 cur_abbrev->has_children = read_1_byte (abfd, abbrev_ptr, abbrev_end);
990 /* Now read in declarations. */
993 /* Initialize it just to avoid a GCC false warning. */
994 bfd_vma implicit_const = -1;
996 abbrev_name = _bfd_safe_read_leb128 (abfd, abbrev_ptr, &bytes_read,
998 abbrev_ptr += bytes_read;
999 abbrev_form = _bfd_safe_read_leb128 (abfd, abbrev_ptr, &bytes_read,
1001 abbrev_ptr += bytes_read;
1002 if (abbrev_form == DW_FORM_implicit_const)
1004 implicit_const = _bfd_safe_read_leb128 (abfd, abbrev_ptr,
1007 abbrev_ptr += bytes_read;
1010 if (abbrev_name == 0)
1013 if ((cur_abbrev->num_attrs % ATTR_ALLOC_CHUNK) == 0)
1015 struct attr_abbrev *tmp;
1017 amt = cur_abbrev->num_attrs + ATTR_ALLOC_CHUNK;
1018 amt *= sizeof (struct attr_abbrev);
1019 tmp = (struct attr_abbrev *) bfd_realloc (cur_abbrev->attrs, amt);
1024 for (i = 0; i < ABBREV_HASH_SIZE; i++)
1026 struct abbrev_info *abbrev = abbrevs[i];
1030 free (abbrev->attrs);
1031 abbrev = abbrev->next;
1036 cur_abbrev->attrs = tmp;
1039 cur_abbrev->attrs[cur_abbrev->num_attrs].name
1040 = (enum dwarf_attribute) abbrev_name;
1041 cur_abbrev->attrs[cur_abbrev->num_attrs].form
1042 = (enum dwarf_form) abbrev_form;
1043 cur_abbrev->attrs[cur_abbrev->num_attrs].implicit_const
1045 ++cur_abbrev->num_attrs;
1048 hash_number = abbrev_number % ABBREV_HASH_SIZE;
1049 cur_abbrev->next = abbrevs[hash_number];
1050 abbrevs[hash_number] = cur_abbrev;
1052 /* Get next abbreviation.
1053 Under Irix6 the abbreviations for a compilation unit are not
1054 always properly terminated with an abbrev number of 0.
1055 Exit loop if we encounter an abbreviation which we have
1056 already read (which means we are about to read the abbreviations
1057 for the next compile unit) or if the end of the abbreviation
1058 table is reached. */
1059 if ((unsigned int) (abbrev_ptr - stash->dwarf_abbrev_buffer)
1060 >= stash->dwarf_abbrev_size)
1062 abbrev_number = _bfd_safe_read_leb128 (abfd, abbrev_ptr,
1063 &bytes_read, FALSE, abbrev_end);
1064 abbrev_ptr += bytes_read;
1065 if (lookup_abbrev (abbrev_number, abbrevs) != NULL)
1072 /* Returns true if the form is one which has a string value. */
1074 static inline bfd_boolean
1075 is_str_attr (enum dwarf_form form)
1077 return (form == DW_FORM_string || form == DW_FORM_strp
1078 || form == DW_FORM_line_strp || form == DW_FORM_GNU_strp_alt);
1081 /* Read and fill in the value of attribute ATTR as described by FORM.
1082 Read data starting from INFO_PTR, but never at or beyond INFO_PTR_END.
1083 Returns an updated INFO_PTR taking into account the amount of data read. */
1086 read_attribute_value (struct attribute * attr,
1088 bfd_vma implicit_const,
1089 struct comp_unit * unit,
1090 bfd_byte * info_ptr,
1091 bfd_byte * info_ptr_end)
1093 bfd *abfd = unit->abfd;
1094 unsigned int bytes_read;
1095 struct dwarf_block *blk;
1098 if (info_ptr >= info_ptr_end && form != DW_FORM_flag_present)
1100 _bfd_error_handler (_("DWARF error: info pointer extends beyond end of attributes"));
1101 bfd_set_error (bfd_error_bad_value);
1105 attr->form = (enum dwarf_form) form;
1109 case DW_FORM_ref_addr:
1110 /* DW_FORM_ref_addr is an address in DWARF2, and an offset in
1112 if (unit->version == 3 || unit->version == 4)
1114 if (unit->offset_size == 4)
1115 attr->u.val = read_4_bytes (unit->abfd, info_ptr, info_ptr_end);
1117 attr->u.val = read_8_bytes (unit->abfd, info_ptr, info_ptr_end);
1118 info_ptr += unit->offset_size;
1123 attr->u.val = read_address (unit, info_ptr, info_ptr_end);
1124 info_ptr += unit->addr_size;
1126 case DW_FORM_GNU_ref_alt:
1127 case DW_FORM_sec_offset:
1128 if (unit->offset_size == 4)
1129 attr->u.val = read_4_bytes (unit->abfd, info_ptr, info_ptr_end);
1131 attr->u.val = read_8_bytes (unit->abfd, info_ptr, info_ptr_end);
1132 info_ptr += unit->offset_size;
1134 case DW_FORM_block2:
1135 amt = sizeof (struct dwarf_block);
1136 blk = (struct dwarf_block *) bfd_alloc (abfd, amt);
1139 blk->size = read_2_bytes (abfd, info_ptr, info_ptr_end);
1141 info_ptr = read_n_bytes (info_ptr, info_ptr_end, blk);
1144 case DW_FORM_block4:
1145 amt = sizeof (struct dwarf_block);
1146 blk = (struct dwarf_block *) bfd_alloc (abfd, amt);
1149 blk->size = read_4_bytes (abfd, info_ptr, info_ptr_end);
1151 info_ptr = read_n_bytes (info_ptr, info_ptr_end, blk);
1155 attr->u.val = read_2_bytes (abfd, info_ptr, info_ptr_end);
1159 attr->u.val = read_4_bytes (abfd, info_ptr, info_ptr_end);
1163 attr->u.val = read_8_bytes (abfd, info_ptr, info_ptr_end);
1166 case DW_FORM_string:
1167 attr->u.str = read_string (abfd, info_ptr, info_ptr_end, &bytes_read);
1168 info_ptr += bytes_read;
1171 attr->u.str = read_indirect_string (unit, info_ptr, info_ptr_end, &bytes_read);
1172 info_ptr += bytes_read;
1174 case DW_FORM_line_strp:
1175 attr->u.str = read_indirect_line_string (unit, info_ptr, info_ptr_end, &bytes_read);
1176 info_ptr += bytes_read;
1178 case DW_FORM_GNU_strp_alt:
1179 attr->u.str = read_alt_indirect_string (unit, info_ptr, info_ptr_end, &bytes_read);
1180 info_ptr += bytes_read;
1182 case DW_FORM_exprloc:
1184 amt = sizeof (struct dwarf_block);
1185 blk = (struct dwarf_block *) bfd_alloc (abfd, amt);
1188 blk->size = _bfd_safe_read_leb128 (abfd, info_ptr, &bytes_read,
1189 FALSE, info_ptr_end);
1190 info_ptr += bytes_read;
1191 info_ptr = read_n_bytes (info_ptr, info_ptr_end, blk);
1194 case DW_FORM_block1:
1195 amt = sizeof (struct dwarf_block);
1196 blk = (struct dwarf_block *) bfd_alloc (abfd, amt);
1199 blk->size = read_1_byte (abfd, info_ptr, info_ptr_end);
1201 info_ptr = read_n_bytes (info_ptr, info_ptr_end, blk);
1205 attr->u.val = read_1_byte (abfd, info_ptr, info_ptr_end);
1209 attr->u.val = read_1_byte (abfd, info_ptr, info_ptr_end);
1212 case DW_FORM_flag_present:
1216 attr->u.sval = _bfd_safe_read_leb128 (abfd, info_ptr, &bytes_read,
1217 TRUE, info_ptr_end);
1218 info_ptr += bytes_read;
1221 attr->u.val = _bfd_safe_read_leb128 (abfd, info_ptr, &bytes_read,
1222 FALSE, info_ptr_end);
1223 info_ptr += bytes_read;
1226 attr->u.val = read_1_byte (abfd, info_ptr, info_ptr_end);
1230 attr->u.val = read_2_bytes (abfd, info_ptr, info_ptr_end);
1234 attr->u.val = read_4_bytes (abfd, info_ptr, info_ptr_end);
1238 attr->u.val = read_8_bytes (abfd, info_ptr, info_ptr_end);
1241 case DW_FORM_ref_sig8:
1242 attr->u.val = read_8_bytes (abfd, info_ptr, info_ptr_end);
1245 case DW_FORM_ref_udata:
1246 attr->u.val = _bfd_safe_read_leb128 (abfd, info_ptr, &bytes_read,
1247 FALSE, info_ptr_end);
1248 info_ptr += bytes_read;
1250 case DW_FORM_indirect:
1251 form = _bfd_safe_read_leb128 (abfd, info_ptr, &bytes_read,
1252 FALSE, info_ptr_end);
1253 info_ptr += bytes_read;
1254 if (form == DW_FORM_implicit_const)
1256 implicit_const = _bfd_safe_read_leb128 (abfd, info_ptr, &bytes_read,
1257 TRUE, info_ptr_end);
1258 info_ptr += bytes_read;
1260 info_ptr = read_attribute_value (attr, form, implicit_const, unit,
1261 info_ptr, info_ptr_end);
1263 case DW_FORM_implicit_const:
1264 attr->form = DW_FORM_sdata;
1265 attr->u.sval = implicit_const;
1268 _bfd_error_handler (_("DWARF error: invalid or unhandled FORM value: %#x"),
1270 bfd_set_error (bfd_error_bad_value);
1276 /* Read an attribute described by an abbreviated attribute. */
1279 read_attribute (struct attribute * attr,
1280 struct attr_abbrev * abbrev,
1281 struct comp_unit * unit,
1282 bfd_byte * info_ptr,
1283 bfd_byte * info_ptr_end)
1285 attr->name = abbrev->name;
1286 info_ptr = read_attribute_value (attr, abbrev->form, abbrev->implicit_const,
1287 unit, info_ptr, info_ptr_end);
1291 /* Return whether DW_AT_name will return the same as DW_AT_linkage_name
1295 non_mangled (int lang)
1305 case DW_LANG_Cobol74:
1306 case DW_LANG_Cobol85:
1307 case DW_LANG_Fortran77:
1308 case DW_LANG_Pascal83:
1318 /* Source line information table routines. */
1320 #define FILE_ALLOC_CHUNK 5
1321 #define DIR_ALLOC_CHUNK 5
1325 struct line_info * prev_line;
1329 unsigned int column;
1330 unsigned int discriminator;
1331 unsigned char op_index;
1332 unsigned char end_sequence; /* End of (sequential) code sequence. */
1343 struct line_sequence
1346 struct line_sequence* prev_sequence;
1347 struct line_info* last_line; /* Largest VMA. */
1348 struct line_info** line_info_lookup;
1349 bfd_size_type num_lines;
1352 struct line_info_table
1355 unsigned int num_files;
1356 unsigned int num_dirs;
1357 unsigned int num_sequences;
1360 struct fileinfo* files;
1361 struct line_sequence* sequences;
1362 struct line_info* lcl_head; /* Local head; used in 'add_line_info'. */
1365 /* Remember some information about each function. If the function is
1366 inlined (DW_TAG_inlined_subroutine) it may have two additional
1367 attributes, DW_AT_call_file and DW_AT_call_line, which specify the
1368 source code location where this function was inlined. */
1372 /* Pointer to previous function in list of all functions. */
1373 struct funcinfo * prev_func;
1374 /* Pointer to function one scope higher. */
1375 struct funcinfo * caller_func;
1376 /* Source location file name where caller_func inlines this func. */
1378 /* Source location file name. */
1380 /* Source location line number where caller_func inlines this func. */
1382 /* Source location line number. */
1385 bfd_boolean is_linkage;
1387 struct arange arange;
1388 /* Where the symbol is defined. */
1392 struct lookup_funcinfo
1394 /* Function information corresponding to this lookup table entry. */
1395 struct funcinfo * funcinfo;
1397 /* The lowest address for this specific function. */
1400 /* The highest address of this function before the lookup table is sorted.
1401 The highest address of all prior functions after the lookup table is
1402 sorted, which is used for binary search. */
1408 /* Pointer to previous variable in list of all variables */
1409 struct varinfo *prev_var;
1410 /* Source location file name */
1412 /* Source location line number */
1417 /* Where the symbol is defined */
1419 /* Is this a stack variable? */
1420 unsigned int stack: 1;
1423 /* Return TRUE if NEW_LINE should sort after LINE. */
1425 static inline bfd_boolean
1426 new_line_sorts_after (struct line_info *new_line, struct line_info *line)
1428 return (new_line->address > line->address
1429 || (new_line->address == line->address
1430 && new_line->op_index > line->op_index));
1434 /* Adds a new entry to the line_info list in the line_info_table, ensuring
1435 that the list is sorted. Note that the line_info list is sorted from
1436 highest to lowest VMA (with possible duplicates); that is,
1437 line_info->prev_line always accesses an equal or smaller VMA. */
1440 add_line_info (struct line_info_table *table,
1442 unsigned char op_index,
1445 unsigned int column,
1446 unsigned int discriminator,
1449 bfd_size_type amt = sizeof (struct line_info);
1450 struct line_sequence* seq = table->sequences;
1451 struct line_info* info = (struct line_info *) bfd_alloc (table->abfd, amt);
1456 /* Set member data of 'info'. */
1457 info->prev_line = NULL;
1458 info->address = address;
1459 info->op_index = op_index;
1461 info->column = column;
1462 info->discriminator = discriminator;
1463 info->end_sequence = end_sequence;
1465 if (filename && filename[0])
1467 info->filename = (char *) bfd_alloc (table->abfd, strlen (filename) + 1);
1468 if (info->filename == NULL)
1470 strcpy (info->filename, filename);
1473 info->filename = NULL;
1475 /* Find the correct location for 'info'. Normally we will receive
1476 new line_info data 1) in order and 2) with increasing VMAs.
1477 However some compilers break the rules (cf. decode_line_info) and
1478 so we include some heuristics for quickly finding the correct
1479 location for 'info'. In particular, these heuristics optimize for
1480 the common case in which the VMA sequence that we receive is a
1481 list of locally sorted VMAs such as
1482 p...z a...j (where a < j < p < z)
1484 Note: table->lcl_head is used to head an *actual* or *possible*
1485 sub-sequence within the list (such as a...j) that is not directly
1486 headed by table->last_line
1488 Note: we may receive duplicate entries from 'decode_line_info'. */
1491 && seq->last_line->address == address
1492 && seq->last_line->op_index == op_index
1493 && seq->last_line->end_sequence == end_sequence)
1495 /* We only keep the last entry with the same address and end
1496 sequence. See PR ld/4986. */
1497 if (table->lcl_head == seq->last_line)
1498 table->lcl_head = info;
1499 info->prev_line = seq->last_line->prev_line;
1500 seq->last_line = info;
1502 else if (!seq || seq->last_line->end_sequence)
1504 /* Start a new line sequence. */
1505 amt = sizeof (struct line_sequence);
1506 seq = (struct line_sequence *) bfd_malloc (amt);
1509 seq->low_pc = address;
1510 seq->prev_sequence = table->sequences;
1511 seq->last_line = info;
1512 table->lcl_head = info;
1513 table->sequences = seq;
1514 table->num_sequences++;
1516 else if (info->end_sequence
1517 || new_line_sorts_after (info, seq->last_line))
1519 /* Normal case: add 'info' to the beginning of the current sequence. */
1520 info->prev_line = seq->last_line;
1521 seq->last_line = info;
1523 /* lcl_head: initialize to head a *possible* sequence at the end. */
1524 if (!table->lcl_head)
1525 table->lcl_head = info;
1527 else if (!new_line_sorts_after (info, table->lcl_head)
1528 && (!table->lcl_head->prev_line
1529 || new_line_sorts_after (info, table->lcl_head->prev_line)))
1531 /* Abnormal but easy: lcl_head is the head of 'info'. */
1532 info->prev_line = table->lcl_head->prev_line;
1533 table->lcl_head->prev_line = info;
1537 /* Abnormal and hard: Neither 'last_line' nor 'lcl_head'
1538 are valid heads for 'info'. Reset 'lcl_head'. */
1539 struct line_info* li2 = seq->last_line; /* Always non-NULL. */
1540 struct line_info* li1 = li2->prev_line;
1544 if (!new_line_sorts_after (info, li2)
1545 && new_line_sorts_after (info, li1))
1548 li2 = li1; /* always non-NULL */
1549 li1 = li1->prev_line;
1551 table->lcl_head = li2;
1552 info->prev_line = table->lcl_head->prev_line;
1553 table->lcl_head->prev_line = info;
1554 if (address < seq->low_pc)
1555 seq->low_pc = address;
1560 /* Extract a fully qualified filename from a line info table.
1561 The returned string has been malloc'ed and it is the caller's
1562 responsibility to free it. */
1565 concat_filename (struct line_info_table *table, unsigned int file)
1569 if (table == NULL || file - 1 >= table->num_files)
1571 /* FILE == 0 means unknown. */
1574 (_("DWARF error: mangled line number section (bad file number)"));
1575 return strdup ("<unknown>");
1578 filename = table->files[file - 1].name;
1579 if (filename == NULL)
1580 return strdup ("<unknown>");
1582 if (!IS_ABSOLUTE_PATH (filename))
1584 char *dir_name = NULL;
1585 char *subdir_name = NULL;
1589 if (table->files[file - 1].dir
1590 /* PR 17512: file: 0317e960. */
1591 && table->files[file - 1].dir <= table->num_dirs
1592 /* PR 17512: file: 7f3d2e4b. */
1593 && table->dirs != NULL)
1594 subdir_name = table->dirs[table->files[file - 1].dir - 1];
1596 if (!subdir_name || !IS_ABSOLUTE_PATH (subdir_name))
1597 dir_name = table->comp_dir;
1601 dir_name = subdir_name;
1606 return strdup (filename);
1608 len = strlen (dir_name) + strlen (filename) + 2;
1612 len += strlen (subdir_name) + 1;
1613 name = (char *) bfd_malloc (len);
1615 sprintf (name, "%s/%s/%s", dir_name, subdir_name, filename);
1619 name = (char *) bfd_malloc (len);
1621 sprintf (name, "%s/%s", dir_name, filename);
1627 return strdup (filename);
1631 arange_add (const struct comp_unit *unit, struct arange *first_arange,
1632 bfd_vma low_pc, bfd_vma high_pc)
1634 struct arange *arange;
1636 /* Ignore empty ranges. */
1637 if (low_pc == high_pc)
1640 /* If the first arange is empty, use it. */
1641 if (first_arange->high == 0)
1643 first_arange->low = low_pc;
1644 first_arange->high = high_pc;
1648 /* Next see if we can cheaply extend an existing range. */
1649 arange = first_arange;
1652 if (low_pc == arange->high)
1654 arange->high = high_pc;
1657 if (high_pc == arange->low)
1659 arange->low = low_pc;
1662 arange = arange->next;
1666 /* Need to allocate a new arange and insert it into the arange list.
1667 Order isn't significant, so just insert after the first arange. */
1668 arange = (struct arange *) bfd_alloc (unit->abfd, sizeof (*arange));
1671 arange->low = low_pc;
1672 arange->high = high_pc;
1673 arange->next = first_arange->next;
1674 first_arange->next = arange;
1678 /* Compare function for line sequences. */
1681 compare_sequences (const void* a, const void* b)
1683 const struct line_sequence* seq1 = a;
1684 const struct line_sequence* seq2 = b;
1686 /* Sort by low_pc as the primary key. */
1687 if (seq1->low_pc < seq2->low_pc)
1689 if (seq1->low_pc > seq2->low_pc)
1692 /* If low_pc values are equal, sort in reverse order of
1693 high_pc, so that the largest region comes first. */
1694 if (seq1->last_line->address < seq2->last_line->address)
1696 if (seq1->last_line->address > seq2->last_line->address)
1699 if (seq1->last_line->op_index < seq2->last_line->op_index)
1701 if (seq1->last_line->op_index > seq2->last_line->op_index)
1707 /* Construct the line information table for quick lookup. */
1710 build_line_info_table (struct line_info_table * table,
1711 struct line_sequence * seq)
1714 struct line_info** line_info_lookup;
1715 struct line_info* each_line;
1716 unsigned int num_lines;
1717 unsigned int line_index;
1719 if (seq->line_info_lookup != NULL)
1722 /* Count the number of line information entries. We could do this while
1723 scanning the debug information, but some entries may be added via
1724 lcl_head without having a sequence handy to increment the number of
1727 for (each_line = seq->last_line; each_line; each_line = each_line->prev_line)
1733 /* Allocate space for the line information lookup table. */
1734 amt = sizeof (struct line_info*) * num_lines;
1735 line_info_lookup = (struct line_info**) bfd_alloc (table->abfd, amt);
1736 if (line_info_lookup == NULL)
1739 /* Create the line information lookup table. */
1740 line_index = num_lines;
1741 for (each_line = seq->last_line; each_line; each_line = each_line->prev_line)
1742 line_info_lookup[--line_index] = each_line;
1744 BFD_ASSERT (line_index == 0);
1746 seq->num_lines = num_lines;
1747 seq->line_info_lookup = line_info_lookup;
1752 /* Sort the line sequences for quick lookup. */
1755 sort_line_sequences (struct line_info_table* table)
1758 struct line_sequence* sequences;
1759 struct line_sequence* seq;
1761 unsigned int num_sequences = table->num_sequences;
1762 bfd_vma last_high_pc;
1764 if (num_sequences == 0)
1767 /* Allocate space for an array of sequences. */
1768 amt = sizeof (struct line_sequence) * num_sequences;
1769 sequences = (struct line_sequence *) bfd_alloc (table->abfd, amt);
1770 if (sequences == NULL)
1773 /* Copy the linked list into the array, freeing the original nodes. */
1774 seq = table->sequences;
1775 for (n = 0; n < num_sequences; n++)
1777 struct line_sequence* last_seq = seq;
1780 sequences[n].low_pc = seq->low_pc;
1781 sequences[n].prev_sequence = NULL;
1782 sequences[n].last_line = seq->last_line;
1783 sequences[n].line_info_lookup = NULL;
1784 sequences[n].num_lines = 0;
1785 seq = seq->prev_sequence;
1788 BFD_ASSERT (seq == NULL);
1790 qsort (sequences, n, sizeof (struct line_sequence), compare_sequences);
1792 /* Make the list binary-searchable by trimming overlapping entries
1793 and removing nested entries. */
1795 last_high_pc = sequences[0].last_line->address;
1796 for (n = 1; n < table->num_sequences; n++)
1798 if (sequences[n].low_pc < last_high_pc)
1800 if (sequences[n].last_line->address <= last_high_pc)
1801 /* Skip nested entries. */
1804 /* Trim overlapping entries. */
1805 sequences[n].low_pc = last_high_pc;
1807 last_high_pc = sequences[n].last_line->address;
1808 if (n > num_sequences)
1810 /* Close up the gap. */
1811 sequences[num_sequences].low_pc = sequences[n].low_pc;
1812 sequences[num_sequences].last_line = sequences[n].last_line;
1817 table->sequences = sequences;
1818 table->num_sequences = num_sequences;
1822 /* Add directory to TABLE. CUR_DIR memory ownership is taken by TABLE. */
1825 line_info_add_include_dir (struct line_info_table *table, char *cur_dir)
1827 if ((table->num_dirs % DIR_ALLOC_CHUNK) == 0)
1832 amt = table->num_dirs + DIR_ALLOC_CHUNK;
1833 amt *= sizeof (char *);
1835 tmp = (char **) bfd_realloc (table->dirs, amt);
1841 table->dirs[table->num_dirs++] = cur_dir;
1846 line_info_add_include_dir_stub (struct line_info_table *table, char *cur_dir,
1847 unsigned int dir ATTRIBUTE_UNUSED,
1848 unsigned int xtime ATTRIBUTE_UNUSED,
1849 unsigned int size ATTRIBUTE_UNUSED)
1851 return line_info_add_include_dir (table, cur_dir);
1854 /* Add file to TABLE. CUR_FILE memory ownership is taken by TABLE. */
1857 line_info_add_file_name (struct line_info_table *table, char *cur_file,
1858 unsigned int dir, unsigned int xtime,
1861 if ((table->num_files % FILE_ALLOC_CHUNK) == 0)
1863 struct fileinfo *tmp;
1866 amt = table->num_files + FILE_ALLOC_CHUNK;
1867 amt *= sizeof (struct fileinfo);
1869 tmp = (struct fileinfo *) bfd_realloc (table->files, amt);
1875 table->files[table->num_files].name = cur_file;
1876 table->files[table->num_files].dir = dir;
1877 table->files[table->num_files].time = xtime;
1878 table->files[table->num_files].size = size;
1883 /* Read directory or file name entry format, starting with byte of
1884 format count entries, ULEB128 pairs of entry formats, ULEB128 of
1885 entries count and the entries themselves in the described entry
1889 read_formatted_entries (struct comp_unit *unit, bfd_byte **bufp,
1890 bfd_byte *buf_end, struct line_info_table *table,
1891 bfd_boolean (*callback) (struct line_info_table *table,
1897 bfd *abfd = unit->abfd;
1898 bfd_byte format_count, formati;
1899 bfd_vma data_count, datai;
1900 bfd_byte *buf = *bufp;
1901 bfd_byte *format_header_data;
1902 unsigned int bytes_read;
1904 format_count = read_1_byte (abfd, buf, buf_end);
1906 format_header_data = buf;
1907 for (formati = 0; formati < format_count; formati++)
1909 _bfd_safe_read_leb128 (abfd, buf, &bytes_read, FALSE, buf_end);
1911 _bfd_safe_read_leb128 (abfd, buf, &bytes_read, FALSE, buf_end);
1915 data_count = _bfd_safe_read_leb128 (abfd, buf, &bytes_read, FALSE, buf_end);
1917 if (format_count == 0 && data_count != 0)
1919 _bfd_error_handler (_("DWARF error: zero format count"));
1920 bfd_set_error (bfd_error_bad_value);
1924 /* PR 22210. Paranoia check. Don't bother running the loop
1925 if we know that we are going to run out of buffer. */
1926 if (data_count > (bfd_vma) (buf_end - buf))
1929 (_("DWARF error: data count (%" PRIx64 ") larger than buffer size"),
1930 (uint64_t) data_count);
1931 bfd_set_error (bfd_error_bad_value);
1935 for (datai = 0; datai < data_count; datai++)
1937 bfd_byte *format = format_header_data;
1940 memset (&fe, 0, sizeof fe);
1941 for (formati = 0; formati < format_count; formati++)
1943 bfd_vma content_type, form;
1945 char **stringp = &string_trash;
1946 unsigned int uint_trash, *uintp = &uint_trash;
1947 struct attribute attr;
1949 content_type = _bfd_safe_read_leb128 (abfd, format, &bytes_read,
1951 format += bytes_read;
1952 switch (content_type)
1957 case DW_LNCT_directory_index:
1960 case DW_LNCT_timestamp:
1970 (_("DWARF error: unknown format content type %" PRIu64),
1971 (uint64_t) content_type);
1972 bfd_set_error (bfd_error_bad_value);
1976 form = _bfd_safe_read_leb128 (abfd, format, &bytes_read, FALSE,
1978 format += bytes_read;
1980 buf = read_attribute_value (&attr, form, 0, unit, buf, buf_end);
1985 case DW_FORM_string:
1986 case DW_FORM_line_strp:
1987 *stringp = attr.u.str;
1995 *uintp = attr.u.val;
2000 if (!callback (table, fe.name, fe.dir, fe.time, fe.size))
2008 /* Decode the line number information for UNIT. */
2010 static struct line_info_table*
2011 decode_line_info (struct comp_unit *unit, struct dwarf2_debug *stash)
2013 bfd *abfd = unit->abfd;
2014 struct line_info_table* table;
2017 struct line_head lh;
2018 unsigned int i, bytes_read, offset_size;
2019 char *cur_file, *cur_dir;
2020 unsigned char op_code, extended_op, adj_opcode;
2021 unsigned int exop_len;
2024 if (! read_section (abfd, &stash->debug_sections[debug_line],
2025 stash->syms, unit->line_offset,
2026 &stash->dwarf_line_buffer, &stash->dwarf_line_size))
2029 amt = sizeof (struct line_info_table);
2030 table = (struct line_info_table *) bfd_alloc (abfd, amt);
2034 table->comp_dir = unit->comp_dir;
2036 table->num_files = 0;
2037 table->files = NULL;
2039 table->num_dirs = 0;
2042 table->num_sequences = 0;
2043 table->sequences = NULL;
2045 table->lcl_head = NULL;
2047 if (stash->dwarf_line_size < 16)
2050 (_("DWARF error: line info section is too small (%" PRId64 ")"),
2051 (int64_t) stash->dwarf_line_size);
2052 bfd_set_error (bfd_error_bad_value);
2055 line_ptr = stash->dwarf_line_buffer + unit->line_offset;
2056 line_end = stash->dwarf_line_buffer + stash->dwarf_line_size;
2058 /* Read in the prologue. */
2059 lh.total_length = read_4_bytes (abfd, line_ptr, line_end);
2062 if (lh.total_length == 0xffffffff)
2064 lh.total_length = read_8_bytes (abfd, line_ptr, line_end);
2068 else if (lh.total_length == 0 && unit->addr_size == 8)
2070 /* Handle (non-standard) 64-bit DWARF2 formats. */
2071 lh.total_length = read_4_bytes (abfd, line_ptr, line_end);
2076 if (lh.total_length > (size_t) (line_end - line_ptr))
2079 /* xgettext: c-format */
2080 (_("DWARF error: line info data is bigger (%#" PRIx64 ")"
2081 " than the space remaining in the section (%#lx)"),
2082 (uint64_t) lh.total_length, (unsigned long) (line_end - line_ptr));
2083 bfd_set_error (bfd_error_bad_value);
2087 line_end = line_ptr + lh.total_length;
2089 lh.version = read_2_bytes (abfd, line_ptr, line_end);
2090 if (lh.version < 2 || lh.version > 5)
2093 (_("DWARF error: unhandled .debug_line version %d"), lh.version);
2094 bfd_set_error (bfd_error_bad_value);
2099 if (line_ptr + offset_size + (lh.version >= 5 ? 8 : (lh.version >= 4 ? 6 : 5))
2103 (_("DWARF error: ran out of room reading prologue"));
2104 bfd_set_error (bfd_error_bad_value);
2108 if (lh.version >= 5)
2110 unsigned int segment_selector_size;
2112 /* Skip address size. */
2113 read_1_byte (abfd, line_ptr, line_end);
2116 segment_selector_size = read_1_byte (abfd, line_ptr, line_end);
2118 if (segment_selector_size != 0)
2121 (_("DWARF error: line info unsupported segment selector size %u"),
2122 segment_selector_size);
2123 bfd_set_error (bfd_error_bad_value);
2128 if (offset_size == 4)
2129 lh.prologue_length = read_4_bytes (abfd, line_ptr, line_end);
2131 lh.prologue_length = read_8_bytes (abfd, line_ptr, line_end);
2132 line_ptr += offset_size;
2134 lh.minimum_instruction_length = read_1_byte (abfd, line_ptr, line_end);
2137 if (lh.version >= 4)
2139 lh.maximum_ops_per_insn = read_1_byte (abfd, line_ptr, line_end);
2143 lh.maximum_ops_per_insn = 1;
2145 if (lh.maximum_ops_per_insn == 0)
2148 (_("DWARF error: invalid maximum operations per instruction"));
2149 bfd_set_error (bfd_error_bad_value);
2153 lh.default_is_stmt = read_1_byte (abfd, line_ptr, line_end);
2156 lh.line_base = read_1_signed_byte (abfd, line_ptr, line_end);
2159 lh.line_range = read_1_byte (abfd, line_ptr, line_end);
2162 lh.opcode_base = read_1_byte (abfd, line_ptr, line_end);
2165 if (line_ptr + (lh.opcode_base - 1) >= line_end)
2167 _bfd_error_handler (_("DWARF error: ran out of room reading opcodes"));
2168 bfd_set_error (bfd_error_bad_value);
2172 amt = lh.opcode_base * sizeof (unsigned char);
2173 lh.standard_opcode_lengths = (unsigned char *) bfd_alloc (abfd, amt);
2175 lh.standard_opcode_lengths[0] = 1;
2177 for (i = 1; i < lh.opcode_base; ++i)
2179 lh.standard_opcode_lengths[i] = read_1_byte (abfd, line_ptr, line_end);
2183 if (lh.version >= 5)
2185 /* Read directory table. */
2186 if (!read_formatted_entries (unit, &line_ptr, line_end, table,
2187 line_info_add_include_dir_stub))
2190 /* Read file name table. */
2191 if (!read_formatted_entries (unit, &line_ptr, line_end, table,
2192 line_info_add_file_name))
2197 /* Read directory table. */
2198 while ((cur_dir = read_string (abfd, line_ptr, line_end, &bytes_read)) != NULL)
2200 line_ptr += bytes_read;
2202 if (!line_info_add_include_dir (table, cur_dir))
2206 line_ptr += bytes_read;
2208 /* Read file name table. */
2209 while ((cur_file = read_string (abfd, line_ptr, line_end, &bytes_read)) != NULL)
2211 unsigned int dir, xtime, size;
2213 line_ptr += bytes_read;
2215 dir = _bfd_safe_read_leb128 (abfd, line_ptr, &bytes_read, FALSE, line_end);
2216 line_ptr += bytes_read;
2217 xtime = _bfd_safe_read_leb128 (abfd, line_ptr, &bytes_read, FALSE, line_end);
2218 line_ptr += bytes_read;
2219 size = _bfd_safe_read_leb128 (abfd, line_ptr, &bytes_read, FALSE, line_end);
2220 line_ptr += bytes_read;
2222 if (!line_info_add_file_name (table, cur_file, dir, xtime, size))
2226 line_ptr += bytes_read;
2229 /* Read the statement sequences until there's nothing left. */
2230 while (line_ptr < line_end)
2232 /* State machine registers. */
2233 bfd_vma address = 0;
2234 unsigned char op_index = 0;
2235 char * filename = table->num_files ? concat_filename (table, 1) : NULL;
2236 unsigned int line = 1;
2237 unsigned int column = 0;
2238 unsigned int discriminator = 0;
2239 int is_stmt = lh.default_is_stmt;
2240 int end_sequence = 0;
2241 unsigned int dir, xtime, size;
2242 /* eraxxon@alumni.rice.edu: Against the DWARF2 specs, some
2243 compilers generate address sequences that are wildly out of
2244 order using DW_LNE_set_address (e.g. Intel C++ 6.0 compiler
2245 for ia64-Linux). Thus, to determine the low and high
2246 address, we must compare on every DW_LNS_copy, etc. */
2247 bfd_vma low_pc = (bfd_vma) -1;
2248 bfd_vma high_pc = 0;
2250 /* Decode the table. */
2251 while (!end_sequence && line_ptr < line_end)
2253 op_code = read_1_byte (abfd, line_ptr, line_end);
2256 if (op_code >= lh.opcode_base)
2258 /* Special operand. */
2259 adj_opcode = op_code - lh.opcode_base;
2260 if (lh.line_range == 0)
2262 if (lh.maximum_ops_per_insn == 1)
2263 address += (adj_opcode / lh.line_range
2264 * lh.minimum_instruction_length);
2267 address += ((op_index + adj_opcode / lh.line_range)
2268 / lh.maximum_ops_per_insn
2269 * lh.minimum_instruction_length);
2270 op_index = ((op_index + adj_opcode / lh.line_range)
2271 % lh.maximum_ops_per_insn);
2273 line += lh.line_base + (adj_opcode % lh.line_range);
2274 /* Append row to matrix using current values. */
2275 if (!add_line_info (table, address, op_index, filename,
2276 line, column, discriminator, 0))
2279 if (address < low_pc)
2281 if (address > high_pc)
2284 else switch (op_code)
2286 case DW_LNS_extended_op:
2287 exop_len = _bfd_safe_read_leb128 (abfd, line_ptr, &bytes_read,
2289 line_ptr += bytes_read;
2290 extended_op = read_1_byte (abfd, line_ptr, line_end);
2293 switch (extended_op)
2295 case DW_LNE_end_sequence:
2297 if (!add_line_info (table, address, op_index, filename, line,
2298 column, discriminator, end_sequence))
2301 if (address < low_pc)
2303 if (address > high_pc)
2305 if (!arange_add (unit, &unit->arange, low_pc, high_pc))
2308 case DW_LNE_set_address:
2309 address = read_address (unit, line_ptr, line_end);
2311 line_ptr += unit->addr_size;
2313 case DW_LNE_define_file:
2314 cur_file = read_string (abfd, line_ptr, line_end, &bytes_read);
2315 line_ptr += bytes_read;
2316 dir = _bfd_safe_read_leb128 (abfd, line_ptr, &bytes_read,
2318 line_ptr += bytes_read;
2319 xtime = _bfd_safe_read_leb128 (abfd, line_ptr, &bytes_read,
2321 line_ptr += bytes_read;
2322 size = _bfd_safe_read_leb128 (abfd, line_ptr, &bytes_read,
2324 line_ptr += bytes_read;
2325 if (!line_info_add_file_name (table, cur_file, dir,
2329 case DW_LNE_set_discriminator:
2331 _bfd_safe_read_leb128 (abfd, line_ptr, &bytes_read,
2333 line_ptr += bytes_read;
2335 case DW_LNE_HP_source_file_correlation:
2336 line_ptr += exop_len - 1;
2340 (_("DWARF error: mangled line number section"));
2341 bfd_set_error (bfd_error_bad_value);
2343 if (filename != NULL)
2349 if (!add_line_info (table, address, op_index,
2350 filename, line, column, discriminator, 0))
2353 if (address < low_pc)
2355 if (address > high_pc)
2358 case DW_LNS_advance_pc:
2359 if (lh.maximum_ops_per_insn == 1)
2360 address += (lh.minimum_instruction_length
2361 * _bfd_safe_read_leb128 (abfd, line_ptr,
2366 bfd_vma adjust = _bfd_safe_read_leb128 (abfd, line_ptr,
2369 address = ((op_index + adjust) / lh.maximum_ops_per_insn
2370 * lh.minimum_instruction_length);
2371 op_index = (op_index + adjust) % lh.maximum_ops_per_insn;
2373 line_ptr += bytes_read;
2375 case DW_LNS_advance_line:
2376 line += _bfd_safe_read_leb128 (abfd, line_ptr, &bytes_read,
2378 line_ptr += bytes_read;
2380 case DW_LNS_set_file:
2384 /* The file and directory tables are 0
2385 based, the references are 1 based. */
2386 file = _bfd_safe_read_leb128 (abfd, line_ptr, &bytes_read,
2388 line_ptr += bytes_read;
2391 filename = concat_filename (table, file);
2394 case DW_LNS_set_column:
2395 column = _bfd_safe_read_leb128 (abfd, line_ptr, &bytes_read,
2397 line_ptr += bytes_read;
2399 case DW_LNS_negate_stmt:
2400 is_stmt = (!is_stmt);
2402 case DW_LNS_set_basic_block:
2404 case DW_LNS_const_add_pc:
2405 if (lh.line_range == 0)
2407 if (lh.maximum_ops_per_insn == 1)
2408 address += (lh.minimum_instruction_length
2409 * ((255 - lh.opcode_base) / lh.line_range));
2412 bfd_vma adjust = ((255 - lh.opcode_base) / lh.line_range);
2413 address += (lh.minimum_instruction_length
2414 * ((op_index + adjust)
2415 / lh.maximum_ops_per_insn));
2416 op_index = (op_index + adjust) % lh.maximum_ops_per_insn;
2419 case DW_LNS_fixed_advance_pc:
2420 address += read_2_bytes (abfd, line_ptr, line_end);
2425 /* Unknown standard opcode, ignore it. */
2426 for (i = 0; i < lh.standard_opcode_lengths[op_code]; i++)
2428 (void) _bfd_safe_read_leb128 (abfd, line_ptr, &bytes_read,
2430 line_ptr += bytes_read;
2440 if (sort_line_sequences (table))
2444 while (table->sequences != NULL)
2446 struct line_sequence* seq = table->sequences;
2447 table->sequences = table->sequences->prev_sequence;
2450 if (table->files != NULL)
2451 free (table->files);
2452 if (table->dirs != NULL)
2457 /* If ADDR is within TABLE set the output parameters and return the
2458 range of addresses covered by the entry used to fill them out.
2459 Otherwise set * FILENAME_PTR to NULL and return 0.
2460 The parameters FILENAME_PTR, LINENUMBER_PTR and DISCRIMINATOR_PTR
2461 are pointers to the objects to be filled in. */
2464 lookup_address_in_line_info_table (struct line_info_table *table,
2466 const char **filename_ptr,
2467 unsigned int *linenumber_ptr,
2468 unsigned int *discriminator_ptr)
2470 struct line_sequence *seq = NULL;
2471 struct line_info *info;
2474 /* Binary search the array of sequences. */
2476 high = table->num_sequences;
2479 mid = (low + high) / 2;
2480 seq = &table->sequences[mid];
2481 if (addr < seq->low_pc)
2483 else if (addr >= seq->last_line->address)
2489 /* Check for a valid sequence. */
2490 if (!seq || addr < seq->low_pc || addr >= seq->last_line->address)
2493 if (!build_line_info_table (table, seq))
2496 /* Binary search the array of line information. */
2498 high = seq->num_lines;
2502 mid = (low + high) / 2;
2503 info = seq->line_info_lookup[mid];
2504 if (addr < info->address)
2506 else if (addr >= seq->line_info_lookup[mid + 1]->address)
2512 /* Check for a valid line information entry. */
2514 && addr >= info->address
2515 && addr < seq->line_info_lookup[mid + 1]->address
2516 && !(info->end_sequence || info == seq->last_line))
2518 *filename_ptr = info->filename;
2519 *linenumber_ptr = info->line;
2520 if (discriminator_ptr)
2521 *discriminator_ptr = info->discriminator;
2522 return seq->last_line->address - seq->low_pc;
2526 *filename_ptr = NULL;
2530 /* Read in the .debug_ranges section for future reference. */
2533 read_debug_ranges (struct comp_unit * unit)
2535 struct dwarf2_debug * stash = unit->stash;
2537 return read_section (unit->abfd, &stash->debug_sections[debug_ranges],
2539 &stash->dwarf_ranges_buffer,
2540 &stash->dwarf_ranges_size);
2543 /* Function table functions. */
2546 compare_lookup_funcinfos (const void * a, const void * b)
2548 const struct lookup_funcinfo * lookup1 = a;
2549 const struct lookup_funcinfo * lookup2 = b;
2551 if (lookup1->low_addr < lookup2->low_addr)
2553 if (lookup1->low_addr > lookup2->low_addr)
2555 if (lookup1->high_addr < lookup2->high_addr)
2557 if (lookup1->high_addr > lookup2->high_addr)
2564 build_lookup_funcinfo_table (struct comp_unit * unit)
2566 struct lookup_funcinfo *lookup_funcinfo_table = unit->lookup_funcinfo_table;
2567 unsigned int number_of_functions = unit->number_of_functions;
2568 struct funcinfo *each;
2569 struct lookup_funcinfo *entry;
2571 struct arange *range;
2572 bfd_vma low_addr, high_addr;
2574 if (lookup_funcinfo_table || number_of_functions == 0)
2577 /* Create the function info lookup table. */
2578 lookup_funcinfo_table = (struct lookup_funcinfo *)
2579 bfd_malloc (number_of_functions * sizeof (struct lookup_funcinfo));
2580 if (lookup_funcinfo_table == NULL)
2583 /* Populate the function info lookup table. */
2584 func_index = number_of_functions;
2585 for (each = unit->function_table; each; each = each->prev_func)
2587 entry = &lookup_funcinfo_table[--func_index];
2588 entry->funcinfo = each;
2590 /* Calculate the lowest and highest address for this function entry. */
2591 low_addr = entry->funcinfo->arange.low;
2592 high_addr = entry->funcinfo->arange.high;
2594 for (range = entry->funcinfo->arange.next; range; range = range->next)
2596 if (range->low < low_addr)
2597 low_addr = range->low;
2598 if (range->high > high_addr)
2599 high_addr = range->high;
2602 entry->low_addr = low_addr;
2603 entry->high_addr = high_addr;
2606 BFD_ASSERT (func_index == 0);
2608 /* Sort the function by address. */
2609 qsort (lookup_funcinfo_table,
2610 number_of_functions,
2611 sizeof (struct lookup_funcinfo),
2612 compare_lookup_funcinfos);
2614 /* Calculate the high watermark for each function in the lookup table. */
2615 high_addr = lookup_funcinfo_table[0].high_addr;
2616 for (func_index = 1; func_index < number_of_functions; func_index++)
2618 entry = &lookup_funcinfo_table[func_index];
2619 if (entry->high_addr > high_addr)
2620 high_addr = entry->high_addr;
2622 entry->high_addr = high_addr;
2625 unit->lookup_funcinfo_table = lookup_funcinfo_table;
2629 /* If ADDR is within UNIT's function tables, set FUNCTION_PTR, and return
2630 TRUE. Note that we need to find the function that has the smallest range
2631 that contains ADDR, to handle inlined functions without depending upon
2632 them being ordered in TABLE by increasing range. */
2635 lookup_address_in_function_table (struct comp_unit *unit,
2637 struct funcinfo **function_ptr)
2639 unsigned int number_of_functions = unit->number_of_functions;
2640 struct lookup_funcinfo* lookup_funcinfo = NULL;
2641 struct funcinfo* funcinfo = NULL;
2642 struct funcinfo* best_fit = NULL;
2643 bfd_vma best_fit_len = 0;
2644 bfd_size_type low, high, mid, first;
2645 struct arange *arange;
2647 if (number_of_functions == 0)
2650 if (!build_lookup_funcinfo_table (unit))
2653 if (unit->lookup_funcinfo_table[number_of_functions - 1].high_addr < addr)
2656 /* Find the first function in the lookup table which may contain the
2657 specified address. */
2659 high = number_of_functions;
2663 mid = (low + high) / 2;
2664 lookup_funcinfo = &unit->lookup_funcinfo_table[mid];
2665 if (addr < lookup_funcinfo->low_addr)
2667 else if (addr >= lookup_funcinfo->high_addr)
2673 /* Find the 'best' match for the address. The prior algorithm defined the
2674 best match as the function with the smallest address range containing
2675 the specified address. This definition should probably be changed to the
2676 innermost inline routine containing the address, but right now we want
2677 to get the same results we did before. */
2678 while (first < number_of_functions)
2680 if (addr < unit->lookup_funcinfo_table[first].low_addr)
2682 funcinfo = unit->lookup_funcinfo_table[first].funcinfo;
2684 for (arange = &funcinfo->arange; arange; arange = arange->next)
2686 if (addr < arange->low || addr >= arange->high)
2690 || arange->high - arange->low < best_fit_len
2691 /* The following comparison is designed to return the same
2692 match as the previous algorithm for routines which have the
2693 same best fit length. */
2694 || (arange->high - arange->low == best_fit_len
2695 && funcinfo > best_fit))
2697 best_fit = funcinfo;
2698 best_fit_len = arange->high - arange->low;
2708 *function_ptr = best_fit;
2712 /* If SYM at ADDR is within function table of UNIT, set FILENAME_PTR
2713 and LINENUMBER_PTR, and return TRUE. */
2716 lookup_symbol_in_function_table (struct comp_unit *unit,
2719 const char **filename_ptr,
2720 unsigned int *linenumber_ptr)
2722 struct funcinfo* each_func;
2723 struct funcinfo* best_fit = NULL;
2724 bfd_vma best_fit_len = 0;
2725 struct arange *arange;
2726 const char *name = bfd_asymbol_name (sym);
2727 asection *sec = bfd_get_section (sym);
2729 for (each_func = unit->function_table;
2731 each_func = each_func->prev_func)
2733 for (arange = &each_func->arange;
2735 arange = arange->next)
2737 if ((!each_func->sec || each_func->sec == sec)
2738 && addr >= arange->low
2739 && addr < arange->high
2741 && strcmp (name, each_func->name) == 0
2743 || arange->high - arange->low < best_fit_len))
2745 best_fit = each_func;
2746 best_fit_len = arange->high - arange->low;
2753 best_fit->sec = sec;
2754 *filename_ptr = best_fit->file;
2755 *linenumber_ptr = best_fit->line;
2762 /* Variable table functions. */
2764 /* If SYM is within variable table of UNIT, set FILENAME_PTR and
2765 LINENUMBER_PTR, and return TRUE. */
2768 lookup_symbol_in_variable_table (struct comp_unit *unit,
2771 const char **filename_ptr,
2772 unsigned int *linenumber_ptr)
2774 const char *name = bfd_asymbol_name (sym);
2775 asection *sec = bfd_get_section (sym);
2776 struct varinfo* each;
2778 for (each = unit->variable_table; each; each = each->prev_var)
2779 if (each->stack == 0
2780 && each->file != NULL
2781 && each->name != NULL
2782 && each->addr == addr
2783 && (!each->sec || each->sec == sec)
2784 && strcmp (name, each->name) == 0)
2790 *filename_ptr = each->file;
2791 *linenumber_ptr = each->line;
2799 find_abstract_instance (struct comp_unit * unit,
2800 bfd_byte * orig_info_ptr,
2801 struct attribute * attr_ptr,
2802 const char ** pname,
2803 bfd_boolean * is_linkage,
2804 char ** filename_ptr,
2805 int * linenumber_ptr)
2807 bfd *abfd = unit->abfd;
2809 bfd_byte *info_ptr_end;
2810 unsigned int abbrev_number, bytes_read, i;
2811 struct abbrev_info *abbrev;
2812 bfd_uint64_t die_ref = attr_ptr->u.val;
2813 struct attribute attr;
2814 const char *name = NULL;
2816 /* DW_FORM_ref_addr can reference an entry in a different CU. It
2817 is an offset from the .debug_info section, not the current CU. */
2818 if (attr_ptr->form == DW_FORM_ref_addr)
2820 /* We only support DW_FORM_ref_addr within the same file, so
2821 any relocations should be resolved already. Check this by
2822 testing for a zero die_ref; There can't be a valid reference
2823 to the header of a .debug_info section.
2824 DW_FORM_ref_addr is an offset relative to .debug_info.
2825 Normally when using the GNU linker this is accomplished by
2826 emitting a symbolic reference to a label, because .debug_info
2827 sections are linked at zero. When there are multiple section
2828 groups containing .debug_info, as there might be in a
2829 relocatable object file, it would be reasonable to assume that
2830 a symbolic reference to a label in any .debug_info section
2831 might be used. Since we lay out multiple .debug_info
2832 sections at non-zero VMAs (see place_sections), and read
2833 them contiguously into stash->info_ptr_memory, that means
2834 the reference is relative to stash->info_ptr_memory. */
2837 info_ptr = unit->stash->info_ptr_memory;
2838 info_ptr_end = unit->stash->info_ptr_end;
2839 total = info_ptr_end - info_ptr;
2842 else if (die_ref >= total)
2845 (_("DWARF error: invalid abstract instance DIE ref"));
2846 bfd_set_error (bfd_error_bad_value);
2849 info_ptr += die_ref;
2851 /* Now find the CU containing this pointer. */
2852 if (info_ptr >= unit->info_ptr_unit && info_ptr < unit->end_ptr)
2853 info_ptr_end = unit->end_ptr;
2856 /* Check other CUs to see if they contain the abbrev. */
2857 struct comp_unit * u;
2859 for (u = unit->prev_unit; u != NULL; u = u->prev_unit)
2860 if (info_ptr >= u->info_ptr_unit && info_ptr < u->end_ptr)
2864 for (u = unit->next_unit; u != NULL; u = u->next_unit)
2865 if (info_ptr >= u->info_ptr_unit && info_ptr < u->end_ptr)
2871 info_ptr_end = unit->end_ptr;
2873 /* else FIXME: What do we do now ? */
2876 else if (attr_ptr->form == DW_FORM_GNU_ref_alt)
2878 info_ptr = read_alt_indirect_ref (unit, die_ref);
2879 if (info_ptr == NULL)
2882 (_("DWARF error: unable to read alt ref %" PRIu64),
2883 (uint64_t) die_ref);
2884 bfd_set_error (bfd_error_bad_value);
2887 info_ptr_end = (unit->stash->alt_dwarf_info_buffer
2888 + unit->stash->alt_dwarf_info_size);
2890 /* FIXME: Do we need to locate the correct CU, in a similar
2891 fashion to the code in the DW_FORM_ref_addr case above ? */
2895 /* DW_FORM_ref1, DW_FORM_ref2, DW_FORM_ref4, DW_FORM_ref8 or
2896 DW_FORM_ref_udata. These are all references relative to the
2897 start of the current CU. */
2900 info_ptr = unit->info_ptr_unit;
2901 info_ptr_end = unit->end_ptr;
2902 total = info_ptr_end - info_ptr;
2903 if (!die_ref || die_ref >= total)
2906 (_("DWARF error: invalid abstract instance DIE ref"));
2907 bfd_set_error (bfd_error_bad_value);
2910 info_ptr += die_ref;
2913 abbrev_number = _bfd_safe_read_leb128 (abfd, info_ptr, &bytes_read,
2914 FALSE, info_ptr_end);
2915 info_ptr += bytes_read;
2919 abbrev = lookup_abbrev (abbrev_number, unit->abbrevs);
2923 (_("DWARF error: could not find abbrev number %u"), abbrev_number);
2924 bfd_set_error (bfd_error_bad_value);
2929 for (i = 0; i < abbrev->num_attrs; ++i)
2931 info_ptr = read_attribute (&attr, &abbrev->attrs[i], unit,
2932 info_ptr, info_ptr_end);
2933 if (info_ptr == NULL)
2935 /* It doesn't ever make sense for DW_AT_specification to
2936 refer to the same DIE. Stop simple recursion. */
2937 if (info_ptr == orig_info_ptr)
2940 (_("DWARF error: abstract instance recursion detected"));
2941 bfd_set_error (bfd_error_bad_value);
2947 /* Prefer DW_AT_MIPS_linkage_name or DW_AT_linkage_name
2949 if (name == NULL && is_str_attr (attr.form))
2952 if (non_mangled (unit->lang))
2956 case DW_AT_specification:
2957 if (!find_abstract_instance (unit, info_ptr, &attr,
2959 filename_ptr, linenumber_ptr))
2962 case DW_AT_linkage_name:
2963 case DW_AT_MIPS_linkage_name:
2964 /* PR 16949: Corrupt debug info can place
2965 non-string forms into these attributes. */
2966 if (is_str_attr (attr.form))
2972 case DW_AT_decl_file:
2973 *filename_ptr = concat_filename (unit->line_table,
2976 case DW_AT_decl_line:
2977 *linenumber_ptr = attr.u.val;
2990 read_rangelist (struct comp_unit *unit, struct arange *arange,
2991 bfd_uint64_t offset)
2993 bfd_byte *ranges_ptr;
2994 bfd_byte *ranges_end;
2995 bfd_vma base_address = unit->base_address;
2997 if (! unit->stash->dwarf_ranges_buffer)
2999 if (! read_debug_ranges (unit))
3003 ranges_ptr = unit->stash->dwarf_ranges_buffer + offset;
3004 if (ranges_ptr < unit->stash->dwarf_ranges_buffer)
3006 ranges_end = unit->stash->dwarf_ranges_buffer + unit->stash->dwarf_ranges_size;
3013 /* PR 17512: file: 62cada7d. */
3014 if (ranges_ptr + 2 * unit->addr_size > ranges_end)
3017 low_pc = read_address (unit, ranges_ptr, ranges_end);
3018 ranges_ptr += unit->addr_size;
3019 high_pc = read_address (unit, ranges_ptr, ranges_end);
3020 ranges_ptr += unit->addr_size;
3022 if (low_pc == 0 && high_pc == 0)
3024 if (low_pc == -1UL && high_pc != -1UL)
3025 base_address = high_pc;
3028 if (!arange_add (unit, arange,
3029 base_address + low_pc, base_address + high_pc))
3036 /* DWARF2 Compilation unit functions. */
3038 /* Scan over each die in a comp. unit looking for functions to add
3039 to the function table and variables to the variable table. */
3042 scan_unit_for_symbols (struct comp_unit *unit)
3044 bfd *abfd = unit->abfd;
3045 bfd_byte *info_ptr = unit->first_child_die_ptr;
3046 bfd_byte *info_ptr_end = unit->stash->info_ptr_end;
3047 int nesting_level = 0;
3048 struct nest_funcinfo {
3049 struct funcinfo *func;
3051 int nested_funcs_size;
3053 /* Maintain a stack of in-scope functions and inlined functions, which we
3054 can use to set the caller_func field. */
3055 nested_funcs_size = 32;
3056 nested_funcs = (struct nest_funcinfo *)
3057 bfd_malloc (nested_funcs_size * sizeof (*nested_funcs));
3058 if (nested_funcs == NULL)
3060 nested_funcs[nesting_level].func = 0;
3062 while (nesting_level >= 0)
3064 unsigned int abbrev_number, bytes_read, i;
3065 struct abbrev_info *abbrev;
3066 struct attribute attr;
3067 struct funcinfo *func;
3068 struct varinfo *var;
3070 bfd_vma high_pc = 0;
3071 bfd_boolean high_pc_relative = FALSE;
3073 /* PR 17512: file: 9f405d9d. */
3074 if (info_ptr >= info_ptr_end)
3077 abbrev_number = _bfd_safe_read_leb128 (abfd, info_ptr, &bytes_read,
3078 FALSE, info_ptr_end);
3079 info_ptr += bytes_read;
3081 if (! abbrev_number)
3087 abbrev = lookup_abbrev (abbrev_number, unit->abbrevs);
3090 static unsigned int previous_failed_abbrev = -1U;
3092 /* Avoid multiple reports of the same missing abbrev. */
3093 if (abbrev_number != previous_failed_abbrev)
3096 (_("DWARF error: could not find abbrev number %u"),
3098 previous_failed_abbrev = abbrev_number;
3100 bfd_set_error (bfd_error_bad_value);
3105 if (abbrev->tag == DW_TAG_subprogram
3106 || abbrev->tag == DW_TAG_entry_point
3107 || abbrev->tag == DW_TAG_inlined_subroutine)
3109 bfd_size_type amt = sizeof (struct funcinfo);
3110 func = (struct funcinfo *) bfd_zalloc (abfd, amt);
3113 func->tag = abbrev->tag;
3114 func->prev_func = unit->function_table;
3115 unit->function_table = func;
3116 unit->number_of_functions++;
3117 BFD_ASSERT (!unit->cached);
3119 if (func->tag == DW_TAG_inlined_subroutine)
3120 for (i = nesting_level; i-- != 0; )
3121 if (nested_funcs[i].func)
3123 func->caller_func = nested_funcs[i].func;
3126 nested_funcs[nesting_level].func = func;
3131 if (abbrev->tag == DW_TAG_variable)
3133 bfd_size_type amt = sizeof (struct varinfo);
3134 var = (struct varinfo *) bfd_zalloc (abfd, amt);
3137 var->tag = abbrev->tag;
3139 var->prev_var = unit->variable_table;
3140 unit->variable_table = var;
3141 /* PR 18205: Missing debug information can cause this
3142 var to be attached to an already cached unit. */
3145 /* No inline function in scope at this nesting level. */
3146 nested_funcs[nesting_level].func = 0;
3149 for (i = 0; i < abbrev->num_attrs; ++i)
3151 info_ptr = read_attribute (&attr, &abbrev->attrs[i],
3152 unit, info_ptr, info_ptr_end);
3153 if (info_ptr == NULL)
3160 case DW_AT_call_file:
3161 func->caller_file = concat_filename (unit->line_table,
3165 case DW_AT_call_line:
3166 func->caller_line = attr.u.val;
3169 case DW_AT_abstract_origin:
3170 case DW_AT_specification:
3171 if (!find_abstract_instance (unit, info_ptr, &attr,
3180 /* Prefer DW_AT_MIPS_linkage_name or DW_AT_linkage_name
3182 if (func->name == NULL && is_str_attr (attr.form))
3184 func->name = attr.u.str;
3185 if (non_mangled (unit->lang))
3186 func->is_linkage = TRUE;
3190 case DW_AT_linkage_name:
3191 case DW_AT_MIPS_linkage_name:
3192 /* PR 16949: Corrupt debug info can place
3193 non-string forms into these attributes. */
3194 if (is_str_attr (attr.form))
3196 func->name = attr.u.str;
3197 func->is_linkage = TRUE;
3202 low_pc = attr.u.val;
3206 high_pc = attr.u.val;
3207 high_pc_relative = attr.form != DW_FORM_addr;
3211 if (!read_rangelist (unit, &func->arange, attr.u.val))
3215 case DW_AT_decl_file:
3216 func->file = concat_filename (unit->line_table,
3220 case DW_AT_decl_line:
3221 func->line = attr.u.val;
3233 if (is_str_attr (attr.form))
3234 var->name = attr.u.str;
3237 case DW_AT_decl_file:
3238 var->file = concat_filename (unit->line_table,
3242 case DW_AT_decl_line:
3243 var->line = attr.u.val;
3246 case DW_AT_external:
3247 if (attr.u.val != 0)
3251 case DW_AT_location:
3255 case DW_FORM_block1:
3256 case DW_FORM_block2:
3257 case DW_FORM_block4:
3258 case DW_FORM_exprloc:
3259 if (attr.u.blk->data != NULL
3260 && *attr.u.blk->data == DW_OP_addr)
3264 /* Verify that DW_OP_addr is the only opcode in the
3265 location, in which case the block size will be 1
3266 plus the address size. */
3267 /* ??? For TLS variables, gcc can emit
3268 DW_OP_addr <addr> DW_OP_GNU_push_tls_address
3269 which we don't handle here yet. */
3270 if (attr.u.blk->size == unit->addr_size + 1U)
3271 var->addr = bfd_get (unit->addr_size * 8,
3273 attr.u.blk->data + 1);
3288 if (high_pc_relative)
3291 if (func && high_pc != 0)
3293 if (!arange_add (unit, &func->arange, low_pc, high_pc))
3297 if (abbrev->has_children)
3301 if (nesting_level >= nested_funcs_size)
3303 struct nest_funcinfo *tmp;
3305 nested_funcs_size *= 2;
3306 tmp = (struct nest_funcinfo *)
3307 bfd_realloc (nested_funcs,
3308 nested_funcs_size * sizeof (*nested_funcs));
3313 nested_funcs[nesting_level].func = 0;
3317 free (nested_funcs);
3321 free (nested_funcs);
3325 /* Parse a DWARF2 compilation unit starting at INFO_PTR. This
3326 includes the compilation unit header that proceeds the DIE's, but
3327 does not include the length field that precedes each compilation
3328 unit header. END_PTR points one past the end of this comp unit.
3329 OFFSET_SIZE is the size of DWARF2 offsets (either 4 or 8 bytes).
3331 This routine does not read the whole compilation unit; only enough
3332 to get to the line number information for the compilation unit. */
3334 static struct comp_unit *
3335 parse_comp_unit (struct dwarf2_debug *stash,
3336 bfd_vma unit_length,
3337 bfd_byte *info_ptr_unit,
3338 unsigned int offset_size)
3340 struct comp_unit* unit;
3341 unsigned int version;
3342 bfd_uint64_t abbrev_offset = 0;
3343 /* Initialize it just to avoid a GCC false warning. */
3344 unsigned int addr_size = -1;
3345 struct abbrev_info** abbrevs;
3346 unsigned int abbrev_number, bytes_read, i;
3347 struct abbrev_info *abbrev;
3348 struct attribute attr;
3349 bfd_byte *info_ptr = stash->info_ptr;
3350 bfd_byte *end_ptr = info_ptr + unit_length;
3353 bfd_vma high_pc = 0;
3354 bfd *abfd = stash->bfd_ptr;
3355 bfd_boolean high_pc_relative = FALSE;
3356 enum dwarf_unit_type unit_type;
3358 version = read_2_bytes (abfd, info_ptr, end_ptr);
3360 if (version < 2 || version > 5)
3362 /* PR 19872: A version number of 0 probably means that there is padding
3363 at the end of the .debug_info section. Gold puts it there when
3364 performing an incremental link, for example. So do not generate
3365 an error, just return a NULL. */
3369 (_("DWARF error: found dwarf version '%u', this reader"
3370 " only handles version 2, 3, 4 and 5 information"), version);
3371 bfd_set_error (bfd_error_bad_value);
3377 unit_type = DW_UT_compile;
3380 unit_type = read_1_byte (abfd, info_ptr, end_ptr);
3383 addr_size = read_1_byte (abfd, info_ptr, end_ptr);
3387 BFD_ASSERT (offset_size == 4 || offset_size == 8);
3388 if (offset_size == 4)
3389 abbrev_offset = read_4_bytes (abfd, info_ptr, end_ptr);
3391 abbrev_offset = read_8_bytes (abfd, info_ptr, end_ptr);
3392 info_ptr += offset_size;
3396 addr_size = read_1_byte (abfd, info_ptr, end_ptr);
3400 if (unit_type == DW_UT_type)
3402 /* Skip type signature. */
3405 /* Skip type offset. */
3406 info_ptr += offset_size;
3409 if (addr_size > sizeof (bfd_vma))
3412 /* xgettext: c-format */
3413 (_("DWARF error: found address size '%u', this reader"
3414 " can not handle sizes greater than '%u'"),
3416 (unsigned int) sizeof (bfd_vma));
3417 bfd_set_error (bfd_error_bad_value);
3421 if (addr_size != 2 && addr_size != 4 && addr_size != 8)
3424 ("DWARF error: found address size '%u', this reader"
3425 " can only handle address sizes '2', '4' and '8'", addr_size);
3426 bfd_set_error (bfd_error_bad_value);
3430 /* Read the abbrevs for this compilation unit into a table. */
3431 abbrevs = read_abbrevs (abfd, abbrev_offset, stash);
3435 abbrev_number = _bfd_safe_read_leb128 (abfd, info_ptr, &bytes_read,
3437 info_ptr += bytes_read;
3438 if (! abbrev_number)
3440 /* PR 19872: An abbrev number of 0 probably means that there is padding
3441 at the end of the .debug_abbrev section. Gold puts it there when
3442 performing an incremental link, for example. So do not generate
3443 an error, just return a NULL. */
3447 abbrev = lookup_abbrev (abbrev_number, abbrevs);
3450 _bfd_error_handler (_("DWARF error: could not find abbrev number %u"),
3452 bfd_set_error (bfd_error_bad_value);
3456 amt = sizeof (struct comp_unit);
3457 unit = (struct comp_unit *) bfd_zalloc (abfd, amt);
3461 unit->version = version;
3462 unit->addr_size = addr_size;
3463 unit->offset_size = offset_size;
3464 unit->abbrevs = abbrevs;
3465 unit->end_ptr = end_ptr;
3466 unit->stash = stash;
3467 unit->info_ptr_unit = info_ptr_unit;
3469 for (i = 0; i < abbrev->num_attrs; ++i)
3471 info_ptr = read_attribute (&attr, &abbrev->attrs[i], unit, info_ptr, end_ptr);
3472 if (info_ptr == NULL)
3475 /* Store the data if it is of an attribute we want to keep in a
3476 partial symbol table. */
3479 case DW_AT_stmt_list:
3481 unit->line_offset = attr.u.val;
3485 if (is_str_attr (attr.form))
3486 unit->name = attr.u.str;
3490 low_pc = attr.u.val;
3491 /* If the compilation unit DIE has a DW_AT_low_pc attribute,
3492 this is the base address to use when reading location
3493 lists or range lists. */
3494 if (abbrev->tag == DW_TAG_compile_unit)
3495 unit->base_address = low_pc;
3499 high_pc = attr.u.val;
3500 high_pc_relative = attr.form != DW_FORM_addr;
3504 if (!read_rangelist (unit, &unit->arange, attr.u.val))
3508 case DW_AT_comp_dir:
3510 char *comp_dir = attr.u.str;
3512 /* PR 17512: file: 1fe726be. */
3513 if (! is_str_attr (attr.form))
3516 (_("DWARF error: DW_AT_comp_dir attribute encountered with a non-string form"));
3522 /* Irix 6.2 native cc prepends <machine>.: to the compilation
3523 directory, get rid of it. */
3524 char *cp = strchr (comp_dir, ':');
3526 if (cp && cp != comp_dir && cp[-1] == '.' && cp[1] == '/')
3529 unit->comp_dir = comp_dir;
3533 case DW_AT_language:
3534 unit->lang = attr.u.val;
3541 if (high_pc_relative)
3545 if (!arange_add (unit, &unit->arange, low_pc, high_pc))
3549 unit->first_child_die_ptr = info_ptr;
3553 /* Return TRUE if UNIT may contain the address given by ADDR. When
3554 there are functions written entirely with inline asm statements, the
3555 range info in the compilation unit header may not be correct. We
3556 need to consult the line info table to see if a compilation unit
3557 really contains the given address. */
3560 comp_unit_contains_address (struct comp_unit *unit, bfd_vma addr)
3562 struct arange *arange;
3567 arange = &unit->arange;
3570 if (addr >= arange->low && addr < arange->high)
3572 arange = arange->next;
3579 /* If UNIT contains ADDR, set the output parameters to the values for
3580 the line containing ADDR. The output parameters, FILENAME_PTR,
3581 FUNCTION_PTR, and LINENUMBER_PTR, are pointers to the objects
3584 Returns the range of addresses covered by the entry that was used
3585 to fill in *LINENUMBER_PTR or 0 if it was not filled in. */
3588 comp_unit_find_nearest_line (struct comp_unit *unit,
3590 const char **filename_ptr,
3591 struct funcinfo **function_ptr,
3592 unsigned int *linenumber_ptr,
3593 unsigned int *discriminator_ptr,
3594 struct dwarf2_debug *stash)
3601 if (! unit->line_table)
3603 if (! unit->stmtlist)
3609 unit->line_table = decode_line_info (unit, stash);
3611 if (! unit->line_table)
3617 if (unit->first_child_die_ptr < unit->end_ptr
3618 && ! scan_unit_for_symbols (unit))
3625 *function_ptr = NULL;
3626 func_p = lookup_address_in_function_table (unit, addr, function_ptr);
3627 if (func_p && (*function_ptr)->tag == DW_TAG_inlined_subroutine)
3628 stash->inliner_chain = *function_ptr;
3630 return lookup_address_in_line_info_table (unit->line_table, addr,
3636 /* Check to see if line info is already decoded in a comp_unit.
3637 If not, decode it. Returns TRUE if no errors were encountered;
3641 comp_unit_maybe_decode_line_info (struct comp_unit *unit,
3642 struct dwarf2_debug *stash)
3647 if (! unit->line_table)
3649 if (! unit->stmtlist)
3655 unit->line_table = decode_line_info (unit, stash);
3657 if (! unit->line_table)
3663 if (unit->first_child_die_ptr < unit->end_ptr
3664 && ! scan_unit_for_symbols (unit))
3674 /* If UNIT contains SYM at ADDR, set the output parameters to the
3675 values for the line containing SYM. The output parameters,
3676 FILENAME_PTR, and LINENUMBER_PTR, are pointers to the objects to be
3679 Return TRUE if UNIT contains SYM, and no errors were encountered;
3683 comp_unit_find_line (struct comp_unit *unit,
3686 const char **filename_ptr,
3687 unsigned int *linenumber_ptr,
3688 struct dwarf2_debug *stash)
3690 if (!comp_unit_maybe_decode_line_info (unit, stash))
3693 if (sym->flags & BSF_FUNCTION)
3694 return lookup_symbol_in_function_table (unit, sym, addr,
3698 return lookup_symbol_in_variable_table (unit, sym, addr,
3703 static struct funcinfo *
3704 reverse_funcinfo_list (struct funcinfo *head)
3706 struct funcinfo *rhead;
3707 struct funcinfo *temp;
3709 for (rhead = NULL; head; head = temp)
3711 temp = head->prev_func;
3712 head->prev_func = rhead;
3718 static struct varinfo *
3719 reverse_varinfo_list (struct varinfo *head)
3721 struct varinfo *rhead;
3722 struct varinfo *temp;
3724 for (rhead = NULL; head; head = temp)
3726 temp = head->prev_var;
3727 head->prev_var = rhead;
3733 /* Extract all interesting funcinfos and varinfos of a compilation
3734 unit into hash tables for faster lookup. Returns TRUE if no
3735 errors were enountered; FALSE otherwise. */
3738 comp_unit_hash_info (struct dwarf2_debug *stash,
3739 struct comp_unit *unit,
3740 struct info_hash_table *funcinfo_hash_table,
3741 struct info_hash_table *varinfo_hash_table)
3743 struct funcinfo* each_func;
3744 struct varinfo* each_var;
3745 bfd_boolean okay = TRUE;
3747 BFD_ASSERT (stash->info_hash_status != STASH_INFO_HASH_DISABLED);
3749 if (!comp_unit_maybe_decode_line_info (unit, stash))
3752 BFD_ASSERT (!unit->cached);
3754 /* To preserve the original search order, we went to visit the function
3755 infos in the reversed order of the list. However, making the list
3756 bi-directional use quite a bit of extra memory. So we reverse
3757 the list first, traverse the list in the now reversed order and
3758 finally reverse the list again to get back the original order. */
3759 unit->function_table = reverse_funcinfo_list (unit->function_table);
3760 for (each_func = unit->function_table;
3762 each_func = each_func->prev_func)
3764 /* Skip nameless functions. */
3765 if (each_func->name)
3766 /* There is no need to copy name string into hash table as
3767 name string is either in the dwarf string buffer or
3768 info in the stash. */
3769 okay = insert_info_hash_table (funcinfo_hash_table, each_func->name,
3770 (void*) each_func, FALSE);
3772 unit->function_table = reverse_funcinfo_list (unit->function_table);
3776 /* We do the same for variable infos. */
3777 unit->variable_table = reverse_varinfo_list (unit->variable_table);
3778 for (each_var = unit->variable_table;
3780 each_var = each_var->prev_var)
3782 /* Skip stack vars and vars with no files or names. */
3783 if (each_var->stack == 0
3784 && each_var->file != NULL
3785 && each_var->name != NULL)
3786 /* There is no need to copy name string into hash table as
3787 name string is either in the dwarf string buffer or
3788 info in the stash. */
3789 okay = insert_info_hash_table (varinfo_hash_table, each_var->name,
3790 (void*) each_var, FALSE);
3793 unit->variable_table = reverse_varinfo_list (unit->variable_table);
3794 unit->cached = TRUE;
3798 /* Locate a section in a BFD containing debugging info. The search starts
3799 from the section after AFTER_SEC, or from the first section in the BFD if
3800 AFTER_SEC is NULL. The search works by examining the names of the
3801 sections. There are three permissiable names. The first two are given
3802 by DEBUG_SECTIONS[debug_info] (whose standard DWARF2 names are .debug_info
3803 and .zdebug_info). The third is a prefix .gnu.linkonce.wi.
3804 This is a variation on the .debug_info section which has a checksum
3805 describing the contents appended onto the name. This allows the linker to
3806 identify and discard duplicate debugging sections for different
3807 compilation units. */
3808 #define GNU_LINKONCE_INFO ".gnu.linkonce.wi."
3811 find_debug_info (bfd *abfd, const struct dwarf_debug_section *debug_sections,
3812 asection *after_sec)
3817 if (after_sec == NULL)
3819 look = debug_sections[debug_info].uncompressed_name;
3820 msec = bfd_get_section_by_name (abfd, look);
3824 look = debug_sections[debug_info].compressed_name;
3827 msec = bfd_get_section_by_name (abfd, look);
3832 for (msec = abfd->sections; msec != NULL; msec = msec->next)
3833 if (CONST_STRNEQ (msec->name, GNU_LINKONCE_INFO))
3839 for (msec = after_sec->next; msec != NULL; msec = msec->next)
3841 look = debug_sections[debug_info].uncompressed_name;
3842 if (strcmp (msec->name, look) == 0)
3845 look = debug_sections[debug_info].compressed_name;
3846 if (look != NULL && strcmp (msec->name, look) == 0)
3849 if (CONST_STRNEQ (msec->name, GNU_LINKONCE_INFO))
3856 /* Transfer VMAs from object file to separate debug file. */
3859 set_debug_vma (bfd *orig_bfd, bfd *debug_bfd)
3863 for (s = orig_bfd->sections, d = debug_bfd->sections;
3864 s != NULL && d != NULL;
3865 s = s->next, d = d->next)
3867 if ((d->flags & SEC_DEBUGGING) != 0)
3869 /* ??? Assumes 1-1 correspondence between sections in the
3871 if (strcmp (s->name, d->name) == 0)
3873 d->output_section = s->output_section;
3874 d->output_offset = s->output_offset;
3880 /* Unset vmas for adjusted sections in STASH. */
3883 unset_sections (struct dwarf2_debug *stash)
3886 struct adjusted_section *p;
3888 i = stash->adjusted_section_count;
3889 p = stash->adjusted_sections;
3890 for (; i > 0; i--, p++)
3891 p->section->vma = 0;
3894 /* Set VMAs for allocated and .debug_info sections in ORIG_BFD, a
3895 relocatable object file. VMAs are normally all zero in relocatable
3896 object files, so if we want to distinguish locations in sections by
3897 address we need to set VMAs so the sections do not overlap. We
3898 also set VMA on .debug_info so that when we have multiple
3899 .debug_info sections (or the linkonce variant) they also do not
3900 overlap. The multiple .debug_info sections make up a single
3901 logical section. ??? We should probably do the same for other
3905 place_sections (bfd *orig_bfd, struct dwarf2_debug *stash)
3908 struct adjusted_section *p;
3910 const char *debug_info_name;
3912 if (stash->adjusted_section_count != 0)
3914 i = stash->adjusted_section_count;
3915 p = stash->adjusted_sections;
3916 for (; i > 0; i--, p++)
3917 p->section->vma = p->adj_vma;
3921 debug_info_name = stash->debug_sections[debug_info].uncompressed_name;
3928 for (sect = abfd->sections; sect != NULL; sect = sect->next)
3932 if ((sect->output_section != NULL
3933 && sect->output_section != sect
3934 && (sect->flags & SEC_DEBUGGING) == 0)
3938 is_debug_info = (strcmp (sect->name, debug_info_name) == 0
3939 || CONST_STRNEQ (sect->name, GNU_LINKONCE_INFO));
3941 if (!((sect->flags & SEC_ALLOC) != 0 && abfd == orig_bfd)
3947 if (abfd == stash->bfd_ptr)
3949 abfd = stash->bfd_ptr;
3953 stash->adjusted_section_count = -1;
3956 bfd_vma last_vma = 0, last_dwarf = 0;
3957 bfd_size_type amt = i * sizeof (struct adjusted_section);
3959 p = (struct adjusted_section *) bfd_malloc (amt);
3963 stash->adjusted_sections = p;
3964 stash->adjusted_section_count = i;
3971 for (sect = abfd->sections; sect != NULL; sect = sect->next)
3976 if ((sect->output_section != NULL
3977 && sect->output_section != sect
3978 && (sect->flags & SEC_DEBUGGING) == 0)
3982 is_debug_info = (strcmp (sect->name, debug_info_name) == 0
3983 || CONST_STRNEQ (sect->name, GNU_LINKONCE_INFO));
3985 if (!((sect->flags & SEC_ALLOC) != 0 && abfd == orig_bfd)
3989 sz = sect->rawsize ? sect->rawsize : sect->size;
3993 BFD_ASSERT (sect->alignment_power == 0);
3994 sect->vma = last_dwarf;
3999 /* Align the new address to the current section
4001 last_vma = ((last_vma
4002 + ~(-((bfd_vma) 1 << sect->alignment_power)))
4003 & (-((bfd_vma) 1 << sect->alignment_power)));
4004 sect->vma = last_vma;
4009 p->adj_vma = sect->vma;
4012 if (abfd == stash->bfd_ptr)
4014 abfd = stash->bfd_ptr;
4018 if (orig_bfd != stash->bfd_ptr)
4019 set_debug_vma (orig_bfd, stash->bfd_ptr);
4024 /* Look up a funcinfo by name using the given info hash table. If found,
4025 also update the locations pointed to by filename_ptr and linenumber_ptr.
4027 This function returns TRUE if a funcinfo that matches the given symbol
4028 and address is found with any error; otherwise it returns FALSE. */
4031 info_hash_lookup_funcinfo (struct info_hash_table *hash_table,
4034 const char **filename_ptr,
4035 unsigned int *linenumber_ptr)
4037 struct funcinfo* each_func;
4038 struct funcinfo* best_fit = NULL;
4039 bfd_vma best_fit_len = 0;
4040 struct info_list_node *node;
4041 struct arange *arange;
4042 const char *name = bfd_asymbol_name (sym);
4043 asection *sec = bfd_get_section (sym);
4045 for (node = lookup_info_hash_table (hash_table, name);
4049 each_func = (struct funcinfo *) node->info;
4050 for (arange = &each_func->arange;
4052 arange = arange->next)
4054 if ((!each_func->sec || each_func->sec == sec)
4055 && addr >= arange->low
4056 && addr < arange->high
4058 || arange->high - arange->low < best_fit_len))
4060 best_fit = each_func;
4061 best_fit_len = arange->high - arange->low;
4068 best_fit->sec = sec;
4069 *filename_ptr = best_fit->file;
4070 *linenumber_ptr = best_fit->line;
4077 /* Look up a varinfo by name using the given info hash table. If found,
4078 also update the locations pointed to by filename_ptr and linenumber_ptr.
4080 This function returns TRUE if a varinfo that matches the given symbol
4081 and address is found with any error; otherwise it returns FALSE. */
4084 info_hash_lookup_varinfo (struct info_hash_table *hash_table,
4087 const char **filename_ptr,
4088 unsigned int *linenumber_ptr)
4090 const char *name = bfd_asymbol_name (sym);
4091 asection *sec = bfd_get_section (sym);
4092 struct varinfo* each;
4093 struct info_list_node *node;
4095 for (node = lookup_info_hash_table (hash_table, name);
4099 each = (struct varinfo *) node->info;
4100 if (each->addr == addr
4101 && (!each->sec || each->sec == sec))
4104 *filename_ptr = each->file;
4105 *linenumber_ptr = each->line;
4113 /* Update the funcinfo and varinfo info hash tables if they are
4114 not up to date. Returns TRUE if there is no error; otherwise
4115 returns FALSE and disable the info hash tables. */
4118 stash_maybe_update_info_hash_tables (struct dwarf2_debug *stash)
4120 struct comp_unit *each;
4122 /* Exit if hash tables are up-to-date. */
4123 if (stash->all_comp_units == stash->hash_units_head)
4126 if (stash->hash_units_head)
4127 each = stash->hash_units_head->prev_unit;
4129 each = stash->last_comp_unit;
4133 if (!comp_unit_hash_info (stash, each, stash->funcinfo_hash_table,
4134 stash->varinfo_hash_table))
4136 stash->info_hash_status = STASH_INFO_HASH_DISABLED;
4139 each = each->prev_unit;
4142 stash->hash_units_head = stash->all_comp_units;
4146 /* Check consistency of info hash tables. This is for debugging only. */
4148 static void ATTRIBUTE_UNUSED
4149 stash_verify_info_hash_table (struct dwarf2_debug *stash)
4151 struct comp_unit *each_unit;
4152 struct funcinfo *each_func;
4153 struct varinfo *each_var;
4154 struct info_list_node *node;
4157 for (each_unit = stash->all_comp_units;
4159 each_unit = each_unit->next_unit)
4161 for (each_func = each_unit->function_table;
4163 each_func = each_func->prev_func)
4165 if (!each_func->name)
4167 node = lookup_info_hash_table (stash->funcinfo_hash_table,
4171 while (node && !found)
4173 found = node->info == each_func;
4179 for (each_var = each_unit->variable_table;
4181 each_var = each_var->prev_var)
4183 if (!each_var->name || !each_var->file || each_var->stack)
4185 node = lookup_info_hash_table (stash->varinfo_hash_table,
4189 while (node && !found)
4191 found = node->info == each_var;
4199 /* Check to see if we want to enable the info hash tables, which consume
4200 quite a bit of memory. Currently we only check the number times
4201 bfd_dwarf2_find_line is called. In the future, we may also want to
4202 take the number of symbols into account. */
4205 stash_maybe_enable_info_hash_tables (bfd *abfd, struct dwarf2_debug *stash)
4207 BFD_ASSERT (stash->info_hash_status == STASH_INFO_HASH_OFF);
4209 if (stash->info_hash_count++ < STASH_INFO_HASH_TRIGGER)
4212 /* FIXME: Maybe we should check the reduce_memory_overheads
4213 and optimize fields in the bfd_link_info structure ? */
4215 /* Create hash tables. */
4216 stash->funcinfo_hash_table = create_info_hash_table (abfd);
4217 stash->varinfo_hash_table = create_info_hash_table (abfd);
4218 if (!stash->funcinfo_hash_table || !stash->varinfo_hash_table)
4220 /* Turn off info hashes if any allocation above fails. */
4221 stash->info_hash_status = STASH_INFO_HASH_DISABLED;
4224 /* We need a forced update so that the info hash tables will
4225 be created even though there is no compilation unit. That
4226 happens if STASH_INFO_HASH_TRIGGER is 0. */
4227 stash_maybe_update_info_hash_tables (stash);
4228 stash->info_hash_status = STASH_INFO_HASH_ON;
4231 /* Find the file and line associated with a symbol and address using the
4232 info hash tables of a stash. If there is a match, the function returns
4233 TRUE and update the locations pointed to by filename_ptr and linenumber_ptr;
4234 otherwise it returns FALSE. */
4237 stash_find_line_fast (struct dwarf2_debug *stash,
4240 const char **filename_ptr,
4241 unsigned int *linenumber_ptr)
4243 BFD_ASSERT (stash->info_hash_status == STASH_INFO_HASH_ON);
4245 if (sym->flags & BSF_FUNCTION)
4246 return info_hash_lookup_funcinfo (stash->funcinfo_hash_table, sym, addr,
4247 filename_ptr, linenumber_ptr);
4248 return info_hash_lookup_varinfo (stash->varinfo_hash_table, sym, addr,
4249 filename_ptr, linenumber_ptr);
4252 /* Save current section VMAs. */
4255 save_section_vma (const bfd *abfd, struct dwarf2_debug *stash)
4260 if (abfd->section_count == 0)
4262 stash->sec_vma = bfd_malloc (sizeof (*stash->sec_vma) * abfd->section_count);
4263 if (stash->sec_vma == NULL)
4265 for (i = 0, s = abfd->sections; i < abfd->section_count; i++, s = s->next)
4267 if (s->output_section != NULL)
4268 stash->sec_vma[i] = s->output_section->vma + s->output_offset;
4270 stash->sec_vma[i] = s->vma;
4275 /* Compare current section VMAs against those at the time the stash
4276 was created. If find_nearest_line is used in linker warnings or
4277 errors early in the link process, the debug info stash will be
4278 invalid for later calls. This is because we relocate debug info
4279 sections, so the stashed section contents depend on symbol values,
4280 which in turn depend on section VMAs. */
4283 section_vma_same (const bfd *abfd, const struct dwarf2_debug *stash)
4288 for (i = 0, s = abfd->sections; i < abfd->section_count; i++, s = s->next)
4292 if (s->output_section != NULL)
4293 vma = s->output_section->vma + s->output_offset;
4296 if (vma != stash->sec_vma[i])
4302 /* Read debug information from DEBUG_BFD when DEBUG_BFD is specified.
4303 If DEBUG_BFD is not specified, we read debug information from ABFD
4304 or its gnu_debuglink. The results will be stored in PINFO.
4305 The function returns TRUE iff debug information is ready. */
4308 _bfd_dwarf2_slurp_debug_info (bfd *abfd, bfd *debug_bfd,
4309 const struct dwarf_debug_section *debug_sections,
4312 bfd_boolean do_place)
4314 bfd_size_type amt = sizeof (struct dwarf2_debug);
4315 bfd_size_type total_size;
4317 struct dwarf2_debug *stash = (struct dwarf2_debug *) *pinfo;
4321 if (stash->orig_bfd == abfd
4322 && section_vma_same (abfd, stash))
4324 /* Check that we did previously find some debug information
4325 before attempting to make use of it. */
4326 if (stash->bfd_ptr != NULL)
4328 if (do_place && !place_sections (abfd, stash))
4335 _bfd_dwarf2_cleanup_debug_info (abfd, pinfo);
4336 memset (stash, 0, amt);
4340 stash = (struct dwarf2_debug *) bfd_zalloc (abfd, amt);
4344 stash->orig_bfd = abfd;
4345 stash->debug_sections = debug_sections;
4346 stash->syms = symbols;
4347 if (!save_section_vma (abfd, stash))
4352 if (debug_bfd == NULL)
4355 msec = find_debug_info (debug_bfd, debug_sections, NULL);
4356 if (msec == NULL && abfd == debug_bfd)
4358 char * debug_filename;
4360 debug_filename = bfd_follow_build_id_debuglink (abfd, DEBUGDIR);
4361 if (debug_filename == NULL)
4362 debug_filename = bfd_follow_gnu_debuglink (abfd, DEBUGDIR);
4364 if (debug_filename == NULL)
4365 /* No dwarf2 info, and no gnu_debuglink to follow.
4366 Note that at this point the stash has been allocated, but
4367 contains zeros. This lets future calls to this function
4368 fail more quickly. */
4371 /* Set BFD_DECOMPRESS to decompress debug sections. */
4372 if ((debug_bfd = bfd_openr (debug_filename, NULL)) == NULL
4373 || !(debug_bfd->flags |= BFD_DECOMPRESS,
4374 bfd_check_format (debug_bfd, bfd_object))
4375 || (msec = find_debug_info (debug_bfd,
4376 debug_sections, NULL)) == NULL
4377 || !bfd_generic_link_read_symbols (debug_bfd))
4380 bfd_close (debug_bfd);
4381 /* FIXME: Should we report our failure to follow the debuglink ? */
4382 free (debug_filename);
4386 symbols = bfd_get_outsymbols (debug_bfd);
4387 stash->syms = symbols;
4388 stash->close_on_cleanup = TRUE;
4390 stash->bfd_ptr = debug_bfd;
4393 && !place_sections (abfd, stash))
4396 /* There can be more than one DWARF2 info section in a BFD these
4397 days. First handle the easy case when there's only one. If
4398 there's more than one, try case two: none of the sections is
4399 compressed. In that case, read them all in and produce one
4400 large stash. We do this in two passes - in the first pass we
4401 just accumulate the section sizes, and in the second pass we
4402 read in the section's contents. (The allows us to avoid
4403 reallocing the data as we add sections to the stash.) If
4404 some or all sections are compressed, then do things the slow
4405 way, with a bunch of reallocs. */
4407 if (! find_debug_info (debug_bfd, debug_sections, msec))
4409 /* Case 1: only one info section. */
4410 total_size = msec->size;
4411 if (! read_section (debug_bfd, &stash->debug_sections[debug_info],
4413 &stash->info_ptr_memory, &total_size))
4418 /* Case 2: multiple sections. */
4419 for (total_size = 0;
4421 msec = find_debug_info (debug_bfd, debug_sections, msec))
4422 total_size += msec->size;
4424 stash->info_ptr_memory = (bfd_byte *) bfd_malloc (total_size);
4425 if (stash->info_ptr_memory == NULL)
4429 for (msec = find_debug_info (debug_bfd, debug_sections, NULL);
4431 msec = find_debug_info (debug_bfd, debug_sections, msec))
4439 if (!(bfd_simple_get_relocated_section_contents
4440 (debug_bfd, msec, stash->info_ptr_memory + total_size,
4448 stash->info_ptr = stash->info_ptr_memory;
4449 stash->info_ptr_end = stash->info_ptr + total_size;
4450 stash->sec = find_debug_info (debug_bfd, debug_sections, NULL);
4451 stash->sec_info_ptr = stash->info_ptr;
4455 /* Scan the debug information in PINFO looking for a DW_TAG_subprogram
4456 abbrev with a DW_AT_low_pc attached to it. Then lookup that same
4457 symbol in SYMBOLS and return the difference between the low_pc and
4458 the symbol's address. Returns 0 if no suitable symbol could be found. */
4461 _bfd_dwarf2_find_symbol_bias (asymbol ** symbols, void ** pinfo)
4463 struct dwarf2_debug *stash;
4464 struct comp_unit * unit;
4466 stash = (struct dwarf2_debug *) *pinfo;
4471 for (unit = stash->all_comp_units; unit; unit = unit->next_unit)
4473 struct funcinfo * func;
4475 if (unit->function_table == NULL)
4477 if (unit->line_table == NULL)
4478 unit->line_table = decode_line_info (unit, stash);
4479 if (unit->line_table != NULL)
4480 scan_unit_for_symbols (unit);
4483 for (func = unit->function_table; func != NULL; func = func->prev_func)
4484 if (func->name && func->arange.low)
4488 /* FIXME: Do we need to scan the aranges looking for the lowest pc value ? */
4490 for (psym = symbols; * psym != NULL; psym++)
4492 asymbol * sym = * psym;
4494 if (sym->flags & BSF_FUNCTION
4495 && sym->section != NULL
4496 && strcmp (sym->name, func->name) == 0)
4497 return ((bfd_signed_vma) func->arange.low) -
4498 ((bfd_signed_vma) (sym->value + sym->section->vma));
4506 /* Find the source code location of SYMBOL. If SYMBOL is NULL
4507 then find the nearest source code location corresponding to
4508 the address SECTION + OFFSET.
4509 Returns TRUE if the line is found without error and fills in
4510 FILENAME_PTR and LINENUMBER_PTR. In the case where SYMBOL was
4511 NULL the FUNCTIONNAME_PTR is also filled in.
4512 SYMBOLS contains the symbol table for ABFD.
4513 DEBUG_SECTIONS contains the name of the dwarf debug sections.
4514 ADDR_SIZE is the number of bytes in the initial .debug_info length
4515 field and in the abbreviation offset, or zero to indicate that the
4516 default value should be used. */
4519 _bfd_dwarf2_find_nearest_line (bfd *abfd,
4524 const char **filename_ptr,
4525 const char **functionname_ptr,
4526 unsigned int *linenumber_ptr,
4527 unsigned int *discriminator_ptr,
4528 const struct dwarf_debug_section *debug_sections,
4529 unsigned int addr_size,
4532 /* Read each compilation unit from the section .debug_info, and check
4533 to see if it contains the address we are searching for. If yes,
4534 lookup the address, and return the line number info. If no, go
4535 on to the next compilation unit.
4537 We keep a list of all the previously read compilation units, and
4538 a pointer to the next un-read compilation unit. Check the
4539 previously read units before reading more. */
4540 struct dwarf2_debug *stash;
4541 /* What address are we looking for? */
4543 struct comp_unit* each;
4544 struct funcinfo *function = NULL;
4545 bfd_boolean found = FALSE;
4546 bfd_boolean do_line;
4548 *filename_ptr = NULL;
4549 if (functionname_ptr != NULL)
4550 *functionname_ptr = NULL;
4551 *linenumber_ptr = 0;
4552 if (discriminator_ptr)
4553 *discriminator_ptr = 0;
4555 if (! _bfd_dwarf2_slurp_debug_info (abfd, NULL, debug_sections,
4557 (abfd->flags & (EXEC_P | DYNAMIC)) == 0))
4560 stash = (struct dwarf2_debug *) *pinfo;
4562 do_line = symbol != NULL;
4565 BFD_ASSERT (section == NULL && offset == 0 && functionname_ptr == NULL);
4566 section = bfd_get_section (symbol);
4567 addr = symbol->value;
4571 BFD_ASSERT (section != NULL && functionname_ptr != NULL);
4574 /* If we have no SYMBOL but the section we're looking at is not a
4575 code section, then take a look through the list of symbols to see
4576 if we have a symbol at the address we're looking for. If we do
4577 then use this to look up line information. This will allow us to
4578 give file and line results for data symbols. We exclude code
4579 symbols here, if we look up a function symbol and then look up the
4580 line information we'll actually return the line number for the
4581 opening '{' rather than the function definition line. This is
4582 because looking up by symbol uses the line table, in which the
4583 first line for a function is usually the opening '{', while
4584 looking up the function by section + offset uses the
4585 DW_AT_decl_line from the function DW_TAG_subprogram for the line,
4586 which will be the line of the function name. */
4587 if (symbols != NULL && (section->flags & SEC_CODE) == 0)
4591 for (tmp = symbols; (*tmp) != NULL; ++tmp)
4592 if ((*tmp)->the_bfd == abfd
4593 && (*tmp)->section == section
4594 && (*tmp)->value == offset
4595 && ((*tmp)->flags & BSF_SECTION_SYM) == 0)
4599 /* For local symbols, keep going in the hope we find a
4601 if ((symbol->flags & BSF_GLOBAL) != 0)
4607 if (section->output_section)
4608 addr += section->output_section->vma + section->output_offset;
4610 addr += section->vma;
4612 /* A null info_ptr indicates that there is no dwarf2 info
4613 (or that an error occured while setting up the stash). */
4614 if (! stash->info_ptr)
4617 stash->inliner_chain = NULL;
4619 /* Check the previously read comp. units first. */
4622 /* The info hash tables use quite a bit of memory. We may not want to
4623 always use them. We use some heuristics to decide if and when to
4625 if (stash->info_hash_status == STASH_INFO_HASH_OFF)
4626 stash_maybe_enable_info_hash_tables (abfd, stash);
4628 /* Keep info hash table up to date if they are available. Note that we
4629 may disable the hash tables if there is any error duing update. */
4630 if (stash->info_hash_status == STASH_INFO_HASH_ON)
4631 stash_maybe_update_info_hash_tables (stash);
4633 if (stash->info_hash_status == STASH_INFO_HASH_ON)
4635 found = stash_find_line_fast (stash, symbol, addr, filename_ptr,
4642 /* Check the previously read comp. units first. */
4643 for (each = stash->all_comp_units; each; each = each->next_unit)
4644 if ((symbol->flags & BSF_FUNCTION) == 0
4645 || each->arange.high == 0
4646 || comp_unit_contains_address (each, addr))
4648 found = comp_unit_find_line (each, symbol, addr, filename_ptr,
4649 linenumber_ptr, stash);
4657 bfd_vma min_range = (bfd_vma) -1;
4658 const char * local_filename = NULL;
4659 struct funcinfo *local_function = NULL;
4660 unsigned int local_linenumber = 0;
4661 unsigned int local_discriminator = 0;
4663 for (each = stash->all_comp_units; each; each = each->next_unit)
4665 bfd_vma range = (bfd_vma) -1;
4667 found = ((each->arange.high == 0
4668 || comp_unit_contains_address (each, addr))
4669 && (range = comp_unit_find_nearest_line (each, addr,
4673 & local_discriminator,
4677 /* PRs 15935 15994: Bogus debug information may have provided us
4678 with an erroneous match. We attempt to counter this by
4679 selecting the match that has the smallest address range
4680 associated with it. (We are assuming that corrupt debug info
4681 will tend to result in extra large address ranges rather than
4682 extra small ranges).
4684 This does mean that we scan through all of the CUs associated
4685 with the bfd each time this function is called. But this does
4686 have the benefit of producing consistent results every time the
4687 function is called. */
4688 if (range <= min_range)
4690 if (filename_ptr && local_filename)
4691 * filename_ptr = local_filename;
4693 function = local_function;
4694 if (discriminator_ptr && local_discriminator)
4695 * discriminator_ptr = local_discriminator;
4696 if (local_linenumber)
4697 * linenumber_ptr = local_linenumber;
4703 if (* linenumber_ptr)
4710 /* The DWARF2 spec says that the initial length field, and the
4711 offset of the abbreviation table, should both be 4-byte values.
4712 However, some compilers do things differently. */
4715 BFD_ASSERT (addr_size == 4 || addr_size == 8);
4717 /* Read each remaining comp. units checking each as they are read. */
4718 while (stash->info_ptr < stash->info_ptr_end)
4721 unsigned int offset_size = addr_size;
4722 bfd_byte *info_ptr_unit = stash->info_ptr;
4724 length = read_4_bytes (stash->bfd_ptr, stash->info_ptr, stash->info_ptr_end);
4725 /* A 0xffffff length is the DWARF3 way of indicating
4726 we use 64-bit offsets, instead of 32-bit offsets. */
4727 if (length == 0xffffffff)
4730 length = read_8_bytes (stash->bfd_ptr, stash->info_ptr + 4, stash->info_ptr_end);
4731 stash->info_ptr += 12;
4733 /* A zero length is the IRIX way of indicating 64-bit offsets,
4734 mostly because the 64-bit length will generally fit in 32
4735 bits, and the endianness helps. */
4736 else if (length == 0)
4739 length = read_4_bytes (stash->bfd_ptr, stash->info_ptr + 4, stash->info_ptr_end);
4740 stash->info_ptr += 8;
4742 /* In the absence of the hints above, we assume 32-bit DWARF2
4743 offsets even for targets with 64-bit addresses, because:
4744 a) most of the time these targets will not have generated
4745 more than 2Gb of debug info and so will not need 64-bit
4748 b) if they do use 64-bit offsets but they are not using
4749 the size hints that are tested for above then they are
4750 not conforming to the DWARF3 standard anyway. */
4751 else if (addr_size == 8)
4754 stash->info_ptr += 4;
4757 stash->info_ptr += 4;
4764 if (stash->info_ptr + length > stash->info_ptr_end)
4767 each = parse_comp_unit (stash, length, info_ptr_unit,
4770 /* The dwarf information is damaged, don't trust it any
4774 new_ptr = stash->info_ptr + length;
4775 /* PR 17512: file: 1500698c. */
4776 if (new_ptr < stash->info_ptr)
4778 /* A corrupt length value - do not trust the info any more. */
4783 stash->info_ptr = new_ptr;
4785 if (stash->all_comp_units)
4786 stash->all_comp_units->prev_unit = each;
4788 stash->last_comp_unit = each;
4790 each->next_unit = stash->all_comp_units;
4791 stash->all_comp_units = each;
4793 /* DW_AT_low_pc and DW_AT_high_pc are optional for
4794 compilation units. If we don't have them (i.e.,
4795 unit->high == 0), we need to consult the line info table
4796 to see if a compilation unit contains the given
4799 found = (((symbol->flags & BSF_FUNCTION) == 0
4800 || each->arange.high == 0
4801 || comp_unit_contains_address (each, addr))
4802 && comp_unit_find_line (each, symbol, addr,
4807 found = ((each->arange.high == 0
4808 || comp_unit_contains_address (each, addr))
4809 && comp_unit_find_nearest_line (each, addr,
4816 if ((bfd_vma) (stash->info_ptr - stash->sec_info_ptr)
4817 == stash->sec->size)
4819 stash->sec = find_debug_info (stash->bfd_ptr, debug_sections,
4821 stash->sec_info_ptr = stash->info_ptr;
4832 if (!function->is_linkage)
4837 fun = _bfd_elf_find_function (abfd, symbols, section, offset,
4838 *filename_ptr ? NULL : filename_ptr,
4840 sec_vma = section->vma;
4841 if (section->output_section != NULL)
4842 sec_vma = section->output_section->vma + section->output_offset;
4844 && fun->value + sec_vma == function->arange.low)
4845 function->name = *functionname_ptr;
4846 /* Even if we didn't find a linkage name, say that we have
4847 to stop a repeated search of symbols. */
4848 function->is_linkage = TRUE;
4850 *functionname_ptr = function->name;
4852 if ((abfd->flags & (EXEC_P | DYNAMIC)) == 0)
4853 unset_sections (stash);
4859 _bfd_dwarf2_find_inliner_info (bfd *abfd ATTRIBUTE_UNUSED,
4860 const char **filename_ptr,
4861 const char **functionname_ptr,
4862 unsigned int *linenumber_ptr,
4865 struct dwarf2_debug *stash;
4867 stash = (struct dwarf2_debug *) *pinfo;
4870 struct funcinfo *func = stash->inliner_chain;
4872 if (func && func->caller_func)
4874 *filename_ptr = func->caller_file;
4875 *functionname_ptr = func->caller_func->name;
4876 *linenumber_ptr = func->caller_line;
4877 stash->inliner_chain = func->caller_func;
4886 _bfd_dwarf2_cleanup_debug_info (bfd *abfd, void **pinfo)
4888 struct dwarf2_debug *stash = (struct dwarf2_debug *) *pinfo;
4889 struct comp_unit *each;
4891 if (abfd == NULL || stash == NULL)
4894 for (each = stash->all_comp_units; each; each = each->next_unit)
4896 struct abbrev_info **abbrevs = each->abbrevs;
4897 struct funcinfo *function_table = each->function_table;
4898 struct varinfo *variable_table = each->variable_table;
4901 for (i = 0; i < ABBREV_HASH_SIZE; i++)
4903 struct abbrev_info *abbrev = abbrevs[i];
4907 free (abbrev->attrs);
4908 abbrev = abbrev->next;
4912 if (each->line_table)
4914 free (each->line_table->dirs);
4915 free (each->line_table->files);
4918 while (function_table)
4920 if (function_table->file)
4922 free (function_table->file);
4923 function_table->file = NULL;
4926 if (function_table->caller_file)
4928 free (function_table->caller_file);
4929 function_table->caller_file = NULL;
4931 function_table = function_table->prev_func;
4934 if (each->lookup_funcinfo_table)
4936 free (each->lookup_funcinfo_table);
4937 each->lookup_funcinfo_table = NULL;
4940 while (variable_table)
4942 if (variable_table->file)
4944 free (variable_table->file);
4945 variable_table->file = NULL;
4948 variable_table = variable_table->prev_var;
4952 if (stash->funcinfo_hash_table)
4953 bfd_hash_table_free (&stash->funcinfo_hash_table->base);
4954 if (stash->varinfo_hash_table)
4955 bfd_hash_table_free (&stash->varinfo_hash_table->base);
4956 if (stash->dwarf_abbrev_buffer)
4957 free (stash->dwarf_abbrev_buffer);
4958 if (stash->dwarf_line_buffer)
4959 free (stash->dwarf_line_buffer);
4960 if (stash->dwarf_str_buffer)
4961 free (stash->dwarf_str_buffer);
4962 if (stash->dwarf_line_str_buffer)
4963 free (stash->dwarf_line_str_buffer);
4964 if (stash->dwarf_ranges_buffer)
4965 free (stash->dwarf_ranges_buffer);
4966 if (stash->info_ptr_memory)
4967 free (stash->info_ptr_memory);
4968 if (stash->close_on_cleanup)
4969 bfd_close (stash->bfd_ptr);
4970 if (stash->alt_dwarf_str_buffer)
4971 free (stash->alt_dwarf_str_buffer);
4972 if (stash->alt_dwarf_info_buffer)
4973 free (stash->alt_dwarf_info_buffer);
4975 free (stash->sec_vma);
4976 if (stash->adjusted_sections)
4977 free (stash->adjusted_sections);
4978 if (stash->alt_bfd_ptr)
4979 bfd_close (stash->alt_bfd_ptr);
4982 /* Find the function to a particular section and offset,
4983 for error reporting. */
4986 _bfd_elf_find_function (bfd *abfd,
4990 const char **filename_ptr,
4991 const char **functionname_ptr)
4993 struct elf_find_function_cache
4995 asection *last_section;
4997 const char *filename;
4998 bfd_size_type func_size;
5001 if (symbols == NULL)
5004 if (bfd_get_flavour (abfd) != bfd_target_elf_flavour)
5007 cache = elf_tdata (abfd)->elf_find_function_cache;
5010 cache = bfd_zalloc (abfd, sizeof (*cache));
5011 elf_tdata (abfd)->elf_find_function_cache = cache;
5015 if (cache->last_section != section
5016 || cache->func == NULL
5017 || offset < cache->func->value
5018 || offset >= cache->func->value + cache->func_size)
5023 /* ??? Given multiple file symbols, it is impossible to reliably
5024 choose the right file name for global symbols. File symbols are
5025 local symbols, and thus all file symbols must sort before any
5026 global symbols. The ELF spec may be interpreted to say that a
5027 file symbol must sort before other local symbols, but currently
5028 ld -r doesn't do this. So, for ld -r output, it is possible to
5029 make a better choice of file name for local symbols by ignoring
5030 file symbols appearing after a given local symbol. */
5031 enum { nothing_seen, symbol_seen, file_after_symbol_seen } state;
5032 const struct elf_backend_data *bed = get_elf_backend_data (abfd);
5036 state = nothing_seen;
5037 cache->filename = NULL;
5039 cache->func_size = 0;
5040 cache->last_section = section;
5042 for (p = symbols; *p != NULL; p++)
5048 if ((sym->flags & BSF_FILE) != 0)
5051 if (state == symbol_seen)
5052 state = file_after_symbol_seen;
5056 size = bed->maybe_function_sym (sym, section, &code_off);
5058 && code_off <= offset
5059 && (code_off > low_func
5060 || (code_off == low_func
5061 && size > cache->func_size)))
5064 cache->func_size = size;
5065 cache->filename = NULL;
5066 low_func = code_off;
5068 && ((sym->flags & BSF_LOCAL) != 0
5069 || state != file_after_symbol_seen))
5070 cache->filename = bfd_asymbol_name (file);
5072 if (state == nothing_seen)
5073 state = symbol_seen;
5077 if (cache->func == NULL)
5081 *filename_ptr = cache->filename;
5082 if (functionname_ptr)
5083 *functionname_ptr = bfd_asymbol_name (cache->func);