GDB (xrefs)
/tmp/gdb-8.1/gdb/symfile.c
Go to the documentation of this file.
1 /* Generic symbol file reading for the GNU debugger, GDB.
2 
3  Copyright (C) 1990-2018 Free Software Foundation, Inc.
4 
5  Contributed by Cygnus Support, using pieces from other GDB modules.
6 
7  This file is part of GDB.
8 
9  This program is free software; you can redistribute it and/or modify
10  it under the terms of the GNU General Public License as published by
11  the Free Software Foundation; either version 3 of the License, or
12  (at your option) any later version.
13 
14  This program is distributed in the hope that it will be useful,
15  but WITHOUT ANY WARRANTY; without even the implied warranty of
16  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17  GNU General Public License for more details.
18 
19  You should have received a copy of the GNU General Public License
20  along with this program. If not, see <http://www.gnu.org/licenses/>. */
21 
22 #include "defs.h"
23 #include "arch-utils.h"
24 #include "bfdlink.h"
25 #include "symtab.h"
26 #include "gdbtypes.h"
27 #include "gdbcore.h"
28 #include "frame.h"
29 #include "target.h"
30 #include "value.h"
31 #include "symfile.h"
32 #include "objfiles.h"
33 #include "source.h"
34 #include "gdbcmd.h"
35 #include "breakpoint.h"
36 #include "language.h"
37 #include "complaints.h"
38 #include "demangle.h"
39 #include "inferior.h"
40 #include "regcache.h"
41 #include "filenames.h" /* for DOSish file names */
42 #include "gdb-stabs.h"
43 #include "gdb_obstack.h"
44 #include "completer.h"
45 #include "bcache.h"
46 #include "hashtab.h"
47 #include "readline/readline.h"
48 #include "block.h"
49 #include "observer.h"
50 #include "exec.h"
51 #include "parser-defs.h"
52 #include "varobj.h"
53 #include "elf-bfd.h"
54 #include "solib.h"
55 #include "remote.h"
56 #include "stack.h"
57 #include "gdb_bfd.h"
58 #include "cli/cli-utils.h"
59 #include "common/byte-vector.h"
60 #include "selftest.h"
61 
62 #include <sys/types.h>
63 #include <fcntl.h>
64 #include <sys/stat.h>
65 #include <ctype.h>
66 #include <chrono>
67 
68 #include "psymtab.h"
69 
70 int (*deprecated_ui_load_progress_hook) (const char *section,
71  unsigned long num);
72 void (*deprecated_show_load_progress) (const char *section,
73  unsigned long section_sent,
74  unsigned long section_size,
75  unsigned long total_sent,
76  unsigned long total_size);
77 void (*deprecated_pre_add_symbol_hook) (const char *);
79 
80 static void clear_symtab_users_cleanup (void *ignore);
81 
82 /* Global variables owned by this file. */
83 int readnow_symbol_files; /* Read full symbols immediately. */
84 int readnever_symbol_files; /* Never read full symbols. */
85 
86 /* Functions this file defines. */
87 
88 static void symbol_file_add_main_1 (const char *args, symfile_add_flags add_flags,
89  objfile_flags flags);
90 
91 static const struct sym_fns *find_sym_fns (bfd *);
92 
93 static void overlay_invalidate_all (void);
94 
95 static void simple_free_overlay_table (void);
96 
97 static void read_target_long_array (CORE_ADDR, unsigned int *, int, int,
98  enum bfd_endian);
99 
100 static int simple_read_overlay_table (void);
101 
102 static int simple_overlay_update_1 (struct obj_section *);
103 
104 static void symfile_find_segment_sections (struct objfile *objfile);
105 
106 /* List of all available sym_fns. On gdb startup, each object file reader
107  calls add_symtab_fns() to register information on each format it is
108  prepared to read. */
109 
111 {
112  registered_sym_fns (bfd_flavour sym_flavour_, const struct sym_fns *sym_fns_)
113  : sym_flavour (sym_flavour_), sym_fns (sym_fns_)
114  {}
115 
116  /* BFD flavour that we handle. */
117  enum bfd_flavour sym_flavour;
118 
119  /* The "vtable" of symbol functions. */
120  const struct sym_fns *sym_fns;
121 };
122 
123 static std::vector<registered_sym_fns> symtab_fns;
124 
125 /* Values for "set print symbol-loading". */
126 
127 const char print_symbol_loading_off[] = "off";
128 const char print_symbol_loading_brief[] = "brief";
129 const char print_symbol_loading_full[] = "full";
130 static const char *print_symbol_loading_enums[] =
131 {
135  NULL
136 };
138 
139 /* If non-zero, shared library symbols will be added automatically
140  when the inferior is created, new libraries are loaded, or when
141  attaching to the inferior. This is almost always what users will
142  want to have happen; but for very large programs, the startup time
143  will be excessive, and so if this is a problem, the user can clear
144  this flag and then add the shared library symbols as needed. Note
145  that there is a potential for confusion, since if the shared
146  library symbols are not loaded, commands like "info fun" will *not*
147  report all the functions that are actually present. */
148 
150 
151 
152 /* Return non-zero if symbol-loading messages should be printed.
153  FROM_TTY is the standard from_tty argument to gdb commands.
154  If EXEC is non-zero the messages are for the executable.
155  Otherwise, messages are for shared libraries.
156  If FULL is non-zero then the caller is printing a detailed message.
157  E.g., the message includes the shared library name.
158  Otherwise, the caller is printing a brief "summary" message. */
159 
160 int
161 print_symbol_loading_p (int from_tty, int exec, int full)
162 {
163  if (!from_tty && !info_verbose)
164  return 0;
165 
166  if (exec)
167  {
168  /* We don't check FULL for executables, there are few such
169  messages, therefore brief == full. */
171  }
172  if (full)
175 }
176 
177 /* True if we are reading a symbol table. */
178 
180 
181 /* Increment currently_reading_symtab and return a cleanup that can be
182  used to decrement it. */
183 
186 {
190 }
191 
192 /* Remember the lowest-addressed loadable section we've seen.
193  This function is called via bfd_map_over_sections.
194 
195  In case of equal vmas, the section with the largest size becomes the
196  lowest-addressed loadable section.
197 
198  If the vmas and sizes are equal, the last section is considered the
199  lowest-addressed loadable section. */
200 
201 void
202 find_lowest_section (bfd *abfd, asection *sect, void *obj)
203 {
204  asection **lowest = (asection **) obj;
205 
206  if (0 == (bfd_get_section_flags (abfd, sect) & (SEC_ALLOC | SEC_LOAD)))
207  return;
208  if (!*lowest)
209  *lowest = sect; /* First loadable section */
210  else if (bfd_section_vma (abfd, *lowest) > bfd_section_vma (abfd, sect))
211  *lowest = sect; /* A lower loadable section */
212  else if (bfd_section_vma (abfd, *lowest) == bfd_section_vma (abfd, sect)
213  && (bfd_section_size (abfd, (*lowest))
214  <= bfd_section_size (abfd, sect)))
215  *lowest = sect;
216 }
217 
218 /* Create a new section_addr_info, with room for NUM_SECTIONS. The
219  new object's 'num_sections' field is set to 0; it must be updated
220  by the caller. */
221 
222 struct section_addr_info *
224 {
225  struct section_addr_info *sap;
226  size_t size;
227 
228  size = (sizeof (struct section_addr_info)
229  + sizeof (struct other_sections) * (num_sections - 1));
230  sap = (struct section_addr_info *) xmalloc (size);
231  memset (sap, 0, size);
232 
233  return sap;
234 }
235 
236 /* Build (allocate and populate) a section_addr_info struct from
237  an existing section table. */
238 
239 extern struct section_addr_info *
241  const struct target_section *end)
242 {
243  struct section_addr_info *sap;
244  const struct target_section *stp;
245  int oidx;
246 
247  sap = alloc_section_addr_info (end - start);
248 
249  for (stp = start, oidx = 0; stp != end; stp++)
250  {
251  struct bfd_section *asect = stp->the_bfd_section;
252  bfd *abfd = asect->owner;
253 
254  if (bfd_get_section_flags (abfd, asect) & (SEC_ALLOC | SEC_LOAD)
255  && oidx < end - start)
256  {
257  sap->other[oidx].addr = stp->addr;
258  sap->other[oidx].name = xstrdup (bfd_section_name (abfd, asect));
259  sap->other[oidx].sectindex = gdb_bfd_section_index (abfd, asect);
260  oidx++;
261  }
262  }
263 
264  sap->num_sections = oidx;
265 
266  return sap;
267 }
268 
269 /* Create a section_addr_info from section offsets in ABFD. */
270 
271 static struct section_addr_info *
273 {
274  struct section_addr_info *sap;
275  int i;
276  struct bfd_section *sec;
277 
278  sap = alloc_section_addr_info (bfd_count_sections (abfd));
279  for (i = 0, sec = abfd->sections; sec != NULL; sec = sec->next)
280  if (bfd_get_section_flags (abfd, sec) & (SEC_ALLOC | SEC_LOAD))
281  {
282  sap->other[i].addr = bfd_get_section_vma (abfd, sec);
283  sap->other[i].name = xstrdup (bfd_get_section_name (abfd, sec));
284  sap->other[i].sectindex = gdb_bfd_section_index (abfd, sec);
285  i++;
286  }
287 
288  sap->num_sections = i;
289 
290  return sap;
291 }
292 
293 /* Create a section_addr_info from section offsets in OBJFILE. */
294 
295 struct section_addr_info *
297 {
298  struct section_addr_info *sap;
299  int i;
300 
301  /* Before reread_symbols gets rewritten it is not safe to call:
302  gdb_assert (objfile->num_sections == bfd_count_sections (objfile->obfd));
303  */
305  for (i = 0; i < sap->num_sections; i++)
306  {
307  int sectindex = sap->other[i].sectindex;
308 
309  sap->other[i].addr += objfile->section_offsets->offsets[sectindex];
310  }
311  return sap;
312 }
313 
314 /* Free all memory allocated by build_section_addr_info_from_section_table. */
315 
316 extern void
318 {
319  int idx;
320 
321  for (idx = 0; idx < sap->num_sections; idx++)
322  xfree (sap->other[idx].name);
323  xfree (sap);
324 }
325 
326 /* Initialize OBJFILE's sect_index_* members. */
327 
328 static void
330 {
331  asection *sect;
332  int i;
333 
334  sect = bfd_get_section_by_name (objfile->obfd, ".text");
335  if (sect)
336  objfile->sect_index_text = sect->index;
337 
338  sect = bfd_get_section_by_name (objfile->obfd, ".data");
339  if (sect)
340  objfile->sect_index_data = sect->index;
341 
342  sect = bfd_get_section_by_name (objfile->obfd, ".bss");
343  if (sect)
344  objfile->sect_index_bss = sect->index;
345 
346  sect = bfd_get_section_by_name (objfile->obfd, ".rodata");
347  if (sect)
348  objfile->sect_index_rodata = sect->index;
349 
350  /* This is where things get really weird... We MUST have valid
351  indices for the various sect_index_* members or gdb will abort.
352  So if for example, there is no ".text" section, we have to
353  accomodate that. First, check for a file with the standard
354  one or two segments. */
355 
357 
358  /* Except when explicitly adding symbol files at some address,
359  section_offsets contains nothing but zeros, so it doesn't matter
360  which slot in section_offsets the individual sect_index_* members
361  index into. So if they are all zero, it is safe to just point
362  all the currently uninitialized indices to the first slot. But
363  beware: if this is the main executable, it may be relocated
364  later, e.g. by the remote qOffsets packet, and then this will
365  be wrong! That's why we try segments first. */
366 
367  for (i = 0; i < objfile->num_sections; i++)
368  {
369  if (ANOFFSET (objfile->section_offsets, i) != 0)
370  {
371  break;
372  }
373  }
374  if (i == objfile->num_sections)
375  {
376  if (objfile->sect_index_text == -1)
378  if (objfile->sect_index_data == -1)
380  if (objfile->sect_index_bss == -1)
381  objfile->sect_index_bss = 0;
382  if (objfile->sect_index_rodata == -1)
384  }
385 }
386 
387 /* The arguments to place_section. */
388 
390 {
393 };
394 
395 /* Find a unique offset to use for loadable section SECT if
396  the user did not provide an offset. */
397 
398 static void
399 place_section (bfd *abfd, asection *sect, void *obj)
400 {
401  struct place_section_arg *arg = (struct place_section_arg *) obj;
402  CORE_ADDR *offsets = arg->offsets->offsets, start_addr;
403  int done;
404  ULONGEST align = ((ULONGEST) 1) << bfd_get_section_alignment (abfd, sect);
405 
406  /* We are only interested in allocated sections. */
407  if ((bfd_get_section_flags (abfd, sect) & SEC_ALLOC) == 0)
408  return;
409 
410  /* If the user specified an offset, honor it. */
411  if (offsets[gdb_bfd_section_index (abfd, sect)] != 0)
412  return;
413 
414  /* Otherwise, let's try to find a place for the section. */
415  start_addr = (arg->lowest + align - 1) & -align;
416 
417  do {
418  asection *cur_sec;
419 
420  done = 1;
421 
422  for (cur_sec = abfd->sections; cur_sec != NULL; cur_sec = cur_sec->next)
423  {
424  int indx = cur_sec->index;
425 
426  /* We don't need to compare against ourself. */
427  if (cur_sec == sect)
428  continue;
429 
430  /* We can only conflict with allocated sections. */
431  if ((bfd_get_section_flags (abfd, cur_sec) & SEC_ALLOC) == 0)
432  continue;
433 
434  /* If the section offset is 0, either the section has not been placed
435  yet, or it was the lowest section placed (in which case LOWEST
436  will be past its end). */
437  if (offsets[indx] == 0)
438  continue;
439 
440  /* If this section would overlap us, then we must move up. */
441  if (start_addr + bfd_get_section_size (sect) > offsets[indx]
442  && start_addr < offsets[indx] + bfd_get_section_size (cur_sec))
443  {
444  start_addr = offsets[indx] + bfd_get_section_size (cur_sec);
445  start_addr = (start_addr + align - 1) & -align;
446  done = 0;
447  break;
448  }
449 
450  /* Otherwise, we appear to be OK. So far. */
451  }
452  }
453  while (!done);
454 
455  offsets[gdb_bfd_section_index (abfd, sect)] = start_addr;
456  arg->lowest = start_addr + bfd_get_section_size (sect);
457 }
458 
459 /* Store struct section_addr_info as prepared (made relative and with SECTINDEX
460  filled-in) by addr_info_make_relative into SECTION_OFFSETS of NUM_SECTIONS
461  entries. */
462 
463 void
465  int num_sections,
466  const struct section_addr_info *addrs)
467 {
468  int i;
469 
470  memset (section_offsets, 0, SIZEOF_N_SECTION_OFFSETS (num_sections));
471 
472  /* Now calculate offsets for section that were specified by the caller. */
473  for (i = 0; i < addrs->num_sections; i++)
474  {
475  const struct other_sections *osp;
476 
477  osp = &addrs->other[i];
478  if (osp->sectindex == -1)
479  continue;
480 
481  /* Record all sections in offsets. */
482  /* The section_offsets in the objfile are here filled in using
483  the BFD index. */
484  section_offsets->offsets[osp->sectindex] = osp->addr;
485  }
486 }
487 
488 /* Transform section name S for a name comparison. prelink can split section
489  `.bss' into two sections `.dynbss' and `.bss' (in this order). Similarly
490  prelink can split `.sbss' into `.sdynbss' and `.sbss'. Use virtual address
491  of the new `.dynbss' (`.sdynbss') section as the adjacent new `.bss'
492  (`.sbss') section has invalid (increased) virtual address. */
493 
494 static const char *
495 addr_section_name (const char *s)
496 {
497  if (strcmp (s, ".dynbss") == 0)
498  return ".bss";
499  if (strcmp (s, ".sdynbss") == 0)
500  return ".sbss";
501 
502  return s;
503 }
504 
505 /* qsort comparator for addrs_section_sort. Sort entries in ascending order by
506  their (name, sectindex) pair. sectindex makes the sort by name stable. */
507 
508 static int
509 addrs_section_compar (const void *ap, const void *bp)
510 {
511  const struct other_sections *a = *((struct other_sections **) ap);
512  const struct other_sections *b = *((struct other_sections **) bp);
513  int retval;
514 
515  retval = strcmp (addr_section_name (a->name), addr_section_name (b->name));
516  if (retval)
517  return retval;
518 
519  return a->sectindex - b->sectindex;
520 }
521 
522 /* Provide sorted array of pointers to sections of ADDRS. The array is
523  terminated by NULL. Caller is responsible to call xfree for it. */
524 
525 static struct other_sections **
527 {
528  struct other_sections **array;
529  int i;
530 
531  /* `+ 1' for the NULL terminator. */
532  array = XNEWVEC (struct other_sections *, addrs->num_sections + 1);
533  for (i = 0; i < addrs->num_sections; i++)
534  array[i] = &addrs->other[i];
535  array[i] = NULL;
536 
537  qsort (array, i, sizeof (*array), addrs_section_compar);
538 
539  return array;
540 }
541 
542 /* Relativize absolute addresses in ADDRS into offsets based on ABFD. Fill-in
543  also SECTINDEXes specific to ABFD there. This function can be used to
544  rebase ADDRS to start referencing different BFD than before. */
545 
546 void
547 addr_info_make_relative (struct section_addr_info *addrs, bfd *abfd)
548 {
549  asection *lower_sect;
550  CORE_ADDR lower_offset;
551  int i;
552  struct cleanup *my_cleanup;
553  struct section_addr_info *abfd_addrs;
554  struct other_sections **addrs_sorted, **abfd_addrs_sorted;
555  struct other_sections **addrs_to_abfd_addrs;
556 
557  /* Find lowest loadable section to be used as starting point for
558  continguous sections. */
559  lower_sect = NULL;
560  bfd_map_over_sections (abfd, find_lowest_section, &lower_sect);
561  if (lower_sect == NULL)
562  {
563  warning (_("no loadable sections found in added symbol-file %s"),
564  bfd_get_filename (abfd));
565  lower_offset = 0;
566  }
567  else
568  lower_offset = bfd_section_vma (bfd_get_filename (abfd), lower_sect);
569 
570  /* Create ADDRS_TO_ABFD_ADDRS array to map the sections in ADDRS to sections
571  in ABFD. Section names are not unique - there can be multiple sections of
572  the same name. Also the sections of the same name do not have to be
573  adjacent to each other. Some sections may be present only in one of the
574  files. Even sections present in both files do not have to be in the same
575  order.
576 
577  Use stable sort by name for the sections in both files. Then linearly
578  scan both lists matching as most of the entries as possible. */
579 
580  addrs_sorted = addrs_section_sort (addrs);
581  my_cleanup = make_cleanup (xfree, addrs_sorted);
582 
583  abfd_addrs = build_section_addr_info_from_bfd (abfd);
585  abfd_addrs_sorted = addrs_section_sort (abfd_addrs);
586  make_cleanup (xfree, abfd_addrs_sorted);
587 
588  /* Now create ADDRS_TO_ABFD_ADDRS from ADDRS_SORTED and
589  ABFD_ADDRS_SORTED. */
590 
591  addrs_to_abfd_addrs = XCNEWVEC (struct other_sections *, addrs->num_sections);
592  make_cleanup (xfree, addrs_to_abfd_addrs);
593 
594  while (*addrs_sorted)
595  {
596  const char *sect_name = addr_section_name ((*addrs_sorted)->name);
597 
598  while (*abfd_addrs_sorted
599  && strcmp (addr_section_name ((*abfd_addrs_sorted)->name),
600  sect_name) < 0)
601  abfd_addrs_sorted++;
602 
603  if (*abfd_addrs_sorted
604  && strcmp (addr_section_name ((*abfd_addrs_sorted)->name),
605  sect_name) == 0)
606  {
607  int index_in_addrs;
608 
609  /* Make the found item directly addressable from ADDRS. */
610  index_in_addrs = *addrs_sorted - addrs->other;
611  gdb_assert (addrs_to_abfd_addrs[index_in_addrs] == NULL);
612  addrs_to_abfd_addrs[index_in_addrs] = *abfd_addrs_sorted;
613 
614  /* Never use the same ABFD entry twice. */
615  abfd_addrs_sorted++;
616  }
617 
618  addrs_sorted++;
619  }
620 
621  /* Calculate offsets for the loadable sections.
622  FIXME! Sections must be in order of increasing loadable section
623  so that contiguous sections can use the lower-offset!!!
624 
625  Adjust offsets if the segments are not contiguous.
626  If the section is contiguous, its offset should be set to
627  the offset of the highest loadable section lower than it
628  (the loadable section directly below it in memory).
629  this_offset = lower_offset = lower_addr - lower_orig_addr */
630 
631  for (i = 0; i < addrs->num_sections; i++)
632  {
633  struct other_sections *sect = addrs_to_abfd_addrs[i];
634 
635  if (sect)
636  {
637  /* This is the index used by BFD. */
638  addrs->other[i].sectindex = sect->sectindex;
639 
640  if (addrs->other[i].addr != 0)
641  {
642  addrs->other[i].addr -= sect->addr;
643  lower_offset = addrs->other[i].addr;
644  }
645  else
646  addrs->other[i].addr = lower_offset;
647  }
648  else
649  {
650  /* addr_section_name transformation is not used for SECT_NAME. */
651  const char *sect_name = addrs->other[i].name;
652 
653  /* This section does not exist in ABFD, which is normally
654  unexpected and we want to issue a warning.
655 
656  However, the ELF prelinker does create a few sections which are
657  marked in the main executable as loadable (they are loaded in
658  memory from the DYNAMIC segment) and yet are not present in
659  separate debug info files. This is fine, and should not cause
660  a warning. Shared libraries contain just the section
661  ".gnu.liblist" but it is not marked as loadable there. There is
662  no other way to identify them than by their name as the sections
663  created by prelink have no special flags.
664 
665  For the sections `.bss' and `.sbss' see addr_section_name. */
666 
667  if (!(strcmp (sect_name, ".gnu.liblist") == 0
668  || strcmp (sect_name, ".gnu.conflict") == 0
669  || (strcmp (sect_name, ".bss") == 0
670  && i > 0
671  && strcmp (addrs->other[i - 1].name, ".dynbss") == 0
672  && addrs_to_abfd_addrs[i - 1] != NULL)
673  || (strcmp (sect_name, ".sbss") == 0
674  && i > 0
675  && strcmp (addrs->other[i - 1].name, ".sdynbss") == 0
676  && addrs_to_abfd_addrs[i - 1] != NULL)))
677  warning (_("section %s not found in %s"), sect_name,
678  bfd_get_filename (abfd));
679 
680  addrs->other[i].addr = 0;
681  addrs->other[i].sectindex = -1;
682  }
683  }
684 
685  do_cleanups (my_cleanup);
686 }
687 
688 /* Parse the user's idea of an offset for dynamic linking, into our idea
689  of how to represent it for fast symbol reading. This is the default
690  version of the sym_fns.sym_offsets function for symbol readers that
691  don't need to do anything special. It allocates a section_offsets table
692  for the objectfile OBJFILE and stuffs ADDR into all of the offsets. */
693 
694 void
696  const struct section_addr_info *addrs)
697 {
700  obstack_alloc (&objfile->objfile_obstack,
703  objfile->num_sections, addrs);
704 
705  /* For relocatable files, all loadable sections will start at zero.
706  The zero is meaningless, so try to pick arbitrary addresses such
707  that no loadable sections overlap. This algorithm is quadratic,
708  but the number of sections in a single object file is generally
709  small. */
710  if ((bfd_get_file_flags (objfile->obfd) & (EXEC_P | DYNAMIC)) == 0)
711  {
712  struct place_section_arg arg;
713  bfd *abfd = objfile->obfd;
714  asection *cur_sec;
715 
716  for (cur_sec = abfd->sections; cur_sec != NULL; cur_sec = cur_sec->next)
717  /* We do not expect this to happen; just skip this step if the
718  relocatable file has a section with an assigned VMA. */
719  if (bfd_section_vma (abfd, cur_sec) != 0)
720  break;
721 
722  if (cur_sec == NULL)
723  {
725 
726  /* Pick non-overlapping offsets for sections the user did not
727  place explicitly. */
729  arg.lowest = 0;
730  bfd_map_over_sections (objfile->obfd, place_section, &arg);
731 
732  /* Correctly filling in the section offsets is not quite
733  enough. Relocatable files have two properties that
734  (most) shared objects do not:
735 
736  - Their debug information will contain relocations. Some
737  shared libraries do also, but many do not, so this can not
738  be assumed.
739 
740  - If there are multiple code sections they will be loaded
741  at different relative addresses in memory than they are
742  in the objfile, since all sections in the file will start
743  at address zero.
744 
745  Because GDB has very limited ability to map from an
746  address in debug info to the correct code section,
747  it relies on adding SECT_OFF_TEXT to things which might be
748  code. If we clear all the section offsets, and set the
749  section VMAs instead, then symfile_relocate_debug_section
750  will return meaningful debug information pointing at the
751  correct sections.
752 
753  GDB has too many different data structures for section
754  addresses - a bfd, objfile, and so_list all have section
755  tables, as does exec_ops. Some of these could probably
756  be eliminated. */
757 
758  for (cur_sec = abfd->sections; cur_sec != NULL;
759  cur_sec = cur_sec->next)
760  {
761  if ((bfd_get_section_flags (abfd, cur_sec) & SEC_ALLOC) == 0)
762  continue;
763 
764  bfd_set_section_vma (abfd, cur_sec, offsets[cur_sec->index]);
765  exec_set_section_address (bfd_get_filename (abfd),
766  cur_sec->index,
767  offsets[cur_sec->index]);
768  offsets[cur_sec->index] = 0;
769  }
770  }
771  }
772 
773  /* Remember the bfd indexes for the .text, .data, .bss and
774  .rodata sections. */
776 }
777 
778 /* Divide the file into segments, which are individual relocatable units.
779  This is the default version of the sym_fns.sym_segments function for
780  symbol readers that do not have an explicit representation of segments.
781  It assumes that object files do not have segments, and fully linked
782  files have a single segment. */
783 
784 struct symfile_segment_data *
786 {
787  int num_sections, i;
788  asection *sect;
789  struct symfile_segment_data *data;
790  CORE_ADDR low, high;
791 
792  /* Relocatable files contain enough information to position each
793  loadable section independently; they should not be relocated
794  in segments. */
795  if ((bfd_get_file_flags (abfd) & (EXEC_P | DYNAMIC)) == 0)
796  return NULL;
797 
798  /* Make sure there is at least one loadable section in the file. */
799  for (sect = abfd->sections; sect != NULL; sect = sect->next)
800  {
801  if ((bfd_get_section_flags (abfd, sect) & SEC_ALLOC) == 0)
802  continue;
803 
804  break;
805  }
806  if (sect == NULL)
807  return NULL;
808 
809  low = bfd_get_section_vma (abfd, sect);
810  high = low + bfd_get_section_size (sect);
811 
812  data = XCNEW (struct symfile_segment_data);
813  data->num_segments = 1;
814  data->segment_bases = XCNEW (CORE_ADDR);
815  data->segment_sizes = XCNEW (CORE_ADDR);
816 
817  num_sections = bfd_count_sections (abfd);
818  data->segment_info = XCNEWVEC (int, num_sections);
819 
820  for (i = 0, sect = abfd->sections; sect != NULL; i++, sect = sect->next)
821  {
822  CORE_ADDR vma;
823 
824  if ((bfd_get_section_flags (abfd, sect) & SEC_ALLOC) == 0)
825  continue;
826 
827  vma = bfd_get_section_vma (abfd, sect);
828  if (vma < low)
829  low = vma;
830  if (vma + bfd_get_section_size (sect) > high)
831  high = vma + bfd_get_section_size (sect);
832 
833  data->segment_info[i] = 1;
834  }
835 
836  data->segment_bases[0] = low;
837  data->segment_sizes[0] = high - low;
838 
839  return data;
840 }
841 
842 /* This is a convenience function to call sym_read for OBJFILE and
843  possibly force the partial symbols to be read. */
844 
845 static void
846 read_symbols (struct objfile *objfile, symfile_add_flags add_flags)
847 {
848  (*objfile->sf->sym_read) (objfile, add_flags);
849  objfile->per_bfd->minsyms_read = true;
850 
851  /* find_separate_debug_file_in_section should be called only if there is
852  single binary with no existing separate debug info file. */
854  && objfile->separate_debug_objfile == NULL
856  {
858 
859  if (abfd != NULL)
860  {
861  /* find_separate_debug_file_in_section uses the same filename for the
862  virtual section-as-bfd like the bfd filename containing the
863  section. Therefore use also non-canonical name form for the same
864  file containing the section. */
866  add_flags, objfile);
867  }
868  }
869  if ((add_flags & SYMFILE_NO_READ) == 0)
871 }
872 
873 /* Initialize entry point information for this objfile. */
874 
875 static void
877 {
878  struct entry_info *ei = &objfile->per_bfd->ei;
879 
880  if (ei->initialized)
881  return;
882  ei->initialized = 1;
883 
884  /* Save startup file's range of PC addresses to help blockframe.c
885  decide where the bottom of the stack is. */
886 
887  if (bfd_get_file_flags (objfile->obfd) & EXEC_P)
888  {
889  /* Executable file -- record its entry point so we'll recognize
890  the startup file because it contains the entry point. */
891  ei->entry_point = bfd_get_start_address (objfile->obfd);
892  ei->entry_point_p = 1;
893  }
894  else if (bfd_get_file_flags (objfile->obfd) & DYNAMIC
895  && bfd_get_start_address (objfile->obfd) != 0)
896  {
897  /* Some shared libraries may have entry points set and be
898  runnable. There's no clear way to indicate this, so just check
899  for values other than zero. */
900  ei->entry_point = bfd_get_start_address (objfile->obfd);
901  ei->entry_point_p = 1;
902  }
903  else
904  {
905  /* Examination of non-executable.o files. Short-circuit this stuff. */
906  ei->entry_point_p = 0;
907  }
908 
909  if (ei->entry_point_p)
910  {
911  struct obj_section *osect;
912  CORE_ADDR entry_point = ei->entry_point;
913  int found;
914 
915  /* Make certain that the address points at real code, and not a
916  function descriptor. */
917  entry_point
919  entry_point,
920  &current_target);
921 
922  /* Remove any ISA markers, so that this matches entries in the
923  symbol table. */
924  ei->entry_point
926 
927  found = 0;
929  {
930  struct bfd_section *sect = osect->the_bfd_section;
931 
932  if (entry_point >= bfd_get_section_vma (objfile->obfd, sect)
933  && entry_point < (bfd_get_section_vma (objfile->obfd, sect)
934  + bfd_get_section_size (sect)))
935  {
938  found = 1;
939  break;
940  }
941  }
942 
943  if (!found)
945  }
946 }
947 
948 /* Process a symbol file, as either the main file or as a dynamically
949  loaded file.
950 
951  This function does not set the OBJFILE's entry-point info.
952 
953  OBJFILE is where the symbols are to be read from.
954 
955  ADDRS is the list of section load addresses. If the user has given
956  an 'add-symbol-file' command, then this is the list of offsets and
957  addresses he or she provided as arguments to the command; or, if
958  we're handling a shared library, these are the actual addresses the
959  sections are loaded at, according to the inferior's dynamic linker
960  (as gleaned by GDB's shared library code). We convert each address
961  into an offset from the section VMA's as it appears in the object
962  file, and then call the file's sym_offsets function to convert this
963  into a format-specific offset table --- a `struct section_offsets'.
964 
965  ADD_FLAGS encodes verbosity level, whether this is main symbol or
966  an extra symbol file such as dynamically loaded code, and wether
967  breakpoint reset should be deferred. */
968 
969 static void
971  struct section_addr_info *addrs,
972  symfile_add_flags add_flags)
973 {
974  struct section_addr_info *local_addr = NULL;
975  struct cleanup *old_chain;
976  const int mainline = add_flags & SYMFILE_MAINLINE;
977 
979 
980  if (objfile->sf == NULL)
981  {
982  /* No symbols to load, but we still need to make sure
983  that the section_offsets table is allocated. */
984  int num_sections = gdb_bfd_count_sections (objfile->obfd);
985  size_t size = SIZEOF_N_SECTION_OFFSETS (num_sections);
986 
987  objfile->num_sections = num_sections;
989  = (struct section_offsets *) obstack_alloc (&objfile->objfile_obstack,
990  size);
992  return;
993  }
994 
995  /* Make sure that partially constructed symbol tables will be cleaned up
996  if an error occurs during symbol reading. */
997  old_chain = make_cleanup (null_cleanup, NULL);
998  std::unique_ptr<struct objfile> objfile_holder (objfile);
999 
1000  /* If ADDRS is NULL, put together a dummy address list.
1001  We now establish the convention that an addr of zero means
1002  no load address was specified. */
1003  if (! addrs)
1004  {
1005  local_addr = alloc_section_addr_info (1);
1006  make_cleanup (xfree, local_addr);
1007  addrs = local_addr;
1008  }
1009 
1010  if (mainline)
1011  {
1012  /* We will modify the main symbol table, make sure that all its users
1013  will be cleaned up if an error occurs during symbol reading. */
1014  make_cleanup (clear_symtab_users_cleanup, 0 /*ignore*/);
1015 
1016  /* Since no error yet, throw away the old symbol table. */
1017 
1018  if (symfile_objfile != NULL)
1019  {
1020  delete symfile_objfile;
1021  gdb_assert (symfile_objfile == NULL);
1022  }
1023 
1024  /* Currently we keep symbols from the add-symbol-file command.
1025  If the user wants to get rid of them, they should do "symbol-file"
1026  without arguments first. Not sure this is the best behavior
1027  (PR 2207). */
1028 
1029  (*objfile->sf->sym_new_init) (objfile);
1030  }
1031 
1032  /* Convert addr into an offset rather than an absolute address.
1033  We find the lowest address of a loaded segment in the objfile,
1034  and assume that <addr> is where that got loaded.
1035 
1036  We no longer warn if the lowest section is not a text segment (as
1037  happens for the PA64 port. */
1038  if (addrs->num_sections > 0)
1040 
1041  /* Initialize symbol reading routines for this objfile, allow complaints to
1042  appear for this new file, and record how verbose to be, then do the
1043  initial symbol reading for this file. */
1044 
1045  (*objfile->sf->sym_init) (objfile);
1047 
1048  (*objfile->sf->sym_offsets) (objfile, addrs);
1049 
1050  read_symbols (objfile, add_flags);
1051 
1052  /* Discard cleanups as symbol reading was successful. */
1053 
1054  objfile_holder.release ();
1055  discard_cleanups (old_chain);
1056  xfree (local_addr);
1057 }
1058 
1059 /* Same as syms_from_objfile_1, but also initializes the objfile
1060  entry-point info. */
1061 
1062 static void
1064  struct section_addr_info *addrs,
1065  symfile_add_flags add_flags)
1066 {
1067  syms_from_objfile_1 (objfile, addrs, add_flags);
1069 }
1070 
1071 /* Perform required actions after either reading in the initial
1072  symbols for a new objfile, or mapping in the symbols from a reusable
1073  objfile. ADD_FLAGS is a bitmask of enum symfile_add_flags. */
1074 
1075 static void
1076 finish_new_objfile (struct objfile *objfile, symfile_add_flags add_flags)
1077 {
1078  /* If this is the main symbol file we have to clean up all users of the
1079  old main symbol file. Otherwise it is sufficient to fixup all the
1080  breakpoints that may have been redefined by this symbol file. */
1081  if (add_flags & SYMFILE_MAINLINE)
1082  {
1083  /* OK, make it the "real" symbol file. */
1085 
1086  clear_symtab_users (add_flags);
1087  }
1088  else if ((add_flags & SYMFILE_DEFER_BP_RESET) == 0)
1089  {
1090  breakpoint_re_set ();
1091  }
1092 
1093  /* We're done reading the symbol file; finish off complaints. */
1095 }
1096 
1097 /* Process a symbol file, as either the main file or as a dynamically
1098  loaded file.
1099 
1100  ABFD is a BFD already open on the file, as from symfile_bfd_open.
1101  A new reference is acquired by this function.
1102 
1103  For NAME description see the objfile constructor.
1104 
1105  ADD_FLAGS encodes verbosity, whether this is main symbol file or
1106  extra, such as dynamically loaded code, and what to do with breakpoins.
1107 
1108  ADDRS is as described for syms_from_objfile_1, above.
1109  ADDRS is ignored when SYMFILE_MAINLINE bit is set in ADD_FLAGS.
1110 
1111  PARENT is the original objfile if ABFD is a separate debug info file.
1112  Otherwise PARENT is NULL.
1113 
1114  Upon success, returns a pointer to the objfile that was added.
1115  Upon failure, jumps back to command level (never returns). */
1116 
1117 static struct objfile *
1118 symbol_file_add_with_addrs (bfd *abfd, const char *name,
1119  symfile_add_flags add_flags,
1120  struct section_addr_info *addrs,
1121  objfile_flags flags, struct objfile *parent)
1122 {
1123  struct objfile *objfile;
1124  const int from_tty = add_flags & SYMFILE_VERBOSE;
1125  const int mainline = add_flags & SYMFILE_MAINLINE;
1126  const int should_print = (print_symbol_loading_p (from_tty, mainline, 1)
1128  || (add_flags & SYMFILE_NO_READ) == 0));
1129 
1131  {
1132  flags |= OBJF_READNOW;
1133  add_flags &= ~SYMFILE_NO_READ;
1134  }
1135  else if (readnever_symbol_files
1136  || (parent != NULL && (parent->flags & OBJF_READNEVER)))
1137  {
1138  flags |= OBJF_READNEVER;
1139  add_flags |= SYMFILE_NO_READ;
1140  }
1141 
1142  /* Give user a chance to burp if we'd be
1143  interactively wiping out any existing symbols. */
1144 
1146  && mainline
1147  && from_tty
1148  && !query (_("Load new symbol table from \"%s\"? "), name))
1149  error (_("Not confirmed."));
1150 
1151  if (mainline)
1152  flags |= OBJF_MAINLINE;
1153  objfile = new struct objfile (abfd, name, flags);
1154 
1155  if (parent)
1157 
1158  /* We either created a new mapped symbol table, mapped an existing
1159  symbol table file which has not had initial symbol reading
1160  performed, or need to read an unmapped symbol table. */
1161  if (should_print)
1162  {
1165  else
1166  {
1167  printf_unfiltered (_("Reading symbols from %s..."), name);
1168  wrap_here ("");
1170  }
1171  }
1172  syms_from_objfile (objfile, addrs, add_flags);
1173 
1174  /* We now have at least a partial symbol table. Check to see if the
1175  user requested that all symbols be read on initial access via either
1176  the gdb startup command line or on a per symbol file basis. Expand
1177  all partial symbol tables for this objfile if so. */
1178 
1179  if ((flags & OBJF_READNOW))
1180  {
1181  if (should_print)
1182  {
1183  printf_unfiltered (_("expanding to full symbols..."));
1184  wrap_here ("");
1186  }
1187 
1188  if (objfile->sf)
1190  }
1191 
1192  if (should_print && !objfile_has_symbols (objfile))
1193  {
1194  wrap_here ("");
1195  printf_unfiltered (_("(no debugging symbols found)..."));
1196  wrap_here ("");
1197  }
1198 
1199  if (should_print)
1200  {
1203  else
1204  printf_unfiltered (_("done.\n"));
1205  }
1206 
1207  /* We print some messages regardless of whether 'from_tty ||
1208  info_verbose' is true, so make sure they go out at the right
1209  time. */
1211 
1212  if (objfile->sf == NULL)
1213  {
1215  return objfile; /* No symbols. */
1216  }
1217 
1218  finish_new_objfile (objfile, add_flags);
1219 
1221 
1222  bfd_cache_close_all ();
1223  return (objfile);
1224 }
1225 
1226 /* Add BFD as a separate debug file for OBJFILE. For NAME description
1227  see the objfile constructor. */
1228 
1229 void
1230 symbol_file_add_separate (bfd *bfd, const char *name,
1231  symfile_add_flags symfile_flags,
1232  struct objfile *objfile)
1233 {
1234  struct section_addr_info *sap;
1235  struct cleanup *my_cleanup;
1236 
1237  /* Create section_addr_info. We can't directly use offsets from OBJFILE
1238  because sections of BFD may not match sections of OBJFILE and because
1239  vma may have been modified by tools such as prelink. */
1241  my_cleanup = make_cleanup_free_section_addr_info (sap);
1242 
1244  (bfd, name, symfile_flags, sap,
1246  | OBJF_USERLOADED),
1247  objfile);
1248 
1249  do_cleanups (my_cleanup);
1250 }
1251 
1252 /* Process the symbol file ABFD, as either the main file or as a
1253  dynamically loaded file.
1254  See symbol_file_add_with_addrs's comments for details. */
1255 
1256 struct objfile *
1257 symbol_file_add_from_bfd (bfd *abfd, const char *name,
1258  symfile_add_flags add_flags,
1259  struct section_addr_info *addrs,
1260  objfile_flags flags, struct objfile *parent)
1261 {
1262  return symbol_file_add_with_addrs (abfd, name, add_flags, addrs, flags,
1263  parent);
1264 }
1265 
1266 /* Process a symbol file, as either the main file or as a dynamically
1267  loaded file. See symbol_file_add_with_addrs's comments for details. */
1268 
1269 struct objfile *
1270 symbol_file_add (const char *name, symfile_add_flags add_flags,
1271  struct section_addr_info *addrs, objfile_flags flags)
1272 {
1274 
1275  return symbol_file_add_from_bfd (bfd.get (), name, add_flags, addrs,
1276  flags, NULL);
1277 }
1278 
1279 /* Call symbol_file_add() with default values and update whatever is
1280  affected by the loading of a new main().
1281  Used when the file is supplied in the gdb command line
1282  and by some targets with special loading requirements.
1283  The auxiliary function, symbol_file_add_main_1(), has the flags
1284  argument for the switches that can only be specified in the symbol_file
1285  command itself. */
1286 
1287 void
1288 symbol_file_add_main (const char *args, symfile_add_flags add_flags)
1289 {
1290  symbol_file_add_main_1 (args, add_flags, 0);
1291 }
1292 
1293 static void
1294 symbol_file_add_main_1 (const char *args, symfile_add_flags add_flags,
1295  objfile_flags flags)
1296 {
1297  add_flags |= current_inferior ()->symfile_flags | SYMFILE_MAINLINE;
1298 
1299  symbol_file_add (args, add_flags, NULL, flags);
1300 
1301  /* Getting new symbols may change our opinion about
1302  what is frameless. */
1303  reinit_frame_cache ();
1304 
1305  if ((add_flags & SYMFILE_NO_READ) == 0)
1307 }
1308 
1309 void
1310 symbol_file_clear (int from_tty)
1311 {
1313  && from_tty
1314  && (symfile_objfile
1315  ? !query (_("Discard symbol table from `%s'? "),
1317  : !query (_("Discard symbol table? "))))
1318  error (_("Not confirmed."));
1319 
1320  /* solib descriptors may have handles to objfiles. Wipe them before their
1321  objfiles get stale by free_all_objfiles. */
1322  no_shared_libraries (NULL, from_tty);
1323 
1324  free_all_objfiles ();
1325 
1326  gdb_assert (symfile_objfile == NULL);
1327  if (from_tty)
1328  printf_unfiltered (_("No symbol file now.\n"));
1329 }
1330 
1331 /* See symfile.h. */
1332 
1334 
1335 static int
1336 separate_debug_file_exists (const char *name, unsigned long crc,
1337  struct objfile *parent_objfile)
1338 {
1339  unsigned long file_crc;
1340  int file_crc_p;
1341  struct stat parent_stat, abfd_stat;
1342  int verified_as_different;
1343 
1344  /* Find a separate debug info file as if symbols would be present in
1345  PARENT_OBJFILE itself this function would not be called. .gnu_debuglink
1346  section can contain just the basename of PARENT_OBJFILE without any
1347  ".debug" suffix as "/usr/lib/debug/path/to/file" is a separate tree where
1348  the separate debug infos with the same basename can exist. */
1349 
1350  if (filename_cmp (name, objfile_name (parent_objfile)) == 0)
1351  return 0;
1352 
1354  printf_unfiltered (_(" Trying %s\n"), name);
1355 
1357 
1358  if (abfd == NULL)
1359  return 0;
1360 
1361  /* Verify symlinks were not the cause of filename_cmp name difference above.
1362 
1363  Some operating systems, e.g. Windows, do not provide a meaningful
1364  st_ino; they always set it to zero. (Windows does provide a
1365  meaningful st_dev.) Files accessed from gdbservers that do not
1366  support the vFile:fstat packet will also have st_ino set to zero.
1367  Do not indicate a duplicate library in either case. While there
1368  is no guarantee that a system that provides meaningful inode
1369  numbers will never set st_ino to zero, this is merely an
1370  optimization, so we do not need to worry about false negatives. */
1371 
1372  if (bfd_stat (abfd.get (), &abfd_stat) == 0
1373  && abfd_stat.st_ino != 0
1374  && bfd_stat (parent_objfile->obfd, &parent_stat) == 0)
1375  {
1376  if (abfd_stat.st_dev == parent_stat.st_dev
1377  && abfd_stat.st_ino == parent_stat.st_ino)
1378  return 0;
1379  verified_as_different = 1;
1380  }
1381  else
1382  verified_as_different = 0;
1383 
1384  file_crc_p = gdb_bfd_crc (abfd.get (), &file_crc);
1385 
1386  if (!file_crc_p)
1387  return 0;
1388 
1389  if (crc != file_crc)
1390  {
1391  unsigned long parent_crc;
1392 
1393  /* If the files could not be verified as different with
1394  bfd_stat then we need to calculate the parent's CRC
1395  to verify whether the files are different or not. */
1396 
1397  if (!verified_as_different)
1398  {
1399  if (!gdb_bfd_crc (parent_objfile->obfd, &parent_crc))
1400  return 0;
1401  }
1402 
1403  if (verified_as_different || parent_crc != file_crc)
1404  warning (_("the debug information found in \"%s\""
1405  " does not match \"%s\" (CRC mismatch).\n"),
1406  name, objfile_name (parent_objfile));
1407 
1408  return 0;
1409  }
1410 
1411  return 1;
1412 }
1413 
1415 static void
1416 show_debug_file_directory (struct ui_file *file, int from_tty,
1417  struct cmd_list_element *c, const char *value)
1418 {
1419  fprintf_filtered (file,
1420  _("The directory where separate debug "
1421  "symbols are searched for is \"%s\".\n"),
1422  value);
1423 }
1424 
1425 #if ! defined (DEBUG_SUBDIRECTORY)
1426 #define DEBUG_SUBDIRECTORY ".debug"
1427 #endif
1428 
1429 /* Find a separate debuginfo file for OBJFILE, using DIR as the directory
1430  where the original file resides (may not be the same as
1431  dirname(objfile->name) due to symlinks), and DEBUGLINK as the file we are
1432  looking for. CANON_DIR is the "realpath" form of DIR.
1433  DIR must contain a trailing '/'.
1434  Returns the path of the file with separate debug info, of NULL. */
1435 
1436 static char *
1437 find_separate_debug_file (const char *dir,
1438  const char *canon_dir,
1439  const char *debuglink,
1440  unsigned long crc32, struct objfile *objfile)
1441 {
1442  char *debugdir;
1443  char *debugfile;
1444  int i;
1445  VEC (char_ptr) *debugdir_vec;
1446  struct cleanup *back_to;
1447  int ix;
1448 
1450  printf_unfiltered (_("\nLooking for separate debug info (debug link) for "
1451  "%s\n"), objfile_name (objfile));
1452 
1453  /* Set I to std::max (strlen (canon_dir), strlen (dir)). */
1454  i = strlen (dir);
1455  if (canon_dir != NULL && strlen (canon_dir) > i)
1456  i = strlen (canon_dir);
1457 
1458  debugfile
1459  = (char *) xmalloc (strlen (debug_file_directory) + 1
1460  + i
1461  + strlen (DEBUG_SUBDIRECTORY)
1462  + strlen ("/")
1463  + strlen (debuglink)
1464  + 1);
1465 
1466  /* First try in the same directory as the original file. */
1467  strcpy (debugfile, dir);
1468  strcat (debugfile, debuglink);
1469 
1470  if (separate_debug_file_exists (debugfile, crc32, objfile))
1471  return debugfile;
1472 
1473  /* Then try in the subdirectory named DEBUG_SUBDIRECTORY. */
1474  strcpy (debugfile, dir);
1475  strcat (debugfile, DEBUG_SUBDIRECTORY);
1476  strcat (debugfile, "/");
1477  strcat (debugfile, debuglink);
1478 
1479  if (separate_debug_file_exists (debugfile, crc32, objfile))
1480  return debugfile;
1481 
1482  /* Then try in the global debugfile directories.
1483 
1484  Keep backward compatibility so that DEBUG_FILE_DIRECTORY being "" will
1485  cause "/..." lookups. */
1486 
1487  debugdir_vec = dirnames_to_char_ptr_vec (debug_file_directory);
1488  back_to = make_cleanup_free_char_ptr_vec (debugdir_vec);
1489 
1490  for (ix = 0; VEC_iterate (char_ptr, debugdir_vec, ix, debugdir); ++ix)
1491  {
1492  strcpy (debugfile, debugdir);
1493  strcat (debugfile, "/");
1494  strcat (debugfile, dir);
1495  strcat (debugfile, debuglink);
1496 
1497  if (separate_debug_file_exists (debugfile, crc32, objfile))
1498  {
1499  do_cleanups (back_to);
1500  return debugfile;
1501  }
1502 
1503  /* If the file is in the sysroot, try using its base path in the
1504  global debugfile directory. */
1505  if (canon_dir != NULL
1506  && filename_ncmp (canon_dir, gdb_sysroot,
1507  strlen (gdb_sysroot)) == 0
1508  && IS_DIR_SEPARATOR (canon_dir[strlen (gdb_sysroot)]))
1509  {
1510  strcpy (debugfile, debugdir);
1511  strcat (debugfile, canon_dir + strlen (gdb_sysroot));
1512  strcat (debugfile, "/");
1513  strcat (debugfile, debuglink);
1514 
1515  if (separate_debug_file_exists (debugfile, crc32, objfile))
1516  {
1517  do_cleanups (back_to);
1518  return debugfile;
1519  }
1520  }
1521  }
1522 
1523  do_cleanups (back_to);
1524  xfree (debugfile);
1525  return NULL;
1526 }
1527 
1528 /* Modify PATH to contain only "[/]directory/" part of PATH.
1529  If there were no directory separators in PATH, PATH will be empty
1530  string on return. */
1531 
1532 static void
1534 {
1535  int i;
1536 
1537  /* Strip off the final filename part, leaving the directory name,
1538  followed by a slash. The directory can be relative or absolute. */
1539  for (i = strlen(path) - 1; i >= 0; i--)
1540  if (IS_DIR_SEPARATOR (path[i]))
1541  break;
1542 
1543  /* If I is -1 then no directory is present there and DIR will be "". */
1544  path[i + 1] = '\0';
1545 }
1546 
1547 /* Find separate debuginfo for OBJFILE (using .gnu_debuglink section).
1548  Returns pathname, or NULL. */
1549 
1550 char *
1552 {
1553  char *debugfile;
1554  unsigned long crc32;
1555 
1557  (bfd_get_debug_link_info (objfile->obfd, &crc32));
1558 
1559  if (debuglink == NULL)
1560  {
1561  /* There's no separate debug info, hence there's no way we could
1562  load it => no warning. */
1563  return NULL;
1564  }
1565 
1568  gdb::unique_xmalloc_ptr<char> canon_dir (lrealpath (dir.c_str ()));
1569 
1570  debugfile = find_separate_debug_file (dir.c_str (), canon_dir.get (),
1571  debuglink.get (), crc32, objfile);
1572 
1573  if (debugfile == NULL)
1574  {
1575  /* For PR gdb/9538, try again with realpath (if different from the
1576  original). */
1577 
1578  struct stat st_buf;
1579 
1580  if (lstat (objfile_name (objfile), &st_buf) == 0
1581  && S_ISLNK (st_buf.st_mode))
1582  {
1583  gdb::unique_xmalloc_ptr<char> symlink_dir
1584  (lrealpath (objfile_name (objfile)));
1585  if (symlink_dir != NULL)
1586  {
1587  terminate_after_last_dir_separator (symlink_dir.get ());
1588  if (dir != symlink_dir.get ())
1589  {
1590  /* Different directory, so try using it. */
1591  debugfile = find_separate_debug_file (symlink_dir.get (),
1592  symlink_dir.get (),
1593  debuglink.get (),
1594  crc32,
1595  objfile);
1596  }
1597  }
1598  }
1599  }
1600 
1601  return debugfile;
1602 }
1603 
1604 /* Make sure that OBJF_{READNOW,READNEVER} are not set
1605  simultaneously. */
1606 
1607 static void
1609 {
1610  if ((flags & OBJF_READNOW) && (flags & OBJF_READNEVER))
1611  error (_("-readnow and -readnever cannot be used simultaneously"));
1612 }
1613 
1614 /* This is the symbol-file command. Read the file, analyze its
1615  symbols, and add a struct symtab to a symtab list. The syntax of
1616  the command is rather bizarre:
1617 
1618  1. The function buildargv implements various quoting conventions
1619  which are undocumented and have little or nothing in common with
1620  the way things are quoted (or not quoted) elsewhere in GDB.
1621 
1622  2. Options are used, which are not generally used in GDB (perhaps
1623  "set mapped on", "set readnow on" would be better)
1624 
1625  3. The order of options matters, which is contrary to GNU
1626  conventions (because it is confusing and inconvenient). */
1627 
1628 void
1629 symbol_file_command (const char *args, int from_tty)
1630 {
1631  dont_repeat ();
1632 
1633  if (args == NULL)
1634  {
1635  symbol_file_clear (from_tty);
1636  }
1637  else
1638  {
1639  objfile_flags flags = OBJF_USERLOADED;
1640  symfile_add_flags add_flags = 0;
1641  char *name = NULL;
1642  bool stop_processing_options = false;
1643  int idx;
1644  char *arg;
1645 
1646  if (from_tty)
1647  add_flags |= SYMFILE_VERBOSE;
1648 
1649  gdb_argv built_argv (args);
1650  for (arg = built_argv[0], idx = 0; arg != NULL; arg = built_argv[++idx])
1651  {
1652  if (stop_processing_options || *arg != '-')
1653  {
1654  if (name == NULL)
1655  name = arg;
1656  else
1657  error (_("Unrecognized argument \"%s\""), arg);
1658  }
1659  else if (strcmp (arg, "-readnow") == 0)
1660  flags |= OBJF_READNOW;
1661  else if (strcmp (arg, "-readnever") == 0)
1662  flags |= OBJF_READNEVER;
1663  else if (strcmp (arg, "--") == 0)
1664  stop_processing_options = true;
1665  else
1666  error (_("Unrecognized argument \"%s\""), arg);
1667  }
1668 
1669  if (name == NULL)
1670  error (_("no symbol file name was specified"));
1671 
1673 
1674  symbol_file_add_main_1 (name, add_flags, flags);
1675  }
1676 }
1677 
1678 /* Set the initial language.
1679 
1680  FIXME: A better solution would be to record the language in the
1681  psymtab when reading partial symbols, and then use it (if known) to
1682  set the language. This would be a win for formats that encode the
1683  language in an easily discoverable place, such as DWARF. For
1684  stabs, we can jump through hoops looking for specially named
1685  symbols or try to intuit the language from the specific type of
1686  stabs we find, but we can't do that until later when we read in
1687  full symbols. */
1688 
1689 void
1691 {
1692  enum language lang = main_language ();
1693 
1694  if (lang == language_unknown)
1695  {
1696  char *name = main_name ();
1697  struct symbol *sym = lookup_symbol (name, NULL, VAR_DOMAIN, NULL).symbol;
1698 
1699  if (sym != NULL)
1700  lang = SYMBOL_LANGUAGE (sym);
1701  }
1702 
1703  if (lang == language_unknown)
1704  {
1705  /* Make C the default language */
1706  lang = language_c;
1707  }
1708 
1709  set_language (lang);
1710  expected_language = current_language; /* Don't warn the user. */
1711 }
1712 
1713 /* Open the file specified by NAME and hand it off to BFD for
1714  preliminary analysis. Return a newly initialized bfd *, which
1715  includes a newly malloc'd` copy of NAME (tilde-expanded and made
1716  absolute). In case of trouble, error() is called. */
1717 
1719 symfile_bfd_open (const char *name)
1720 {
1721  int desc = -1;
1722  struct cleanup *back_to = make_cleanup (null_cleanup, 0);
1723 
1724  if (!is_target_filename (name))
1725  {
1726  char *absolute_name;
1727 
1728  gdb::unique_xmalloc_ptr<char> expanded_name (tilde_expand (name));
1729 
1730  /* Look down path for it, allocate 2nd new malloc'd copy. */
1731  desc = openp (getenv ("PATH"),
1733  expanded_name.get (), O_RDONLY | O_BINARY, &absolute_name);
1734 #if defined(__GO32__) || defined(_WIN32) || defined (__CYGWIN__)
1735  if (desc < 0)
1736  {
1737  char *exename = (char *) alloca (strlen (expanded_name.get ()) + 5);
1738 
1739  strcat (strcpy (exename, expanded_name.get ()), ".exe");
1740  desc = openp (getenv ("PATH"),
1742  exename, O_RDONLY | O_BINARY, &absolute_name);
1743  }
1744 #endif
1745  if (desc < 0)
1746  perror_with_name (expanded_name.get ());
1747 
1748  make_cleanup (xfree, absolute_name);
1749  name = absolute_name;
1750  }
1751 
1752  gdb_bfd_ref_ptr sym_bfd (gdb_bfd_open (name, gnutarget, desc));
1753  if (sym_bfd == NULL)
1754  error (_("`%s': can't open to read symbols: %s."), name,
1755  bfd_errmsg (bfd_get_error ()));
1756 
1757  if (!gdb_bfd_has_target_filename (sym_bfd.get ()))
1758  bfd_set_cacheable (sym_bfd.get (), 1);
1759 
1760  if (!bfd_check_format (sym_bfd.get (), bfd_object))
1761  error (_("`%s': can't read symbols: %s."), name,
1762  bfd_errmsg (bfd_get_error ()));
1763 
1764  do_cleanups (back_to);
1765 
1766  return sym_bfd;
1767 }
1768 
1769 /* Return the section index for SECTION_NAME on OBJFILE. Return -1 if
1770  the section was not found. */
1771 
1772 int
1773 get_section_index (struct objfile *objfile, const char *section_name)
1774 {
1775  asection *sect = bfd_get_section_by_name (objfile->obfd, section_name);
1776 
1777  if (sect)
1778  return sect->index;
1779  else
1780  return -1;
1781 }
1782 
1783 /* Link SF into the global symtab_fns list.
1784  FLAVOUR is the file format that SF handles.
1785  Called on startup by the _initialize routine in each object file format
1786  reader, to register information about each format the reader is prepared
1787  to handle. */
1788 
1789 void
1790 add_symtab_fns (enum bfd_flavour flavour, const struct sym_fns *sf)
1791 {
1792  symtab_fns.emplace_back (flavour, sf);
1793 }
1794 
1795 /* Initialize OBJFILE to read symbols from its associated BFD. It
1796  either returns or calls error(). The result is an initialized
1797  struct sym_fns in the objfile structure, that contains cached
1798  information about the symbol file. */
1799 
1800 static const struct sym_fns *
1801 find_sym_fns (bfd *abfd)
1802 {
1803  enum bfd_flavour our_flavour = bfd_get_flavour (abfd);
1804 
1805  if (our_flavour == bfd_target_srec_flavour
1806  || our_flavour == bfd_target_ihex_flavour
1807  || our_flavour == bfd_target_tekhex_flavour)
1808  return NULL; /* No symbols. */
1809 
1810  for (const registered_sym_fns &rsf : symtab_fns)
1811  if (our_flavour == rsf.sym_flavour)
1812  return rsf.sym_fns;
1813 
1814  error (_("I'm sorry, Dave, I can't do that. Symbol format `%s' unknown."),
1815  bfd_get_target (abfd));
1816 }
1817 
1818 
1819 /* This function runs the load command of our current target. */
1820 
1821 static void
1822 load_command (const char *arg, int from_tty)
1823 {
1824  struct cleanup *cleanup = make_cleanup (null_cleanup, NULL);
1825 
1826  dont_repeat ();
1827 
1828  /* The user might be reloading because the binary has changed. Take
1829  this opportunity to check. */
1830  reopen_exec_file ();
1831  reread_symbols ();
1832 
1833  if (arg == NULL)
1834  {
1835  const char *parg;
1836  int count = 0;
1837 
1838  parg = arg = get_exec_file (1);
1839 
1840  /* Count how many \ " ' tab space there are in the name. */
1841  while ((parg = strpbrk (parg, "\\\"'\t ")))
1842  {
1843  parg++;
1844  count++;
1845  }
1846 
1847  if (count)
1848  {
1849  /* We need to quote this string so buildargv can pull it apart. */
1850  char *temp = (char *) xmalloc (strlen (arg) + count + 1 );
1851  char *ptemp = temp;
1852  const char *prev;
1853 
1854  make_cleanup (xfree, temp);
1855 
1856  prev = parg = arg;
1857  while ((parg = strpbrk (parg, "\\\"'\t ")))
1858  {
1859  strncpy (ptemp, prev, parg - prev);
1860  ptemp += parg - prev;
1861  prev = parg++;
1862  *ptemp++ = '\\';
1863  }
1864  strcpy (ptemp, prev);
1865 
1866  arg = temp;
1867  }
1868  }
1869 
1870  target_load (arg, from_tty);
1871 
1872  /* After re-loading the executable, we don't really know which
1873  overlays are mapped any more. */
1875 
1876  do_cleanups (cleanup);
1877 }
1878 
1879 /* This version of "load" should be usable for any target. Currently
1880  it is just used for remote targets, not inftarg.c or core files,
1881  on the theory that only in that case is it useful.
1882 
1883  Avoiding xmodem and the like seems like a win (a) because we don't have
1884  to worry about finding it, and (b) On VMS, fork() is very slow and so
1885  we don't want to run a subprocess. On the other hand, I'm not sure how
1886  performance compares. */
1887 
1888 static int validate_download = 0;
1889 
1890 /* Callback service function for generic_load (bfd_map_over_sections). */
1891 
1892 static void
1893 add_section_size_callback (bfd *abfd, asection *asec, void *data)
1894 {
1895  bfd_size_type *sum = (bfd_size_type *) data;
1896 
1897  *sum += bfd_get_section_size (asec);
1898 }
1899 
1900 /* Opaque data for load_section_callback. */
1904  VEC(memory_write_request_s) *requests;
1905 };
1906 
1907 /* Opaque data for load_progress. */
1909  /* Cumulative data. */
1910  unsigned long write_count;
1911  unsigned long data_count;
1912  bfd_size_type total_size;
1913 };
1914 
1915 /* Opaque data for load_progress for a single section. */
1918 
1919  /* Per-section data. */
1920  const char *section_name;
1925 };
1926 
1927 /* Target write callback routine for progress reporting. */
1928 
1929 static void
1930 load_progress (ULONGEST bytes, void *untyped_arg)
1931 {
1932  struct load_progress_section_data *args
1933  = (struct load_progress_section_data *) untyped_arg;
1934  struct load_progress_data *totals;
1935 
1936  if (args == NULL)
1937  /* Writing padding data. No easy way to get at the cumulative
1938  stats, so just ignore this. */
1939  return;
1940 
1941  totals = args->cumulative;
1942 
1943  if (bytes == 0 && args->section_sent == 0)
1944  {
1945  /* The write is just starting. Let the user know we've started
1946  this section. */
1947  current_uiout->message ("Loading section %s, size %s lma %s\n",
1948  args->section_name,
1949  hex_string (args->section_size),
1950  paddress (target_gdbarch (), args->lma));
1951  return;
1952  }
1953 
1954  if (validate_download)
1955  {
1956  /* Broken memories and broken monitors manifest themselves here
1957  when bring new computers to life. This doubles already slow
1958  downloads. */
1959  /* NOTE: cagney/1999-10-18: A more efficient implementation
1960  might add a verify_memory() method to the target vector and
1961  then use that. remote.c could implement that method using
1962  the ``qCRC'' packet. */
1963  gdb::byte_vector check (bytes);
1964 
1965  if (target_read_memory (args->lma, check.data (), bytes) != 0)
1966  error (_("Download verify read failed at %s"),
1967  paddress (target_gdbarch (), args->lma));
1968  if (memcmp (args->buffer, check.data (), bytes) != 0)
1969  error (_("Download verify compare failed at %s"),
1970  paddress (target_gdbarch (), args->lma));
1971  }
1972  totals->data_count += bytes;
1973  args->lma += bytes;
1974  args->buffer += bytes;
1975  totals->write_count += 1;
1976  args->section_sent += bytes;
1977  if (check_quit_flag ()
1980  args->section_sent)))
1981  error (_("Canceled the download"));
1982 
1983  if (deprecated_show_load_progress != NULL)
1985  args->section_sent,
1986  args->section_size,
1987  totals->data_count,
1988  totals->total_size);
1989 }
1990 
1991 /* Callback service function for generic_load (bfd_map_over_sections). */
1992 
1993 static void
1994 load_section_callback (bfd *abfd, asection *asec, void *data)
1995 {
1996  struct memory_write_request *new_request;
1997  struct load_section_data *args = (struct load_section_data *) data;
1998  struct load_progress_section_data *section_data;
1999  bfd_size_type size = bfd_get_section_size (asec);
2000  gdb_byte *buffer;
2001  const char *sect_name = bfd_get_section_name (abfd, asec);
2002 
2003  if ((bfd_get_section_flags (abfd, asec) & SEC_LOAD) == 0)
2004  return;
2005 
2006  if (size == 0)
2007  return;
2008 
2009  new_request = VEC_safe_push (memory_write_request_s,
2010  args->requests, NULL);
2011  memset (new_request, 0, sizeof (struct memory_write_request));
2012  section_data = XCNEW (struct load_progress_section_data);
2013  new_request->begin = bfd_section_lma (abfd, asec) + args->load_offset;
2014  new_request->end = new_request->begin + size; /* FIXME Should size
2015  be in instead? */
2016  new_request->data = (gdb_byte *) xmalloc (size);
2017  new_request->baton = section_data;
2018 
2019  buffer = new_request->data;
2020 
2021  section_data->cumulative = args->progress_data;
2022  section_data->section_name = sect_name;
2023  section_data->section_size = size;
2024  section_data->lma = new_request->begin;
2025  section_data->buffer = buffer;
2026 
2027  bfd_get_section_contents (abfd, asec, buffer, 0, size);
2028 }
2029 
2030 /* Clean up an entire memory request vector, including load
2031  data and progress records. */
2032 
2033 static void
2035 {
2037  VEC(memory_write_request_s) *vec = *vec_p;
2038  int i;
2039  struct memory_write_request *mr;
2040 
2041  for (i = 0; VEC_iterate (memory_write_request_s, vec, i, mr); ++i)
2042  {
2043  xfree (mr->data);
2044  xfree (mr->baton);
2045  }
2047 }
2048 
2049 static void print_transfer_performance (struct ui_file *stream,
2050  unsigned long data_count,
2051  unsigned long write_count,
2052  std::chrono::steady_clock::duration d);
2053 
2054 void
2055 generic_load (const char *args, int from_tty)
2056 {
2057  struct cleanup *old_cleanups;
2058  struct load_section_data cbdata;
2059  struct load_progress_data total_progress;
2060  struct ui_out *uiout = current_uiout;
2061 
2062  CORE_ADDR entry;
2063 
2064  memset (&cbdata, 0, sizeof (cbdata));
2065  memset (&total_progress, 0, sizeof (total_progress));
2066  cbdata.progress_data = &total_progress;
2067 
2068  old_cleanups = make_cleanup (clear_memory_write_data, &cbdata.requests);
2069 
2070  if (args == NULL)
2071  error_no_arg (_("file to load"));
2072 
2073  gdb_argv argv (args);
2074 
2075  gdb::unique_xmalloc_ptr<char> filename (tilde_expand (argv[0]));
2076 
2077  if (argv[1] != NULL)
2078  {
2079  const char *endptr;
2080 
2081  cbdata.load_offset = strtoulst (argv[1], &endptr, 0);
2082 
2083  /* If the last word was not a valid number then
2084  treat it as a file name with spaces in. */
2085  if (argv[1] == endptr)
2086  error (_("Invalid download offset:%s."), argv[1]);
2087 
2088  if (argv[2] != NULL)
2089  error (_("Too many parameters."));
2090  }
2091 
2092  /* Open the file for loading. */
2093  gdb_bfd_ref_ptr loadfile_bfd (gdb_bfd_open (filename.get (), gnutarget, -1));
2094  if (loadfile_bfd == NULL)
2095  perror_with_name (filename.get ());
2096 
2097  if (!bfd_check_format (loadfile_bfd.get (), bfd_object))
2098  {
2099  error (_("\"%s\" is not an object file: %s"), filename.get (),
2100  bfd_errmsg (bfd_get_error ()));
2101  }
2102 
2103  bfd_map_over_sections (loadfile_bfd.get (), add_section_size_callback,
2104  (void *) &total_progress.total_size);
2105 
2106  bfd_map_over_sections (loadfile_bfd.get (), load_section_callback, &cbdata);
2107 
2108  using namespace std::chrono;
2109 
2110  steady_clock::time_point start_time = steady_clock::now ();
2111 
2112  if (target_write_memory_blocks (cbdata.requests, flash_discard,
2113  load_progress) != 0)
2114  error (_("Load failed"));
2115 
2116  steady_clock::time_point end_time = steady_clock::now ();
2117 
2118  entry = bfd_get_start_address (loadfile_bfd.get ());
2119  entry = gdbarch_addr_bits_remove (target_gdbarch (), entry);
2120  uiout->text ("Start address ");
2121  uiout->field_fmt ("address", "%s", paddress (target_gdbarch (), entry));
2122  uiout->text (", load size ");
2123  uiout->field_fmt ("load-size", "%lu", total_progress.data_count);
2124  uiout->text ("\n");
2126 
2127  /* Reset breakpoints, now that we have changed the load image. For
2128  instance, breakpoints may have been set (or reset, by
2129  post_create_inferior) while connected to the target but before we
2130  loaded the program. In that case, the prologue analyzer could
2131  have read instructions from the target to find the right
2132  breakpoint locations. Loading has changed the contents of that
2133  memory. */
2134 
2135  breakpoint_re_set ();
2136 
2138  total_progress.write_count,
2139  end_time - start_time);
2140 
2141  do_cleanups (old_cleanups);
2142 }
2143 
2144 /* Report on STREAM the performance of a memory transfer operation,
2145  such as 'load'. DATA_COUNT is the number of bytes transferred.
2146  WRITE_COUNT is the number of separate write operations, or 0, if
2147  that information is not available. TIME is how long the operation
2148  lasted. */
2149 
2150 static void
2152  unsigned long data_count,
2153  unsigned long write_count,
2154  std::chrono::steady_clock::duration time)
2155 {
2156  using namespace std::chrono;
2157  struct ui_out *uiout = current_uiout;
2158 
2159  milliseconds ms = duration_cast<milliseconds> (time);
2160 
2161  uiout->text ("Transfer rate: ");
2162  if (ms.count () > 0)
2163  {
2164  unsigned long rate = ((ULONGEST) data_count * 1000) / ms.count ();
2165 
2166  if (uiout->is_mi_like_p ())
2167  {
2168  uiout->field_fmt ("transfer-rate", "%lu", rate * 8);
2169  uiout->text (" bits/sec");
2170  }
2171  else if (rate < 1024)
2172  {
2173  uiout->field_fmt ("transfer-rate", "%lu", rate);
2174  uiout->text (" bytes/sec");
2175  }
2176  else
2177  {
2178  uiout->field_fmt ("transfer-rate", "%lu", rate / 1024);
2179  uiout->text (" KB/sec");
2180  }
2181  }
2182  else
2183  {
2184  uiout->field_fmt ("transferred-bits", "%lu", (data_count * 8));
2185  uiout->text (" bits in <1 sec");
2186  }
2187  if (write_count > 0)
2188  {
2189  uiout->text (", ");
2190  uiout->field_fmt ("write-rate", "%lu", data_count / write_count);
2191  uiout->text (" bytes/write");
2192  }
2193  uiout->text (".\n");
2194 }
2195 
2196 /* This function allows the addition of incrementally linked object files.
2197  It does not modify any state in the target, only in the debugger. */
2198 /* Note: ezannoni 2000-04-13 This function/command used to have a
2199  special case syntax for the rombug target (Rombug is the boot
2200  monitor for Microware's OS-9 / OS-9000, see remote-os9k.c). In the
2201  rombug case, the user doesn't need to supply a text address,
2202  instead a call to target_link() (in target.c) would supply the
2203  value to use. We are now discontinuing this type of ad hoc syntax. */
2204 
2205 static void
2206 add_symbol_file_command (const char *args, int from_tty)
2207 {
2208  struct gdbarch *gdbarch = get_current_arch ();
2210  char *arg;
2211  int argcnt = 0;
2212  int sec_num = 0;
2213  struct objfile *objf;
2214  objfile_flags flags = OBJF_USERLOADED | OBJF_SHARED;
2215  symfile_add_flags add_flags = 0;
2216 
2217  if (from_tty)
2218  add_flags |= SYMFILE_VERBOSE;
2219 
2220  struct sect_opt
2221  {
2222  const char *name;
2223  const char *value;
2224  };
2225 
2226  struct section_addr_info *section_addrs;
2227  std::vector<sect_opt> sect_opts = { { ".text", NULL } };
2228  bool stop_processing_options = false;
2229  struct cleanup *my_cleanups = make_cleanup (null_cleanup, NULL);
2230 
2231  dont_repeat ();
2232 
2233  if (args == NULL)
2234  error (_("add-symbol-file takes a file name and an address"));
2235 
2236  bool seen_addr = false;
2237  gdb_argv argv (args);
2238 
2239  for (arg = argv[0], argcnt = 0; arg != NULL; arg = argv[++argcnt])
2240  {
2241  if (stop_processing_options || *arg != '-')
2242  {
2243  if (filename == NULL)
2244  {
2245  /* First non-option argument is always the filename. */
2246  filename.reset (tilde_expand (arg));
2247  }
2248  else if (!seen_addr)
2249  {
2250  /* The second non-option argument is always the text
2251  address at which to load the program. */
2252  sect_opts[0].value = arg;
2253  seen_addr = true;
2254  }
2255  else
2256  error (_("Unrecognized argument \"%s\""), arg);
2257  }
2258  else if (strcmp (arg, "-readnow") == 0)
2259  flags |= OBJF_READNOW;
2260  else if (strcmp (arg, "-readnever") == 0)
2261  flags |= OBJF_READNEVER;
2262  else if (strcmp (arg, "-s") == 0)
2263  {
2264  if (argv[argcnt + 1] == NULL)
2265  error (_("Missing section name after \"-s\""));
2266  else if (argv[argcnt + 2] == NULL)
2267  error (_("Missing section address after \"-s\""));
2268 
2269  sect_opt sect = { argv[argcnt + 1], argv[argcnt + 2] };
2270 
2271  sect_opts.push_back (sect);
2272  argcnt += 2;
2273  }
2274  else if (strcmp (arg, "--") == 0)
2275  stop_processing_options = true;
2276  else
2277  error (_("Unrecognized argument \"%s\""), arg);
2278  }
2279 
2280  if (filename == NULL)
2281  error (_("You must provide a filename to be loaded."));
2282 
2284 
2285  /* This command takes at least two arguments. The first one is a
2286  filename, and the second is the address where this file has been
2287  loaded. Abort now if this address hasn't been provided by the
2288  user. */
2289  if (!seen_addr)
2290  error (_("The address where %s has been loaded is missing"),
2291  filename.get ());
2292 
2293  /* Print the prompt for the query below. And save the arguments into
2294  a sect_addr_info structure to be passed around to other
2295  functions. We have to split this up into separate print
2296  statements because hex_string returns a local static
2297  string. */
2298 
2299  printf_unfiltered (_("add symbol table from file \"%s\" at\n"),
2300  filename.get ());
2301  section_addrs = alloc_section_addr_info (sect_opts.size ());
2302  make_cleanup (xfree, section_addrs);
2303  for (sect_opt &sect : sect_opts)
2304  {
2305  CORE_ADDR addr;
2306  const char *val = sect.value;
2307  const char *sec = sect.name;
2308 
2309  addr = parse_and_eval_address (val);
2310 
2311  /* Here we store the section offsets in the order they were
2312  entered on the command line. */
2313  section_addrs->other[sec_num].name = (char *) sec;
2314  section_addrs->other[sec_num].addr = addr;
2315  printf_unfiltered ("\t%s_addr = %s\n", sec,
2316  paddress (gdbarch, addr));
2317  sec_num++;
2318 
2319  /* The object's sections are initialized when a
2320  call is made to build_objfile_section_table (objfile).
2321  This happens in reread_symbols.
2322  At this point, we don't know what file type this is,
2323  so we can't determine what section names are valid. */
2324  }
2325  section_addrs->num_sections = sec_num;
2326 
2327  if (from_tty && (!query ("%s", "")))
2328  error (_("Not confirmed."));
2329 
2330  objf = symbol_file_add (filename.get (), add_flags, section_addrs, flags);
2331 
2333 
2334  /* Getting new symbols may change our opinion about what is
2335  frameless. */
2336  reinit_frame_cache ();
2337  do_cleanups (my_cleanups);
2338 }
2339 
2340 
2341 /* This function removes a symbol file that was added via add-symbol-file. */
2342 
2343 static void
2344 remove_symbol_file_command (const char *args, int from_tty)
2345 {
2346  struct objfile *objf = NULL;
2347  struct program_space *pspace = current_program_space;
2348 
2349  dont_repeat ();
2350 
2351  if (args == NULL)
2352  error (_("remove-symbol-file: no symbol file provided"));
2353 
2354  gdb_argv argv (args);
2355 
2356  if (strcmp (argv[0], "-a") == 0)
2357  {
2358  /* Interpret the next argument as an address. */
2359  CORE_ADDR addr;
2360 
2361  if (argv[1] == NULL)
2362  error (_("Missing address argument"));
2363 
2364  if (argv[2] != NULL)
2365  error (_("Junk after %s"), argv[1]);
2366 
2367  addr = parse_and_eval_address (argv[1]);
2368 
2369  ALL_OBJFILES (objf)
2370  {
2371  if ((objf->flags & OBJF_USERLOADED) != 0
2372  && (objf->flags & OBJF_SHARED) != 0
2373  && objf->pspace == pspace && is_addr_in_objfile (addr, objf))
2374  break;
2375  }
2376  }
2377  else if (argv[0] != NULL)
2378  {
2379  /* Interpret the current argument as a file name. */
2380 
2381  if (argv[1] != NULL)
2382  error (_("Junk after %s"), argv[0]);
2383 
2384  gdb::unique_xmalloc_ptr<char> filename (tilde_expand (argv[0]));
2385 
2386  ALL_OBJFILES (objf)
2387  {
2388  if ((objf->flags & OBJF_USERLOADED) != 0
2389  && (objf->flags & OBJF_SHARED) != 0
2390  && objf->pspace == pspace
2391  && filename_cmp (filename.get (), objfile_name (objf)) == 0)
2392  break;
2393  }
2394  }
2395 
2396  if (objf == NULL)
2397  error (_("No symbol file found"));
2398 
2399  if (from_tty
2400  && !query (_("Remove symbol table from file \"%s\"? "),
2401  objfile_name (objf)))
2402  error (_("Not confirmed."));
2403 
2404  delete objf;
2405  clear_symtab_users (0);
2406 }
2407 
2408 /* Re-read symbols if a symbol-file has changed. */
2409 
2410 void
2412 {
2413  struct objfile *objfile;
2414  long new_modtime;
2415  struct stat new_statbuf;
2416  int res;
2417  std::vector<struct objfile *> new_objfiles;
2418 
2419  /* With the addition of shared libraries, this should be modified,
2420  the load time should be saved in the partial symbol tables, since
2421  different tables may come from different source files. FIXME.
2422  This routine should then walk down each partial symbol table
2423  and see if the symbol table that it originates from has been changed. */
2424 
2426  {
2427  if (objfile->obfd == NULL)
2428  continue;
2429 
2430  /* Separate debug objfiles are handled in the main objfile. */
2432  continue;
2433 
2434  /* If this object is from an archive (what you usually create with
2435  `ar', often called a `static library' on most systems, though
2436  a `shared library' on AIX is also an archive), then you should
2437  stat on the archive name, not member name. */
2438  if (objfile->obfd->my_archive)
2439  res = stat (objfile->obfd->my_archive->filename, &new_statbuf);
2440  else
2441  res = stat (objfile_name (objfile), &new_statbuf);
2442  if (res != 0)
2443  {
2444  /* FIXME, should use print_sys_errmsg but it's not filtered. */
2445  printf_unfiltered (_("`%s' has disappeared; keeping its symbols.\n"),
2446  objfile_name (objfile));
2447  continue;
2448  }
2449  new_modtime = new_statbuf.st_mtime;
2450  if (new_modtime != objfile->mtime)
2451  {
2452  struct cleanup *old_cleanups;
2453  struct section_offsets *offsets;
2454  int num_offsets;
2455  char *original_name;
2456 
2457  printf_unfiltered (_("`%s' has changed; re-reading symbols.\n"),
2458  objfile_name (objfile));
2459 
2460  /* There are various functions like symbol_file_add,
2461  symfile_bfd_open, syms_from_objfile, etc., which might
2462  appear to do what we want. But they have various other
2463  effects which we *don't* want. So we just do stuff
2464  ourselves. We don't worry about mapped files (for one thing,
2465  any mapped file will be out of date). */
2466 
2467  /* If we get an error, blow away this objfile (not sure if
2468  that is the correct response for things like shared
2469  libraries). */
2470  std::unique_ptr<struct objfile> objfile_holder (objfile);
2471 
2472  /* We need to do this whenever any symbols go away. */
2473  old_cleanups = make_cleanup (clear_symtab_users_cleanup, 0 /*ignore*/);
2474 
2475  if (exec_bfd != NULL
2476  && filename_cmp (bfd_get_filename (objfile->obfd),
2477  bfd_get_filename (exec_bfd)) == 0)
2478  {
2479  /* Reload EXEC_BFD without asking anything. */
2480 
2481  exec_file_attach (bfd_get_filename (objfile->obfd), 0);
2482  }
2483 
2484  /* Keep the calls order approx. the same as in free_objfile. */
2485 
2486  /* Free the separate debug objfiles. It will be
2487  automatically recreated by sym_read. */
2489 
2490  /* Remove any references to this objfile in the global
2491  value lists. */
2493 
2494  /* Nuke all the state that we will re-read. Much of the following
2495  code which sets things to NULL really is necessary to tell
2496  other parts of GDB that there is nothing currently there.
2497 
2498  Try to keep the freeing order compatible with free_objfile. */
2499 
2500  if (objfile->sf != NULL)
2501  {
2502  (*objfile->sf->sym_finish) (objfile);
2503  }
2504 
2505  clear_objfile_data (objfile);
2506 
2507  /* Clean up any state BFD has sitting around. */
2508  {
2509  gdb_bfd_ref_ptr obfd (objfile->obfd);
2510  char *obfd_filename;
2511 
2512  obfd_filename = bfd_get_filename (objfile->obfd);
2513  /* Open the new BFD before freeing the old one, so that
2514  the filename remains live. */
2515  gdb_bfd_ref_ptr temp (gdb_bfd_open (obfd_filename, gnutarget, -1));
2516  objfile->obfd = temp.release ();
2517  if (objfile->obfd == NULL)
2518  error (_("Can't open %s to read symbols."), obfd_filename);
2519  }
2520 
2521  original_name = xstrdup (objfile->original_name);
2522  make_cleanup (xfree, original_name);
2523 
2524  /* bfd_openr sets cacheable to true, which is what we want. */
2525  if (!bfd_check_format (objfile->obfd, bfd_object))
2526  error (_("Can't read symbols from %s: %s."), objfile_name (objfile),
2527  bfd_errmsg (bfd_get_error ()));
2528 
2529  /* Save the offsets, we will nuke them with the rest of the
2530  objfile_obstack. */
2531  num_offsets = objfile->num_sections;
2532  offsets = ((struct section_offsets *)
2533  alloca (SIZEOF_N_SECTION_OFFSETS (num_offsets)));
2534  memcpy (offsets, objfile->section_offsets,
2535  SIZEOF_N_SECTION_OFFSETS (num_offsets));
2536 
2537  /* FIXME: Do we have to free a whole linked list, or is this
2538  enough? */
2539  objfile->global_psymbols.clear ();
2540  objfile->static_psymbols.clear ();
2541 
2542  /* Free the obstacks for non-reusable objfiles. */
2545 
2546  /* NB: after this call to obstack_free, objfiles_changed
2547  will need to be called (see discussion below). */
2548  obstack_free (&objfile->objfile_obstack, 0);
2549  objfile->sections = NULL;
2550  objfile->compunit_symtabs = NULL;
2551  objfile->psymtabs = NULL;
2552  objfile->psymtabs_addrmap = NULL;
2553  objfile->free_psymtabs = NULL;
2554  objfile->template_symbols = NULL;
2555 
2556  /* obstack_init also initializes the obstack so it is
2557  empty. We could use obstack_specify_allocation but
2558  gdb_obstack.h specifies the alloc/dealloc functions. */
2559  obstack_init (&objfile->objfile_obstack);
2560 
2561  /* set_objfile_per_bfd potentially allocates the per-bfd
2562  data on the objfile's obstack (if sharing data across
2563  multiple users is not possible), so it's important to
2564  do it *after* the obstack has been initialized. */
2566 
2568  = (char *) obstack_copy0 (&objfile->objfile_obstack, original_name,
2569  strlen (original_name));
2570 
2571  /* Reset the sym_fns pointer. The ELF reader can change it
2572  based on whether .gdb_index is present, and we need it to
2573  start over. PR symtab/15885 */
2575 
2578 
2579  /* We use the same section offsets as from last time. I'm not
2580  sure whether that is always correct for shared libraries. */
2582  obstack_alloc (&objfile->objfile_obstack,
2583  SIZEOF_N_SECTION_OFFSETS (num_offsets));
2584  memcpy (objfile->section_offsets, offsets,
2585  SIZEOF_N_SECTION_OFFSETS (num_offsets));
2586  objfile->num_sections = num_offsets;
2587 
2588  /* What the hell is sym_new_init for, anyway? The concept of
2589  distinguishing between the main file and additional files
2590  in this way seems rather dubious. */
2591  if (objfile == symfile_objfile)
2592  {
2593  (*objfile->sf->sym_new_init) (objfile);
2594  }
2595 
2596  (*objfile->sf->sym_init) (objfile);
2598 
2600 
2601  /* We are about to read new symbols and potentially also
2602  DWARF information. Some targets may want to pass addresses
2603  read from DWARF DIE's through an adjustment function before
2604  saving them, like MIPS, which may call into
2605  "find_pc_section". When called, that function will make
2606  use of per-objfile program space data.
2607 
2608  Since we discarded our section information above, we have
2609  dangling pointers in the per-objfile program space data
2610  structure. Force GDB to update the section mapping
2611  information by letting it know the objfile has changed,
2612  making the dangling pointers point to correct data
2613  again. */
2614 
2615  objfiles_changed ();
2616 
2617  read_symbols (objfile, 0);
2618 
2620  {
2621  wrap_here ("");
2622  printf_unfiltered (_("(no debugging symbols found)\n"));
2623  wrap_here ("");
2624  }
2625 
2626  /* We're done reading the symbol file; finish off complaints. */
2628 
2629  /* Getting new symbols may change our opinion about what is
2630  frameless. */
2631 
2632  reinit_frame_cache ();
2633 
2634  /* Discard cleanups as symbol reading was successful. */
2635  objfile_holder.release ();
2636  discard_cleanups (old_cleanups);
2637 
2638  /* If the mtime has changed between the time we set new_modtime
2639  and now, we *want* this to be out of date, so don't call stat
2640  again now. */
2641  objfile->mtime = new_modtime;
2643 
2644  new_objfiles.push_back (objfile);
2645  }
2646  }
2647 
2648  if (!new_objfiles.empty ())
2649  {
2650  clear_symtab_users (0);
2651 
2652  /* clear_objfile_data for each objfile was called before freeing it and
2653  observer_notify_new_objfile (NULL) has been called by
2654  clear_symtab_users above. Notify the new files now. */
2655  for (auto iter : new_objfiles)
2657 
2658  /* At least one objfile has changed, so we can consider that
2659  the executable we're debugging has changed too. */
2661  }
2662 }
2663 
2664 
2666 {
2667  filename_language (const std::string &ext_, enum language lang_)
2668  : ext (ext_), lang (lang_)
2669  {}
2670 
2673 };
2674 
2675 static std::vector<filename_language> filename_language_table;
2676 
2677 /* See symfile.h. */
2678 
2679 void
2680 add_filename_language (const char *ext, enum language lang)
2681 {
2682  filename_language_table.emplace_back (ext, lang);
2683 }
2684 
2685 static char *ext_args;
2686 static void
2687 show_ext_args (struct ui_file *file, int from_tty,
2688  struct cmd_list_element *c, const char *value)
2689 {
2690  fprintf_filtered (file,
2691  _("Mapping between filename extension "
2692  "and source language is \"%s\".\n"),
2693  value);
2694 }
2695 
2696 static void
2697 set_ext_lang_command (const char *args,
2698  int from_tty, struct cmd_list_element *e)
2699 {
2700  char *cp = ext_args;
2701  enum language lang;
2702 
2703  /* First arg is filename extension, starting with '.' */
2704  if (*cp != '.')
2705  error (_("'%s': Filename extension must begin with '.'"), ext_args);
2706 
2707  /* Find end of first arg. */
2708  while (*cp && !isspace (*cp))
2709  cp++;
2710 
2711  if (*cp == '\0')
2712  error (_("'%s': two arguments required -- "
2713  "filename extension and language"),
2714  ext_args);
2715 
2716  /* Null-terminate first arg. */
2717  *cp++ = '\0';
2718 
2719  /* Find beginning of second arg, which should be a source language. */
2720  cp = skip_spaces (cp);
2721 
2722  if (*cp == '\0')
2723  error (_("'%s': two arguments required -- "
2724  "filename extension and language"),
2725  ext_args);
2726 
2727  /* Lookup the language from among those we know. */
2728  lang = language_enum (cp);
2729 
2730  auto it = filename_language_table.begin ();
2731  /* Now lookup the filename extension: do we already know it? */
2732  for (; it != filename_language_table.end (); it++)
2733  {
2734  if (it->ext == ext_args)
2735  break;
2736  }
2737 
2738  if (it == filename_language_table.end ())
2739  {
2740  /* New file extension. */
2742  }
2743  else
2744  {
2745  /* Redefining a previously known filename extension. */
2746 
2747  /* if (from_tty) */
2748  /* query ("Really make files of type %s '%s'?", */
2749  /* ext_args, language_str (lang)); */
2750 
2751  it->lang = lang;
2752  }
2753 }
2754 
2755 static void
2756 info_ext_lang_command (const char *args, int from_tty)
2757 {
2758  printf_filtered (_("Filename extensions and the languages they represent:"));
2759  printf_filtered ("\n\n");
2760  for (const filename_language &entry : filename_language_table)
2761  printf_filtered ("\t%s\t- %s\n", entry.ext.c_str (),
2762  language_str (entry.lang));
2763 }
2764 
2765 enum language
2766 deduce_language_from_filename (const char *filename)
2767 {
2768  const char *cp;
2769 
2770  if (filename != NULL)
2771  if ((cp = strrchr (filename, '.')) != NULL)
2772  {
2773  for (const filename_language &entry : filename_language_table)
2774  if (entry.ext == cp)
2775  return entry.lang;
2776  }
2777 
2778  return language_unknown;
2779 }
2780 
2781 /* Allocate and initialize a new symbol table.
2782  CUST is from the result of allocate_compunit_symtab. */
2783 
2784 struct symtab *
2785 allocate_symtab (struct compunit_symtab *cust, const char *filename)
2786 {
2787  struct objfile *objfile = cust->objfile;
2788  struct symtab *symtab
2790 
2791  symtab->filename
2792  = (const char *) bcache (filename, strlen (filename) + 1,
2794  symtab->fullname = NULL;
2796 
2797  /* This can be very verbose with lots of headers.
2798  Only print at higher debug levels. */
2799  if (symtab_create_debug >= 2)
2800  {
2801  /* Be a bit clever with debugging messages, and don't print objfile
2802  every time, only when it changes. */
2803  static char *last_objfile_name = NULL;
2804 
2805  if (last_objfile_name == NULL
2806  || strcmp (last_objfile_name, objfile_name (objfile)) != 0)
2807  {
2808  xfree (last_objfile_name);
2809  last_objfile_name = xstrdup (objfile_name (objfile));
2811  "Creating one or more symtabs for objfile %s ...\n",
2812  last_objfile_name);
2813  }
2815  "Created symtab %s for module %s.\n",
2817  }
2818 
2819  /* Add it to CUST's list of symtabs. */
2820  if (cust->filetabs == NULL)
2821  {
2822  cust->filetabs = symtab;
2823  cust->last_filetab = symtab;
2824  }
2825  else
2826  {
2827  cust->last_filetab->next = symtab;
2828  cust->last_filetab = symtab;
2829  }
2830 
2831  /* Backlink to the containing compunit symtab. */
2832  symtab->compunit_symtab = cust;
2833 
2834  return symtab;
2835 }
2836 
2837 /* Allocate and initialize a new compunit.
2838  NAME is the name of the main source file, if there is one, or some
2839  descriptive text if there are no source files. */
2840 
2841 struct compunit_symtab *
2843 {
2845  struct compunit_symtab);
2846  const char *saved_name;
2847 
2848  cu->objfile = objfile;
2849 
2850  /* The name we record here is only for display/debugging purposes.
2851  Just save the basename to avoid path issues (too long for display,
2852  relative vs absolute, etc.). */
2853  saved_name = lbasename (name);
2854  cu->name
2855  = (const char *) obstack_copy0 (&objfile->objfile_obstack, saved_name,
2856  strlen (saved_name));
2857 
2858  COMPUNIT_DEBUGFORMAT (cu) = "unknown";
2859 
2860  if (symtab_create_debug)
2861  {
2863  "Created compunit symtab %s for %s.\n",
2865  cu->name);
2866  }
2867 
2868  return cu;
2869 }
2870 
2871 /* Hook CU to the objfile it comes from. */
2872 
2873 void
2875 {
2876  cu->next = cu->objfile->compunit_symtabs;
2877  cu->objfile->compunit_symtabs = cu;
2878 }
2879 
2880 
2881 /* Reset all data structures in gdb which may contain references to
2882  symbol table data. */
2883 
2884 void
2885 clear_symtab_users (symfile_add_flags add_flags)
2886 {
2887  /* Someday, we should do better than this, by only blowing away
2888  the things that really need to be blown. */
2889 
2890  /* Clear the "current" symtab first, because it is no longer valid.
2891  breakpoint_re_set may try to access the current symtab. */
2893 
2894  clear_displays ();
2898 
2899  /* Clear globals which might have pointed into a removed objfile.
2900  FIXME: It's not clear which of these are supposed to persist
2901  between expressions and which ought to be reset each time. */
2902  expression_context_block = NULL;
2903  innermost_block = NULL;
2904 
2905  /* Varobj may refer to old symbols, perform a cleanup. */
2906  varobj_invalidate ();
2907 
2908  /* Now that the various caches have been cleared, we can re_set
2909  our breakpoints without risking it using stale data. */
2910  if ((add_flags & SYMFILE_DEFER_BP_RESET) == 0)
2911  breakpoint_re_set ();
2912 }
2913 
2914 static void
2916 {
2917  clear_symtab_users (0);
2918 }
2919 
2920 /* OVERLAYS:
2921  The following code implements an abstraction for debugging overlay sections.
2922 
2923  The target model is as follows:
2924  1) The gnu linker will permit multiple sections to be mapped into the
2925  same VMA, each with its own unique LMA (or load address).
2926  2) It is assumed that some runtime mechanism exists for mapping the
2927  sections, one by one, from the load address into the VMA address.
2928  3) This code provides a mechanism for gdb to keep track of which
2929  sections should be considered to be mapped from the VMA to the LMA.
2930  This information is used for symbol lookup, and memory read/write.
2931  For instance, if a section has been mapped then its contents
2932  should be read from the VMA, otherwise from the LMA.
2933 
2934  Two levels of debugger support for overlays are available. One is
2935  "manual", in which the debugger relies on the user to tell it which
2936  overlays are currently mapped. This level of support is
2937  implemented entirely in the core debugger, and the information about
2938  whether a section is mapped is kept in the objfile->obj_section table.
2939 
2940  The second level of support is "automatic", and is only available if
2941  the target-specific code provides functionality to read the target's
2942  overlay mapping table, and translate its contents for the debugger
2943  (by updating the mapped state information in the obj_section tables).
2944 
2945  The interface is as follows:
2946  User commands:
2947  overlay map <name> -- tell gdb to consider this section mapped
2948  overlay unmap <name> -- tell gdb to consider this section unmapped
2949  overlay list -- list the sections that GDB thinks are mapped
2950  overlay read-target -- get the target's state of what's mapped
2951  overlay off/manual/auto -- set overlay debugging state
2952  Functional interface:
2953  find_pc_mapped_section(pc): if the pc is in the range of a mapped
2954  section, return that section.
2955  find_pc_overlay(pc): find any overlay section that contains
2956  the pc, either in its VMA or its LMA
2957  section_is_mapped(sect): true if overlay is marked as mapped
2958  section_is_overlay(sect): true if section's VMA != LMA
2959  pc_in_mapped_range(pc,sec): true if pc belongs to section's VMA
2960  pc_in_unmapped_range(...): true if pc belongs to section's LMA
2961  sections_overlap(sec1, sec2): true if mapped sec1 and sec2 ranges overlap
2962  overlay_mapped_address(...): map an address from section's LMA to VMA
2963  overlay_unmapped_address(...): map an address from section's VMA to LMA
2964  symbol_overlayed_address(...): Return a "current" address for symbol:
2965  either in VMA or LMA depending on whether
2966  the symbol's section is currently mapped. */
2967 
2968 /* Overlay debugging state: */
2969 
2971 int overlay_cache_invalid = 0; /* True if need to refresh mapped state. */
2972 
2973 /* Function: section_is_overlay (SECTION)
2974  Returns true if SECTION has VMA not equal to LMA, ie.
2975  SECTION is loaded at an address different from where it will "run". */
2976 
2977 int
2979 {
2980  if (overlay_debugging && section)
2981  {
2982  asection *bfd_section = section->the_bfd_section;
2983 
2984  if (bfd_section_lma (abfd, bfd_section) != 0
2985  && bfd_section_lma (abfd, bfd_section)
2986  != bfd_section_vma (abfd, bfd_section))
2987  return 1;
2988  }
2989 
2990  return 0;
2991 }
2992 
2993 /* Function: overlay_invalidate_all (void)
2994  Invalidate the mapped state of all overlay sections (mark it as stale). */
2995 
2996 static void
2998 {
2999  struct objfile *objfile;
3000  struct obj_section *sect;
3001 
3002  ALL_OBJSECTIONS (objfile, sect)
3003  if (section_is_overlay (sect))
3004  sect->ovly_mapped = -1;
3005 }
3006 
3007 /* Function: section_is_mapped (SECTION)
3008  Returns true if section is an overlay, and is currently mapped.
3009 
3010  Access to the ovly_mapped flag is restricted to this function, so
3011  that we can do automatic update. If the global flag
3012  OVERLAY_CACHE_INVALID is set (by wait_for_inferior), then call
3013  overlay_invalidate_all. If the mapped state of the particular
3014  section is stale, then call TARGET_OVERLAY_UPDATE to refresh it. */
3015 
3016 int
3018 {
3019  struct gdbarch *gdbarch;
3020 
3021  if (osect == 0 || !section_is_overlay (osect))
3022  return 0;
3023 
3024  switch (overlay_debugging)
3025  {
3026  default:
3027  case ovly_off:
3028  return 0; /* overlay debugging off */
3029  case ovly_auto: /* overlay debugging automatic */
3030  /* Unles there is a gdbarch_overlay_update function,
3031  there's really nothing useful to do here (can't really go auto). */
3032  gdbarch = get_objfile_arch (osect->objfile);
3034  {
3036  {
3039  }
3040  if (osect->ovly_mapped == -1)
3042  }
3043  /* fall thru to manual case */
3044  case ovly_on: /* overlay debugging manual */
3045  return osect->ovly_mapped == 1;
3046  }
3047 }
3048 
3049 /* Function: pc_in_unmapped_range
3050  If PC falls into the lma range of SECTION, return true, else false. */
3051 
3052 CORE_ADDR
3054 {
3055  if (section_is_overlay (section))
3056  {
3057  bfd *abfd = section->objfile->obfd;
3058  asection *bfd_section = section->the_bfd_section;
3059 
3060  /* We assume the LMA is relocated by the same offset as the VMA. */
3061  bfd_vma size = bfd_get_section_size (bfd_section);
3062  CORE_ADDR offset = obj_section_offset (section);
3063 
3064  if (bfd_get_section_lma (abfd, bfd_section) + offset <= pc
3065  && pc < bfd_get_section_lma (abfd, bfd_section) + offset + size)
3066  return 1;
3067  }
3068 
3069  return 0;
3070 }
3071 
3072 /* Function: pc_in_mapped_range
3073  If PC falls into the vma range of SECTION, return true, else false. */
3074 
3075 CORE_ADDR
3077 {
3078  if (section_is_overlay (section))
3079  {
3080  if (obj_section_addr (section) <= pc
3081  && pc < obj_section_endaddr (section))
3082  return 1;
3083  }
3084 
3085  return 0;
3086 }
3087 
3088 /* Return true if the mapped ranges of sections A and B overlap, false
3089  otherwise. */
3090 
3091 static int
3093 {
3094  CORE_ADDR a_start = obj_section_addr (a);
3095  CORE_ADDR a_end = obj_section_endaddr (a);
3096  CORE_ADDR b_start = obj_section_addr (b);
3097  CORE_ADDR b_end = obj_section_endaddr (b);
3098 
3099  return (a_start < b_end && b_start < a_end);
3100 }
3101 
3102 /* Function: overlay_unmapped_address (PC, SECTION)
3103  Returns the address corresponding to PC in the unmapped (load) range.
3104  May be the same as PC. */
3105 
3106 CORE_ADDR
3108 {
3109  if (section_is_overlay (section) && pc_in_mapped_range (pc, section))
3110  {
3111  asection *bfd_section = section->the_bfd_section;
3112 
3113  return pc + bfd_section_lma (abfd, bfd_section)
3114  - bfd_section_vma (abfd, bfd_section);
3115  }
3116 
3117  return pc;
3118 }
3119 
3120 /* Function: overlay_mapped_address (PC, SECTION)
3121  Returns the address corresponding to PC in the mapped (runtime) range.
3122  May be the same as PC. */
3123 
3124 CORE_ADDR
3126 {
3127  if (section_is_overlay (section) && pc_in_unmapped_range (pc, section))
3128  {
3129  asection *bfd_section = section->the_bfd_section;
3130 
3131  return pc + bfd_section_vma (abfd, bfd_section)
3132  - bfd_section_lma (abfd, bfd_section);
3133  }
3134 
3135  return pc;
3136 }
3137 
3138 /* Function: symbol_overlayed_address
3139  Return one of two addresses (relative to the VMA or to the LMA),
3140  depending on whether the section is mapped or not. */
3141 
3142 CORE_ADDR
3144 {
3145  if (overlay_debugging)
3146  {
3147  /* If the symbol has no section, just return its regular address. */
3148  if (section == 0)
3149  return address;
3150  /* If the symbol's section is not an overlay, just return its
3151  address. */
3152  if (!section_is_overlay (section))
3153  return address;
3154  /* If the symbol's section is mapped, just return its address. */
3155  if (section_is_mapped (section))
3156  return address;
3157  /*
3158  * HOWEVER: if the symbol is in an overlay section which is NOT mapped,
3159  * then return its LOADED address rather than its vma address!!
3160  */
3161  return overlay_unmapped_address (address, section);
3162  }
3163  return address;
3164 }
3165 
3166 /* Function: find_pc_overlay (PC)
3167  Return the best-match overlay section for PC:
3168  If PC matches a mapped overlay section's VMA, return that section.
3169  Else if PC matches an unmapped section's VMA, return that section.
3170  Else if PC matches an unmapped section's LMA, return that section. */
3171 
3172 struct obj_section *
3174 {
3175  struct objfile *objfile;
3176  struct obj_section *osect, *best_match = NULL;
3177 
3178  if (overlay_debugging)
3179  {
3180  ALL_OBJSECTIONS (objfile, osect)
3181  if (section_is_overlay (osect))
3182  {
3183  if (pc_in_mapped_range (pc, osect))
3184  {
3185  if (section_is_mapped (osect))
3186  return osect;
3187  else
3188  best_match = osect;
3189  }
3190  else if (pc_in_unmapped_range (pc, osect))
3191  best_match = osect;
3192  }
3193  }
3194  return best_match;
3195 }
3196 
3197 /* Function: find_pc_mapped_section (PC)
3198  If PC falls into the VMA address range of an overlay section that is
3199  currently marked as MAPPED, return that section. Else return NULL. */
3200 
3201 struct obj_section *
3203 {
3204  struct objfile *objfile;
3205  struct obj_section *osect;
3206 
3207  if (overlay_debugging)
3208  {
3209  ALL_OBJSECTIONS (objfile, osect)
3210  if (pc_in_mapped_range (pc, osect) && section_is_mapped (osect))
3211  return osect;
3212  }
3213 
3214  return NULL;
3215 }
3216 
3217 /* Function: list_overlays_command
3218  Print a list of mapped sections and their PC ranges. */
3219 
3220 static void
3221 list_overlays_command (const char *args, int from_tty)
3222 {
3223  int nmapped = 0;
3224  struct objfile *objfile;
3225  struct obj_section *osect;
3226 
3227  if (overlay_debugging)
3228  {
3229  ALL_OBJSECTIONS (objfile, osect)
3230  if (section_is_mapped (osect))
3231  {
3233  const char *name;
3234  bfd_vma lma, vma;
3235  int size;
3236 
3237  vma = bfd_section_vma (objfile->obfd, osect->the_bfd_section);
3238  lma = bfd_section_lma (objfile->obfd, osect->the_bfd_section);
3239  size = bfd_get_section_size (osect->the_bfd_section);
3240  name = bfd_section_name (objfile->obfd, osect->the_bfd_section);
3241 
3242  printf_filtered ("Section %s, loaded at ", name);
3244  puts_filtered (" - ");
3246  printf_filtered (", mapped at ");
3248  puts_filtered (" - ");
3250  puts_filtered ("\n");
3251 
3252  nmapped++;
3253  }
3254  }
3255  if (nmapped == 0)
3256  printf_filtered (_("No sections are mapped.\n"));
3257 }
3258 
3259 /* Function: map_overlay_command
3260  Mark the named section as mapped (ie. residing at its VMA address). */
3261 
3262 static void
3263 map_overlay_command (const char *args, int from_tty)
3264 {
3265  struct objfile *objfile, *objfile2;
3266  struct obj_section *sec, *sec2;
3267 
3268  if (!overlay_debugging)
3269  error (_("Overlay debugging not enabled. Use "
3270  "either the 'overlay auto' or\n"
3271  "the 'overlay manual' command."));
3272 
3273  if (args == 0 || *args == 0)
3274  error (_("Argument required: name of an overlay section"));
3275 
3276  /* First, find a section matching the user supplied argument. */
3277  ALL_OBJSECTIONS (objfile, sec)
3278  if (!strcmp (bfd_section_name (objfile->obfd, sec->the_bfd_section), args))
3279  {
3280  /* Now, check to see if the section is an overlay. */
3281  if (!section_is_overlay (sec))
3282  continue; /* not an overlay section */
3283 
3284  /* Mark the overlay as "mapped". */
3285  sec->ovly_mapped = 1;
3286 
3287  /* Next, make a pass and unmap any sections that are
3288  overlapped by this new section: */
3289  ALL_OBJSECTIONS (objfile2, sec2)
3290  if (sec2->ovly_mapped && sec != sec2 && sections_overlap (sec, sec2))
3291  {
3292  if (info_verbose)
3293  printf_unfiltered (_("Note: section %s unmapped by overlap\n"),
3294  bfd_section_name (objfile->obfd,
3295  sec2->the_bfd_section));
3296  sec2->ovly_mapped = 0; /* sec2 overlaps sec: unmap sec2. */
3297  }
3298  return;
3299  }
3300  error (_("No overlay section called %s"), args);
3301 }
3302 
3303 /* Function: unmap_overlay_command
3304  Mark the overlay section as unmapped
3305  (ie. resident in its LMA address range, rather than the VMA range). */
3306 
3307 static void
3308 unmap_overlay_command (const char *args, int from_tty)
3309 {
3310  struct objfile *objfile;
3311  struct obj_section *sec = NULL;
3312 
3313  if (!overlay_debugging)
3314  error (_("Overlay debugging not enabled. "
3315  "Use either the 'overlay auto' or\n"
3316  "the 'overlay manual' command."));
3317 
3318  if (args == 0 || *args == 0)
3319  error (_("Argument required: name of an overlay section"));
3320 
3321  /* First, find a section matching the user supplied argument. */
3322  ALL_OBJSECTIONS (objfile, sec)
3323  if (!strcmp (bfd_section_name (objfile->obfd, sec->the_bfd_section), args))
3324  {
3325  if (!sec->ovly_mapped)
3326  error (_("Section %s is not mapped"), args);
3327  sec->ovly_mapped = 0;
3328  return;
3329  }
3330  error (_("No overlay section called %s"), args);
3331 }
3332 
3333 /* Function: overlay_auto_command
3334  A utility command to turn on overlay debugging.
3335  Possibly this should be done via a set/show command. */
3336 
3337 static void
3338 overlay_auto_command (const char *args, int from_tty)
3339 {
3342  if (info_verbose)
3343  printf_unfiltered (_("Automatic overlay debugging enabled."));
3344 }
3345 
3346 /* Function: overlay_manual_command
3347  A utility command to turn on overlay debugging.
3348  Possibly this should be done via a set/show command. */
3349 
3350 static void
3351 overlay_manual_command (const char *args, int from_tty)
3352 {
3355  if (info_verbose)
3356  printf_unfiltered (_("Overlay debugging enabled."));
3357 }
3358 
3359 /* Function: overlay_off_command
3360  A utility command to turn on overlay debugging.
3361  Possibly this should be done via a set/show command. */
3362 
3363 static void
3364 overlay_off_command (const char *args, int from_tty)
3365 {
3368  if (info_verbose)
3369  printf_unfiltered (_("Overlay debugging disabled."));
3370 }
3371 
3372 static void
3373 overlay_load_command (const char *args, int from_tty)
3374 {
3375  struct gdbarch *gdbarch = get_current_arch ();
3376 
3379  else
3380  error (_("This target does not know how to read its overlay state."));
3381 }
3382 
3383 /* Function: overlay_command
3384  A place-holder for a mis-typed command. */
3385 
3386 /* Command list chain containing all defined "overlay" subcommands. */
3388 
3389 static void
3390 overlay_command (const char *args, int from_tty)
3391 {
3393  ("\"overlay\" must be followed by the name of an overlay command.\n");
3394  help_list (overlaylist, "overlay ", all_commands, gdb_stdout);
3395 }
3396 
3397 /* Target Overlays for the "Simplest" overlay manager:
3398 
3399  This is GDB's default target overlay layer. It works with the
3400  minimal overlay manager supplied as an example by Cygnus. The
3401  entry point is via a function pointer "gdbarch_overlay_update",
3402  so targets that use a different runtime overlay manager can
3403  substitute their own overlay_update function and take over the
3404  function pointer.
3405 
3406  The overlay_update function pokes around in the target's data structures
3407  to see what overlays are mapped, and updates GDB's overlay mapping with
3408  this information.
3409 
3410  In this simple implementation, the target data structures are as follows:
3411  unsigned _novlys; /# number of overlay sections #/
3412  unsigned _ovly_table[_novlys][4] = {
3413  {VMA, OSIZE, LMA, MAPPED}, /# one entry per overlay section #/
3414  {..., ..., ..., ...},
3415  }
3416  unsigned _novly_regions; /# number of overlay regions #/
3417  unsigned _ovly_region_table[_novly_regions][3] = {
3418  {VMA, OSIZE, MAPPED_TO_LMA}, /# one entry per overlay region #/
3419  {..., ..., ...},
3420  }
3421  These functions will attempt to update GDB's mappedness state in the
3422  symbol section table, based on the target's mappedness state.
3423 
3424  To do this, we keep a cached copy of the target's _ovly_table, and
3425  attempt to detect when the cached copy is invalidated. The main
3426  entry point is "simple_overlay_update(SECT), which looks up SECT in
3427  the cached table and re-reads only the entry for that section from
3428  the target (whenever possible). */
3429 
3430 /* Cached, dynamically allocated copies of the target data structures: */
3431 static unsigned (*cache_ovly_table)[4] = 0;
3432 static unsigned cache_novlys = 0;
3435  {
3437  };
3438 
3439 /* Throw away the cached copy of _ovly_table. */
3440 
3441 static void
3443 {
3444  if (cache_ovly_table)
3446  cache_novlys = 0;
3447  cache_ovly_table = NULL;
3449 }
3450 
3451 /* Read an array of ints of size SIZE from the target into a local buffer.
3452  Convert to host order. int LEN is number of ints. */
3453 
3454 static void
3455 read_target_long_array (CORE_ADDR memaddr, unsigned int *myaddr,
3456  int len, int size, enum bfd_endian byte_order)
3457 {
3458  /* FIXME (alloca): Not safe if array is very large. */
3459  gdb_byte *buf = (gdb_byte *) alloca (len * size);
3460  int i;
3461 
3462  read_memory (memaddr, buf, len * size);
3463  for (i = 0; i < len; i++)
3464  myaddr[i] = extract_unsigned_integer (size * i + buf, size, byte_order);
3465 }
3466 
3467 /* Find and grab a copy of the target _ovly_table
3468  (and _novlys, which is needed for the table's size). */
3469 
3470 static int
3472 {
3473  struct bound_minimal_symbol novlys_msym;
3474  struct bound_minimal_symbol ovly_table_msym;
3475  struct gdbarch *gdbarch;
3476  int word_size;
3477  enum bfd_endian byte_order;
3478 
3480  novlys_msym = lookup_minimal_symbol ("_novlys", NULL, NULL);
3481  if (! novlys_msym.minsym)
3482  {
3483  error (_("Error reading inferior's overlay table: "
3484  "couldn't find `_novlys' variable\n"
3485  "in inferior. Use `overlay manual' mode."));
3486  return 0;
3487  }
3488 
3489  ovly_table_msym = lookup_bound_minimal_symbol ("_ovly_table");
3490  if (! ovly_table_msym.minsym)
3491  {
3492  error (_("Error reading inferior's overlay table: couldn't find "
3493  "`_ovly_table' array\n"
3494  "in inferior. Use `overlay manual' mode."));
3495  return 0;
3496  }
3497 
3498  gdbarch = get_objfile_arch (ovly_table_msym.objfile);
3499  word_size = gdbarch_long_bit (gdbarch) / TARGET_CHAR_BIT;
3501 
3503  4, byte_order);
3505  = (unsigned int (*)[4]) xmalloc (cache_novlys * sizeof (*cache_ovly_table));
3506  cache_ovly_table_base = BMSYMBOL_VALUE_ADDRESS (ovly_table_msym);
3508  (unsigned int *) cache_ovly_table,
3509  cache_novlys * 4, word_size, byte_order);
3510 
3511  return 1; /* SUCCESS */
3512 }
3513 
3514 /* Function: simple_overlay_update_1
3515  A helper function for simple_overlay_update. Assuming a cached copy
3516  of _ovly_table exists, look through it to find an entry whose vma,
3517  lma and size match those of OSECT. Re-read the entry and make sure
3518  it still matches OSECT (else the table may no longer be valid).
3519  Set OSECT's mapped state to match the entry. Return: 1 for
3520  success, 0 for failure. */
3521 
3522 static int
3524 {
3525  int i;
3526  asection *bsect = osect->the_bfd_section;
3527  struct gdbarch *gdbarch = get_objfile_arch (osect->objfile);
3528  int word_size = gdbarch_long_bit (gdbarch) / TARGET_CHAR_BIT;
3529  enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
3530 
3531  for (i = 0; i < cache_novlys; i++)
3532  if (cache_ovly_table[i][VMA] == bfd_section_vma (obfd, bsect)
3533  && cache_ovly_table[i][LMA] == bfd_section_lma (obfd, bsect))
3534  {
3536  (unsigned int *) cache_ovly_table[i],
3537  4, word_size, byte_order);
3538  if (cache_ovly_table[i][VMA] == bfd_section_vma (obfd, bsect)
3539  && cache_ovly_table[i][LMA] == bfd_section_lma (obfd, bsect))
3540  {
3541  osect->ovly_mapped = cache_ovly_table[i][MAPPED];
3542  return 1;
3543  }
3544  else /* Warning! Warning! Target's ovly table has changed! */
3545  return 0;
3546  }
3547  return 0;
3548 }
3549 
3550 /* Function: simple_overlay_update
3551  If OSECT is NULL, then update all sections' mapped state
3552  (after re-reading the entire target _ovly_table).
3553  If OSECT is non-NULL, then try to find a matching entry in the
3554  cached ovly_table and update only OSECT's mapped state.
3555  If a cached entry can't be found or the cache isn't valid, then
3556  re-read the entire cache, and go ahead and update all sections. */
3557 
3558 void
3560 {
3561  struct objfile *objfile;
3562 
3563  /* Were we given an osect to look up? NULL means do all of them. */
3564  if (osect)
3565  /* Have we got a cached copy of the target's overlay table? */
3566  if (cache_ovly_table != NULL)
3567  {
3568  /* Does its cached location match what's currently in the
3569  symtab? */
3571  = lookup_minimal_symbol ("_ovly_table", NULL, NULL);
3572 
3573  if (minsym.minsym == NULL)
3574  error (_("Error reading inferior's overlay table: couldn't "
3575  "find `_ovly_table' array\n"
3576  "in inferior. Use `overlay manual' mode."));
3577 
3579  /* Then go ahead and try to look up this single section in
3580  the cache. */
3581  if (simple_overlay_update_1 (osect))
3582  /* Found it! We're done. */
3583  return;
3584  }
3585 
3586  /* Cached table no good: need to read the entire table anew.
3587  Or else we want all the sections, in which case it's actually
3588  more efficient to read the whole table in one block anyway. */
3589 
3590  if (! simple_read_overlay_table ())
3591  return;
3592 
3593  /* Now may as well update all sections, even if only one was requested. */
3594  ALL_OBJSECTIONS (objfile, osect)
3595  if (section_is_overlay (osect))
3596  {
3597  int i;
3598  asection *bsect = osect->the_bfd_section;
3599 
3600  for (i = 0; i < cache_novlys; i++)
3601  if (cache_ovly_table[i][VMA] == bfd_section_vma (obfd, bsect)
3602  && cache_ovly_table[i][LMA] == bfd_section_lma (obfd, bsect))
3603  { /* obj_section matches i'th entry in ovly_table. */
3604  osect->ovly_mapped = cache_ovly_table[i][MAPPED];
3605  break; /* finished with inner for loop: break out. */
3606  }
3607  }
3608 }
3609 
3610 /* Set the output sections and output offsets for section SECTP in
3611  ABFD. The relocation code in BFD will read these offsets, so we
3612  need to be sure they're initialized. We map each section to itself,
3613  with no offset; this means that SECTP->vma will be honored. */
3614 
3615 static void
3616 symfile_dummy_outputs (bfd *abfd, asection *sectp, void *dummy)
3617 {
3618  sectp->output_section = sectp;
3619  sectp->output_offset = 0;
3620 }
3621 
3622 /* Default implementation for sym_relocate. */
3623 
3624 bfd_byte *
3625 default_symfile_relocate (struct objfile *objfile, asection *sectp,
3626  bfd_byte *buf)
3627 {
3628  /* Use sectp->owner instead of objfile->obfd. sectp may point to a
3629  DWO file. */
3630  bfd *abfd = sectp->owner;
3631 
3632  /* We're only interested in sections with relocation
3633  information. */
3634  if ((sectp->flags & SEC_RELOC) == 0)
3635  return NULL;
3636 
3637  /* We will handle section offsets properly elsewhere, so relocate as if
3638  all sections begin at 0. */
3639  bfd_map_over_sections (abfd, symfile_dummy_outputs, NULL);
3640 
3641  return bfd_simple_get_relocated_section_contents (abfd, sectp, buf, NULL);
3642 }
3643 
3644 /* Relocate the contents of a debug section SECTP in ABFD. The
3645  contents are stored in BUF if it is non-NULL, or returned in a
3646  malloc'd buffer otherwise.
3647 
3648  For some platforms and debug info formats, shared libraries contain
3649  relocations against the debug sections (particularly for DWARF-2;
3650  one affected platform is PowerPC GNU/Linux, although it depends on
3651  the version of the linker in use). Also, ELF object files naturally
3652  have unresolved relocations for their debug sections. We need to apply
3653  the relocations in order to get the locations of symbols correct.
3654  Another example that may require relocation processing, is the
3655  DWARF-2 .eh_frame section in .o files, although it isn't strictly a
3656  debug section. */
3657 
3658 bfd_byte *
3660  asection *sectp, bfd_byte *buf)
3661 {
3663 
3664  return (*objfile->sf->sym_relocate) (objfile, sectp, buf);
3665 }
3666 
3667 struct symfile_segment_data *
3669 {
3670  const struct sym_fns *sf = find_sym_fns (abfd);
3671 
3672  if (sf == NULL)
3673  return NULL;
3674 
3675  return sf->sym_segments (abfd);
3676 }
3677 
3678 void
3680 {
3681  xfree (data->segment_bases);
3682  xfree (data->segment_sizes);
3683  xfree (data->segment_info);
3684  xfree (data);
3685 }
3686 
3687 /* Given:
3688  - DATA, containing segment addresses from the object file ABFD, and
3689  the mapping from ABFD's sections onto the segments that own them,
3690  and
3691  - SEGMENT_BASES[0 .. NUM_SEGMENT_BASES - 1], holding the actual
3692  segment addresses reported by the target,
3693  store the appropriate offsets for each section in OFFSETS.
3694 
3695  If there are fewer entries in SEGMENT_BASES than there are segments
3696  in DATA, then apply SEGMENT_BASES' last entry to all the segments.
3697 
3698  If there are more entries, then ignore the extra. The target may
3699  not be able to distinguish between an empty data segment and a
3700  missing data segment; a missing text segment is less plausible. */
3701 
3702 int
3704  const struct symfile_segment_data *data,
3705  struct section_offsets *offsets,
3706  int num_segment_bases,
3707  const CORE_ADDR *segment_bases)
3708 {
3709  int i;
3710  asection *sect;
3711 
3712  /* It doesn't make sense to call this function unless you have some
3713  segment base addresses. */
3714  gdb_assert (num_segment_bases > 0);
3715 
3716  /* If we do not have segment mappings for the object file, we
3717  can not relocate it by segments. */
3718  gdb_assert (data != NULL);
3719  gdb_assert (data->num_segments > 0);
3720 
3721  for (i = 0, sect = abfd->sections; sect != NULL; i++, sect = sect->next)
3722  {
3723  int which = data->segment_info[i];
3724 
3725  gdb_assert (0 <= which && which <= data->num_segments);
3726 
3727  /* Don't bother computing offsets for sections that aren't
3728  loaded as part of any segment. */
3729  if (! which)
3730  continue;
3731 
3732  /* Use the last SEGMENT_BASES entry as the address of any extra
3733  segments mentioned in DATA->segment_info. */
3734  if (which > num_segment_bases)
3735  which = num_segment_bases;
3736 
3737  offsets->offsets[i] = (segment_bases[which - 1]
3738  - data->segment_bases[which - 1]);
3739  }
3740 
3741  return 1;
3742 }
3743 
3744 static void
3746 {
3747  bfd *abfd = objfile->obfd;
3748  int i;
3749  asection *sect;
3750  struct symfile_segment_data *data;
3751 
3753  if (data == NULL)
3754  return;
3755 
3756  if (data->num_segments != 1 && data->num_segments != 2)
3757  {
3759  return;
3760  }
3761 
3762  for (i = 0, sect = abfd->sections; sect != NULL; i++, sect = sect->next)
3763  {
3764  int which = data->segment_info[i];
3765 
3766  if (which == 1)
3767  {
3768  if (objfile->sect_index_text == -1)
3769  objfile->sect_index_text = sect->index;
3770 
3771  if (objfile->sect_index_rodata == -1)
3772  objfile->sect_index_rodata = sect->index;
3773  }
3774  else if (which == 2)
3775  {
3776  if (objfile->sect_index_data == -1)
3777  objfile->sect_index_data = sect->index;
3778 
3779  if (objfile->sect_index_bss == -1)
3780  objfile->sect_index_bss = sect->index;
3781  }
3782  }
3783 
3785 }
3786 
3787 /* Listen for free_objfile events. */
3788 
3789 static void
3791 {
3792  /* Remove the target sections owned by this objfile. */
3793  if (objfile != NULL)
3794  remove_target_sections ((void *) objfile);
3795 }
3796 
3797 /* Wrapper around the quick_symbol_functions expand_symtabs_matching "method".
3798  Expand all symtabs that match the specified criteria.
3799  See quick_symbol_functions.expand_symtabs_matching for details. */
3800 
3801 void
3804  const lookup_name_info &lookup_name,
3807  enum search_domain kind)
3808 {
3809  struct objfile *objfile;
3810 
3812  {
3813  if (objfile->sf)
3814  objfile->sf->qf->expand_symtabs_matching (objfile, file_matcher,
3815  lookup_name,
3816  symbol_matcher,
3817  expansion_notify, kind);
3818  }
3819 }
3820 
3821 /* Wrapper around the quick_symbol_functions map_symbol_filenames "method".
3822  Map function FUN over every file.
3823  See quick_symbol_functions.map_symbol_filenames for details. */
3824 
3825 void
3827  int need_fullname)
3828 {
3829  struct objfile *objfile;
3830 
3832  {
3833  if (objfile->sf)
3834  objfile->sf->qf->map_symbol_filenames (objfile, fun, data,
3835  need_fullname);
3836  }
3837 }
3838 
3839 #if GDB_SELF_TEST
3840 
3841 namespace selftests {
3842 namespace filename_language {
3843 
3844 static void test_filename_language ()
3845 {
3846  /* This test messes up the filename_language_table global. */
3848 
3849  /* Test deducing an unknown extension. */
3850  language lang = deduce_language_from_filename ("myfile.blah");
3851  SELF_CHECK (lang == language_unknown);
3852 
3853  /* Test deducing a known extension. */
3854  lang = deduce_language_from_filename ("myfile.c");
3855  SELF_CHECK (lang == language_c);
3856 
3857  /* Test adding a new extension using the internal API. */
3859  lang = deduce_language_from_filename ("myfile.blah");
3860  SELF_CHECK (lang == language_pascal);
3861 }
3862 
3863 static void
3864 test_set_ext_lang_command ()
3865 {
3866  /* This test messes up the filename_language_table global. */
3868 
3869  /* Confirm that the .hello extension is not known. */
3870  language lang = deduce_language_from_filename ("cake.hello");
3871  SELF_CHECK (lang == language_unknown);
3872 
3873  /* Test adding a new extension using the CLI command. */
3874  gdb::unique_xmalloc_ptr<char> args_holder (xstrdup (".hello rust"));
3875  ext_args = args_holder.get ();
3876  set_ext_lang_command (NULL, 1, NULL);
3877 
3878  lang = deduce_language_from_filename ("cake.hello");
3879  SELF_CHECK (lang == language_rust);
3880 
3881  /* Test overriding an existing extension using the CLI command. */
3882  int size_before = filename_language_table.size ();
3883  args_holder.reset (xstrdup (".hello pascal"));
3884  ext_args = args_holder.get ();
3885  set_ext_lang_command (NULL, 1, NULL);
3886  int size_after = filename_language_table.size ();
3887 
3888  lang = deduce_language_from_filename ("cake.hello");
3889  SELF_CHECK (lang == language_pascal);
3890  SELF_CHECK (size_before == size_after);
3891 }
3892 
3893 } /* namespace filename_language */
3894 } /* namespace selftests */
3895 
3896 #endif /* GDB_SELF_TEST */
3897 
3898 void
3900 {
3901  struct cmd_list_element *c;
3902 
3904 
3905 #define READNOW_READNEVER_HELP \
3906  "The '-readnow' option will cause GDB to read the entire symbol file\n\
3907 immediately. This makes the command slower, but may make future operations\n\
3908 faster.\n\
3909 The '-readnever' option will prevent GDB from reading the symbol file's\n\
3910 symbolic debug information."
3911 
3912  c = add_cmd ("symbol-file", class_files, symbol_file_command, _("\
3913 Load symbol table from executable file FILE.\n\
3914 Usage: symbol-file [-readnow | -readnever] FILE\n\
3915 The `file' command can also load symbol tables, as well as setting the file\n\
3916 to execute.\n" READNOW_READNEVER_HELP), &cmdlist);
3918 
3919  c = add_cmd ("add-symbol-file", class_files, add_symbol_file_command, _("\
3920 Load symbols from FILE, assuming FILE has been dynamically loaded.\n\
3921 Usage: add-symbol-file FILE ADDR [-readnow | -readnever | \
3922 -s SECT-NAME SECT-ADDR]...\n\
3923 ADDR is the starting address of the file's text.\n\
3924 Each '-s' argument provides a section name and address, and\n\
3925 should be specified if the data and bss segments are not contiguous\n\
3926 with the text. SECT-NAME is a section name to be loaded at SECT-ADDR.\n"
3928  &cmdlist);
3930 
3931  c = add_cmd ("remove-symbol-file", class_files,
3933 Remove a symbol file added via the add-symbol-file command.\n\
3934 Usage: remove-symbol-file FILENAME\n\
3935  remove-symbol-file -a ADDRESS\n\
3936 The file to remove can be identified by its filename or by an address\n\
3937 that lies within the boundaries of this symbol file in memory."),
3938  &cmdlist);
3939 
3940  c = add_cmd ("load", class_files, load_command, _("\
3941 Dynamically load FILE into the running program, and record its symbols\n\
3942 for access from GDB.\n\
3943 Usage: load [FILE] [OFFSET]\n\
3944 An optional load OFFSET may also be given as a literal address.\n\
3945 When OFFSET is provided, FILE must also be provided. FILE can be provided\n\
3946 on its own."), &cmdlist);
3948 
3950  _("Commands for debugging overlays."), &overlaylist,
3951  "overlay ", 0, &cmdlist);
3952 
3953  add_com_alias ("ovly", "overlay", class_alias, 1);
3954  add_com_alias ("ov", "overlay", class_alias, 1);
3955 
3956  add_cmd ("map-overlay", class_support, map_overlay_command,
3957  _("Assert that an overlay section is mapped."), &overlaylist);
3958 
3959  add_cmd ("unmap-overlay", class_support, unmap_overlay_command,
3960  _("Assert that an overlay section is unmapped."), &overlaylist);
3961 
3962  add_cmd ("list-overlays", class_support, list_overlays_command,
3963  _("List mappings of overlay sections."), &overlaylist);
3964 
3966  _("Enable overlay debugging."), &overlaylist);
3968  _("Disable overlay debugging."), &overlaylist);
3970  _("Enable automatic overlay debugging."), &overlaylist);
3971  add_cmd ("load-target", class_support, overlay_load_command,
3972  _("Read the overlay mapping state from the target."), &overlaylist);
3973 
3974  /* Filename extension to source language lookup table: */
3975  add_setshow_string_noescape_cmd ("extension-language", class_files,
3976  &ext_args, _("\
3977 Set mapping between filename extension and source language."), _("\
3978 Show mapping between filename extension and source language."), _("\
3979 Usage: set extension-language .foo bar"),
3981  show_ext_args,
3982  &setlist, &showlist);
3983 
3984  add_info ("extensions", info_ext_lang_command,
3985  _("All filename extensions associated with a source language."));
3986 
3987  add_setshow_optional_filename_cmd ("debug-file-directory", class_support,
3988  &debug_file_directory, _("\
3989 Set the directories where separate debug symbols are searched for."), _("\
3990 Show the directories where separate debug symbols are searched for."), _("\
3991 Separate debug symbols are first searched for in the same\n\
3992 directory as the binary, then in the `" DEBUG_SUBDIRECTORY "' subdirectory,\n\
3993 and lastly at the path of the directory of the binary with\n\
3994 each global debug-file-directory component prepended."),
3995  NULL,
3997  &setlist, &showlist);
3998 
3999  add_setshow_enum_cmd ("symbol-loading", no_class,
4001  _("\
4002 Set printing of symbol loading messages."), _("\
4003 Show printing of symbol loading messages."), _("\
4004 off == turn all messages off\n\
4005 brief == print messages for the executable,\n\
4006  and brief messages for shared libraries\n\
4007 full == print messages for the executable,\n\
4008  and messages for each shared library."),
4009  NULL,
4010  NULL,
4012 
4013  add_setshow_boolean_cmd ("separate-debug-file", no_class,
4015 Set printing of separate debug info file search debug."), _("\
4016 Show printing of separate debug info file search debug."), _("\
4017 When on, GDB prints the searched locations while looking for separate debug \
4018 info files."), NULL, NULL, &setdebuglist, &showdebuglist);
4019 
4020 #if GDB_SELF_TEST
4022  ("filename_language", selftests::filename_language::test_filename_language);
4024  ("set_ext_lang_command",
4025  selftests::filename_language::test_set_ext_lang_command);
4026 #endif
4027 }
static void place_section(bfd *abfd, asection *sect, void *obj)
Definition: symfile.c:399
void error_no_arg(const char *why)
Definition: cli-cmds.c:185
void(* expand_symtabs_matching)(struct objfile *objfile, gdb::function_view< expand_symtabs_file_matcher_ftype > file_matcher, const lookup_name_info &lookup_name, gdb::function_view< expand_symtabs_symbol_matcher_ftype > symbol_matcher, gdb::function_view< expand_symtabs_exp_notify_ftype > expansion_notify, enum search_domain kind)
Definition: symfile.h:256
struct gdbarch * target_gdbarch(void)
Definition: gdbarch.c:5467
static void list_overlays_command(const char *args, int from_tty)
Definition: symfile.c:3221
int sect_index_text
Definition: objfiles.h:409
void objfiles_changed(void)
Definition: objfiles.c:1460
objfile_flags flags
Definition: objfiles.h:311
const char * string
Definition: signals.c:50
bfd_byte * symfile_relocate_debug_section(struct objfile *objfile, asection *sectp, bfd_byte *buf)
Definition: symfile.c:3659
char * name
Definition: symfile.h:51
void no_shared_libraries(const char *ignored, int from_tty)
Definition: solib.c:1261
char * main_name(void)
Definition: symtab.c:5568
enum language main_language(void)
Definition: symtab.c:5582
static void show_debug_file_directory(struct ui_file *file, int from_tty, struct cmd_list_element *c, const char *value)
Definition: symfile.c:1416
void reopen_exec_file(void)
Definition: corefile.c:127
struct symtab * next
Definition: symtab.h:1296
static void symfile_free_objfile(struct objfile *objfile)
Definition: symfile.c:3790
void addr_info_make_relative(struct section_addr_info *addrs, bfd *abfd)
Definition: symfile.c:547
static void map_overlay_command(const char *args, int from_tty)
Definition: symfile.c:3263
#define object_files
Definition: progspace.h:231
struct objfile * symbol_file_add(const char *name, symfile_add_flags add_flags, struct section_addr_info *addrs, objfile_flags flags)
Definition: symfile.c:1270
CORE_ADDR offsets[1]
Definition: symtab.h:1273
void enable_overlay_breakpoints(void)
Definition: breakpoint.c:7420
void objfile_set_sym_fns(struct objfile *objfile, const struct sym_fns *sf)
#define SECT_OFF_TEXT(objfile)
Definition: objfiles.h:686
bfd * obfd
Definition: objfiles.h:342
static void init_entry_point_info(struct objfile *objfile)
Definition: symfile.c:876
struct psymbol_bcache * psymbol_bcache_init(void)
Definition: psymtab.c:1663
struct observer * observer_attach_free_objfile(observer_free_objfile_ftype *f)
#define COMPUNIT_DEBUGFORMAT(cust)
Definition: symtab.h:1462
static int simple_read_overlay_table(void)
Definition: symfile.c:3471
static void read_target_long_array(CORE_ADDR, unsigned int *, int, int, enum bfd_endian)
Definition: symfile.c:3455
void(* deprecated_pre_add_symbol_hook)(const char *)
Definition: symfile.c:77
bfd_vma CORE_ADDR
Definition: common-types.h:41
void psymbol_bcache_free(struct psymbol_bcache *bcache)
Definition: psymtab.c:1674
std::string ext
Definition: symfile.c:2671
int gdb_bfd_section_index(bfd *abfd, asection *section)
Definition: gdb_bfd.c:888
void xfree(void *)
void free_all_objfiles(void)
Definition: objfiles.c:735
struct objfile * separate_debug_objfile_backlink
Definition: objfiles.h:441
filename_language(const std::string &ext_, enum language lang_)
Definition: symfile.c:2667
void symbol_file_command(const char *args, int from_tty)
Definition: symfile.c:1629
const char * section_name
Definition: symfile.c:1920
int section_is_overlay(struct obj_section *section)
Definition: symfile.c:2978
struct bfd_section * the_bfd_section
Definition: objfiles.h:126
#define BMSYMBOL_VALUE_ADDRESS(symbol)
Definition: symtab.h:691
void relative_addr_info_to_section_offsets(struct section_offsets *section_offsets, int num_sections, const struct section_addr_info *addrs)
Definition: symfile.c:464
void warning(const char *fmt,...)
Definition: errors.c:26
void expand_symtabs_matching(gdb::function_view< expand_symtabs_file_matcher_ftype > file_matcher, const lookup_name_info &lookup_name, gdb::function_view< expand_symtabs_symbol_matcher_ftype > symbol_matcher, gdb::function_view< expand_symtabs_exp_notify_ftype > expansion_notify, enum search_domain kind)
Definition: symfile.c:3803
CORE_ADDR * segment_bases
Definition: symfile.h:85
static void print_transfer_performance(struct ui_file *stream, unsigned long data_count, unsigned long write_count, std::chrono::steady_clock::duration d)
Definition: symfile.c:2151
#define obj_section_offset(s)
Definition: objfiles.h:136
int query(const char *ctlstr,...)
Definition: utils.c:1063
int objfile_has_symbols(struct objfile *objfile)
Definition: objfiles.c:1007
struct program_space * pspace
Definition: objfiles.h:315
void map_symbol_filenames(symbol_filename_ftype *fun, void *data, int need_fullname)
Definition: symfile.c:3826
enum language set_language(enum language lang)
Definition: language.c:379
static const char * print_symbol_loading
Definition: symfile.c:137
char * get_exec_file(int err)
Definition: corefile.c:167
static char * ext_args
Definition: symfile.c:2685
static void overlay_command(const char *args, int from_tty)
Definition: symfile.c:3390
struct compunit_symtab * allocate_compunit_symtab(struct objfile *objfile, const char *name)
Definition: symfile.c:2842
struct symfile_segment_data *(* sym_segments)(bfd *abfd)
Definition: symfile.h:349
struct cmd_list_element * add_info(const char *name, cmd_const_cfunc_ftype *fun, const char *doc)
Definition: cli-decode.c:886
int currently_reading_symtab
Definition: symfile.c:179
#define READNOW_READNEVER_HELP
void * memset(T *s, int c, size_t n)=delete
void clear_complaints(struct complaints **c, int less_verbose, int noisy)
Definition: complaints.c:267
scoped_restore_tmpl< int > increment_reading_symtab(void)
Definition: symfile.c:185
void add_symtab_fns(enum bfd_flavour flavour, const struct sym_fns *sf)
Definition: symfile.c:1790
#define obj_section_endaddr(s)
Definition: objfiles.h:146
static CORE_ADDR cache_ovly_table_base
Definition: symfile.c:3433
int info_verbose
Definition: top.c:1791
long mtime
Definition: objfiles.h:352
static void load_command(const char *arg, int from_tty)
Definition: symfile.c:1822
int sectindex
Definition: symfile.h:54
void add_setshow_enum_cmd(const char *name, enum command_class theclass, const char *const *enumlist, const char **var, const char *set_doc, const char *show_doc, const char *help_doc, cmd_const_sfunc_ftype *set_func, show_value_ftype *show_func, struct cmd_list_element **set_list, struct cmd_list_element **show_list)
Definition: cli-decode.c:515
void add_filename_language(const char *ext, enum language lang)
Definition: symfile.c:2680
static struct objfile * symbol_file_add_with_addrs(bfd *abfd, const char *name, symfile_add_flags add_flags, struct section_addr_info *addrs, objfile_flags flags, struct objfile *parent)
Definition: symfile.c:1118
static void simple_free_overlay_table(void)
Definition: symfile.c:3442
struct section_addr_info * build_section_addr_info_from_objfile(const struct objfile *objfile)
Definition: symfile.c:296
struct symfile_segment_data * default_symfile_segments(bfd *abfd)
Definition: symfile.c:785
struct cmd_list_element * add_cmd(const char *name, enum command_class theclass, const char *doc, struct cmd_list_element **list)
Definition: cli-decode.c:262
#define ALL_OBJSECTIONS(objfile, osect)
Definition: objfiles.h:663
enum language language_enum(const char *str)
Definition: language.c:479
void generic_load(const char *args, int from_tty)
Definition: symfile.c:2055
void set_initial_language(void)
Definition: symfile.c:1690
int readnow_symbol_files
Definition: symfile.c:83
int gdbarch_long_bit(struct gdbarch *gdbarch)
Definition: gdbarch.c:1596
bfd_size_type total_size
Definition: symfile.c:1912
void reread_symbols(void)
Definition: symfile.c:2411
const struct block * innermost_block
Definition: parse.c:71
void filename_completer(struct cmd_list_element *ignore, completion_tracker &tracker, const char *text, const char *word)
Definition: completer.c:152
int have_partial_symbols(void)
Definition: objfiles.c:1023
gdb_bfd_ref_ptr symfile_bfd_open(const char *name)
Definition: symfile.c:1719
#define ALL_OBJFILE_OSECTIONS(objfile, osect)
Definition: objfiles.h:630
static void syms_from_objfile(struct objfile *objfile, struct section_addr_info *addrs, symfile_add_flags add_flags)
Definition: symfile.c:1063
#define VEC_safe_push(T, V, O)
Definition: vec.h:276
void symbol_file_add_main(const char *args, symfile_add_flags add_flags)
Definition: symfile.c:1288
void observer_notify_executable_changed(void)
struct cmd_list_element * cmdlist
Definition: cli-cmds.c:79
struct block_symbol lookup_symbol(const char *name, const struct block *block, domain_enum domain, struct field_of_this_result *is_a_field_of_this)
Definition: symtab.c:1893
#define VEC(T)
Definition: vec.h:414
const char * filename
Definition: symtab.h:1309
char * debug_file_directory
Definition: symfile.c:1414
search_domain
Definition: symtab.h:773
char * skip_spaces(char *chp)
Definition: common-utils.c:337
static void set_ext_lang_command(const char *args, int from_tty, struct cmd_list_element *e)
Definition: symfile.c:2697
gdb_bfd_ref_ptr find_separate_debug_file_in_section(struct objfile *objfile)
Definition: minidebug.c:259
void varobj_invalidate(void)
Definition: varobj.c:2520
#define _(String)
Definition: gdb_locale.h:35
static int sections_overlap(struct obj_section *a, struct obj_section *b)
Definition: symfile.c:3092
char * original_name
Definition: objfiles.h:305
char * char_ptr
Definition: gdb_vecs.h:25
const char * name
Definition: symtab.h:1391
void regcache_write_pc(struct regcache *regcache, CORE_ADDR pc)
Definition: regcache.c:1256
void free_section_addr_info(struct section_addr_info *sap)
Definition: symfile.c:317
struct objfile_per_bfd_storage * per_bfd
Definition: objfiles.h:347
static unsigned(* cache_ovly_table)[4]
Definition: symfile.c:3431
void text(const char *string)
Definition: ui-out.c:581
struct regcache * get_current_regcache(void)
Definition: regcache.c:446
struct symbol * template_symbols
Definition: objfiles.h:457
int is_addr_in_objfile(CORE_ADDR addr, const struct objfile *objfile)
Definition: objfiles.c:1494
int gdb_bfd_crc(struct bfd *abfd, unsigned long *crc_out)
Definition: gdb_bfd.c:756
void printf_filtered(const char *format,...)
Definition: utils.c:2045
CORE_ADDR addr
Definition: symfile.h:50
void set_objfile_per_bfd(struct objfile *objfile)
Definition: objfiles.c:195
const char * paddress(struct gdbarch *gdbarch, CORE_ADDR addr)
Definition: utils.c:2745
struct obj_section * find_pc_overlay(CORE_ADDR pc)
Definition: symfile.c:3173
Definition: symfile.c:3436
gdb_byte * data
Definition: target.h:1475
unsigned long data_count
Definition: symfile.c:1911
struct cmd_list_element * add_prefix_cmd(const char *name, enum command_class theclass, cmd_const_cfunc_ftype *fun, const char *doc, struct cmd_list_element **prefixlist, const char *prefixname, int allow_unknown, struct cmd_list_element **list)
Definition: cli-decode.c:367
scoped_restore_tmpl< T > make_scoped_restore(T *var)
mach_port_t kern_return_t mach_port_t msgports mach_port_t kern_return_t pid_t pid mach_port_t kern_return_t mach_port_t task mach_port_t kern_return_t int flags
Definition: gnu-nat.c:1891
void null_cleanup(void *arg)
Definition: cleanups.c:294
#define XCNEWVEC(T, N)
Definition: poison.h:157
static void unmap_overlay_command(const char *args, int from_tty)
Definition: symfile.c:3308
struct objfile * objfile
Definition: symtab.h:1386
#define SIZEOF_N_SECTION_OFFSETS(n)
Definition: symtab.h:1283
int objfile_has_partial_symbols(struct objfile *objfile)
Definition: objfiles.c:979
struct cmd_list_element * setlist
Definition: cli-cmds.c:111
const char *const name
Definition: aarch64-tdep.c:76
static void clear_memory_write_data(void *arg)
Definition: symfile.c:2034
#define VEC_iterate(T, V, I, P)
Definition: vec.h:181
bfd_byte * default_symfile_relocate(struct objfile *objfile, asection *sectp, bfd_byte *buf)
Definition: symfile.c:3625
struct objfile * symbol_file_add_from_bfd(bfd *abfd, const char *name, symfile_add_flags add_flags, struct section_addr_info *addrs, objfile_flags flags, struct objfile *parent)
Definition: symfile.c:1257
void breakpoint_re_set(void)
Definition: breakpoint.c:13952
static void read_symbols(struct objfile *objfile, symfile_add_flags add_flags)
Definition: symfile.c:846
CORE_ADDR pc_in_mapped_range(CORE_ADDR pc, struct obj_section *section)
Definition: symfile.c:3076
LONGEST read_memory_integer(CORE_ADDR memaddr, int len, enum bfd_endian byte_order)
Definition: corefile.c:316
gdb_bfd_ref_ptr gdb_bfd_open(const char *name, const char *target, int fd)
Definition: gdb_bfd.c:383
static int separate_debug_file_exists(const char *name, unsigned long crc, struct objfile *parent_objfile)
Definition: symfile.c:1336
#define OPF_TRY_CWD_FIRST
Definition: defs.h:345
static const char * addr_section_name(const char *s)
Definition: symfile.c:495
void target_load(const char *arg, int from_tty)
Definition: target.c:426
#define DEBUG_SUBDIRECTORY
Definition: symfile.c:1426
void free_objfile_separate_debug(struct objfile *objfile)
Definition: objfiles.c:602
static void overlay_auto_command(const char *args, int from_tty)
Definition: symfile.c:3338
static int simple_overlay_update_1(struct obj_section *)
Definition: symfile.c:3523
std::unique_ptr< T, xfree_deleter< T > > unique_xmalloc_ptr
char * gnutarget
Definition: corefile.c:442
void clear_current_source_symtab_and_line(void)
Definition: source.c:232
struct target_ops current_target
CORE_ADDR gdbarch_addr_bits_remove(struct gdbarch *gdbarch, CORE_ADDR addr)
Definition: gdbarch.c:3208
objfile(bfd *, const char *, objfile_flags)
Definition: objfiles.c:373
#define exec_bfd
Definition: exec.h:33
char * gdb_sysroot
Definition: main.c:59
void fprintf_filtered(struct ui_file *stream, const char *format,...)
Definition: utils.c:2008
int openp(const char *, int, const char *, int, char **)
Definition: source.c:739
struct symfile_segment_data * get_symfile_segment_data(bfd *abfd)
Definition: symfile.c:3668
void set_cmd_completer(struct cmd_list_element *cmd, completer_ftype *completer)
Definition: cli-decode.c:160
static ULONGEST extract_unsigned_integer(const gdb_byte *addr, int len, enum bfd_endian byte_order)
Definition: defs.h:577
static void overlay_manual_command(const char *args, int from_tty)
Definition: symfile.c:3351
static void remove_symbol_file_command(const char *args, int from_tty)
Definition: symfile.c:2344
void find_lowest_section(bfd *abfd, asection *sect, void *obj)
Definition: symfile.c:202
void(* deprecated_show_load_progress)(const char *section, unsigned long section_sent, unsigned long section_size, unsigned long total_sent, unsigned long total_size)
Definition: symfile.c:72
void remove_target_sections(void *owner)
Definition: exec.c:607
static void add_symbol_file_command(const char *args, int from_tty)
Definition: symfile.c:2206
void _initialize_symfile(void)
Definition: symfile.c:3899
CORE_ADDR gdbarch_convert_from_func_ptr_addr(struct gdbarch *gdbarch, CORE_ADDR addr, struct target_ops *targ)
Definition: gdbarch.c:3191
void fprintf_unfiltered(struct ui_file *stream, const char *format,...)
Definition: utils.c:2018
static const struct sym_fns * find_sym_fns(bfd *)
Definition: symfile.c:1801
struct cmd_list_element * showlist
Definition: cli-cmds.c:119
void preserve_values(struct objfile *objfile)
Definition: value.c:2629
struct cmd_list_element * add_com_alias(const char *name, const char *oldname, enum command_class theclass, int abbrev_flag)
Definition: cli-decode.c:912
static void symbol_file_add_main_1(const char *args, symfile_add_flags add_flags, objfile_flags flags)
Definition: symfile.c:1294
void fputs_filtered(const char *linebuffer, struct ui_file *stream)
Definition: utils.c:1811
void add_separate_debug_objfile(struct objfile *objfile, struct objfile *parent)
Definition: objfiles.c:578
void puts_filtered(const char *string)
Definition: utils.c:2085
const struct sym_fns * sf
Definition: objfiles.h:381
void build_objfile_section_table(struct objfile *objfile)
Definition: objfiles.c:342
struct cmd_list_element * add_setshow_string_noescape_cmd(const char *name, enum command_class theclass, char **var, const char *set_doc, const char *show_doc, const char *help_doc, cmd_const_sfunc_ftype *set_func, show_value_ftype *show_func, struct cmd_list_element **set_list, struct cmd_list_element **show_list)
Definition: cli-decode.c:632
static const char * print_symbol_loading_enums[]
Definition: symfile.c:130
enum bfd_endian gdbarch_byte_order(struct gdbarch *gdbarch)
Definition: gdbarch.c:1509
#define current_uiout
Definition: ui-out.h:39
struct cleanup * make_cleanup(make_cleanup_ftype *function, void *arg)
Definition: cleanups.c:116
#define ANOFFSET(secoff, whichone)
Definition: symtab.h:1276
struct gdbarch * get_objfile_arch(const struct objfile *objfile)
Definition: objfiles.c:445
int sect_index_rodata
Definition: objfiles.h:412
#define TARGET_CHAR_BIT
Definition: host-defs.h:29
struct obj_section * sections
Definition: objfiles.h:423
static char * find_separate_debug_file(const char *dir, const char *canon_dir, const char *debuglink, unsigned long crc32, struct objfile *objfile)
Definition: symfile.c:1437
ovly_index
Definition: symfile.c:3434
const char * language_str(enum language lang)
Definition: language.c:502
void add_compunit_symtab_to_objfile(struct compunit_symtab *cu)
Definition: symfile.c:2874
static std::vector< filename_language > filename_language_table
Definition: symfile.c:2675
void(* sym_new_init)(struct objfile *)
Definition: symfile.h:308
CORE_ADDR load_offset
Definition: symfile.c:1902
CORE_ADDR symbol_overlayed_address(CORE_ADDR address, struct obj_section *section)
Definition: symfile.c:3143
enum language language
Definition: symtab.h:1323
struct objfile * separate_debug_objfile
Definition: objfiles.h:436
struct gdbarch * get_current_arch(void)
Definition: arch-utils.c:798
char * find_separate_debug_file_by_debuglink(struct objfile *objfile)
Definition: symfile.c:1551
int overlay_cache_invalid
Definition: symfile.c:2971
unsigned dummy
Definition: go32-nat.c:1073
symfile_add_flags symfile_flags
Definition: inferior.h:420
void(* expand_all_symtabs)(struct objfile *objfile)
Definition: symfile.h:201
struct compunit_symtab * compunit_symtabs
Definition: objfiles.h:320
struct load_progress_data * cumulative
Definition: symfile.c:1917
#define symfile_objfile
Definition: progspace.h:227
enum bfd_flavour sym_flavour
Definition: symfile.c:117
void simple_overlay_update(struct obj_section *osect)
Definition: symfile.c:3559
int gdbarch_overlay_update_p(struct gdbarch *gdbarch)
Definition: gdbarch.c:4031
struct compunit_symtab * next
Definition: symtab.h:1383
static void terminate_after_last_dir_separator(char *path)
Definition: symfile.c:1533
ULONGEST strtoulst(const char *num, const char **trailer, int base)
Definition: common-utils.c:266
struct cmd_list_element * setprintlist
Definition: cli-cmds.c:149
void(* sym_offsets)(struct objfile *, const struct section_addr_info *)
Definition: symfile.h:343
void printf_unfiltered(const char *format,...)
Definition: utils.c:2056
int section_is_mapped(struct obj_section *osect)
Definition: symfile.c:3017
struct cmd_list_element * setdebuglist
Definition: cli-cmds.c:153
int(* deprecated_ui_load_progress_hook)(const char *section, unsigned long num)
Definition: symfile.c:70
static void validate_readnow_readnever(objfile_flags flags)
Definition: symfile.c:1608
void(* sym_finish)(struct objfile *)
Definition: symfile.h:334
static void finish_new_objfile(struct objfile *objfile, symfile_add_flags add_flags)
Definition: symfile.c:1076
void read_memory(CORE_ADDR memaddr, gdb_byte *myaddr, ssize_t len)
Definition: corefile.c:258
CORE_ADDR entry_point
Definition: objfiles.h:108
struct bfd_section * the_bfd_section
Definition: target.h:2320
static void info_ext_lang_command(const char *args, int from_tty)
Definition: symfile.c:2756
void clear_displays(void)
Definition: printcmd.c:1768
const char * objfile_name(const struct objfile *objfile)
Definition: objfiles.c:1557
static void add_section_size_callback(bfd *abfd, asection *asec, void *data)
Definition: symfile.c:1893
int separate_debug_file_debug
Definition: symfile.c:1333
void * xmalloc(YYSIZE_T)
std::vector< partial_symbol * > static_psymbols
Definition: objfiles.h:373
struct symtab * last_filetab
Definition: symtab.h:1404
struct symbol * symbol
Definition: symtab.h:1136
CORE_ADDR addr
Definition: target.h:2317
const char print_symbol_loading_off[]
Definition: symfile.c:127
#define gdb_assert(expr)
Definition: gdb_assert.h:32
int get_section_index(struct objfile *objfile, const char *section_name)
Definition: symfile.c:1773
Definition: value.c:169
void wrap_here(const char *indent)
Definition: utils.c:1596
Definition: ui-out.h:77
void exec_set_section_address(const char *filename, int index, CORE_ADDR address)
Definition: exec.c:1002
void(* deprecated_post_add_symbol_hook)(void)
Definition: symfile.c:78
void clear_pc_function_cache(void)
Definition: blockframe.c:167
size_t num_sections
Definition: symfile.h:68
const char print_symbol_loading_brief[]
Definition: symfile.c:128
static int validate_download
Definition: symfile.c:1888
static void overlay_load_command(const char *args, int from_tty)
Definition: symfile.c:3373
bfd_byte gdb_byte
Definition: common-types.h:38
void exec_file_attach(const char *filename, int from_tty)
Definition: exec.c:244
unsigned initialized
Definition: objfiles.h:117
static void clear_symtab_users_cleanup(void *ignore)
Definition: symfile.c:2915
void help_list(struct cmd_list_element *list, const char *cmdtype, enum command_class theclass, struct ui_file *stream)
Definition: cli-decode.c:1071
#define XNEWVEC(T, N)
Definition: poison.h:145
#define O_BINARY
Definition: defs.h:106
void discard_cleanups(struct cleanup *old_chain)
Definition: cleanups.c:212
const struct language_defn * current_language
Definition: language.c:81
struct obj_section * find_pc_mapped_section(CORE_ADDR pc)
Definition: symfile.c:3202
static void load_section_callback(bfd *abfd, asection *asec, void *data)
Definition: symfile.c:1994
void void void void void void void void void perror_with_name(const char *string) ATTRIBUTE_NORETURN
Definition: utils.c:692
CORE_ADDR overlay_unmapped_address(CORE_ADDR pc, struct obj_section *section)
Definition: symfile.c:3107
struct symtab * filetabs
Definition: symtab.h:1397
const struct sym_fns * sym_fns
Definition: symfile.c:120
int readnever_symbol_files
Definition: symfile.c:84
#define XCNEW(T)
Definition: poison.h:121
int num_sections
Definition: objfiles.h:397
static void check(BOOL ok, const char *file, int line)
Definition: windows-nat.c:323
enum language deduce_language_from_filename(const char *filename)
Definition: symfile.c:2766
CORE_ADDR parse_and_eval_address(const char *exp)
Definition: eval.c:101
static void syms_from_objfile_1(struct objfile *objfile, struct section_addr_info *addrs, symfile_add_flags add_flags)
Definition: symfile.c:970
int check_quit_flag(void)
Definition: extension.c:828
static struct other_sections ** addrs_section_sort(struct section_addr_info *addrs)
Definition: symfile.c:526
std::vector< partial_symbol * > global_psymbols
Definition: objfiles.h:372
registered_sym_fns(bfd_flavour sym_flavour_, const struct sym_fns *sym_fns_)
Definition: symfile.c:112
static struct section_addr_info * build_section_addr_info_from_bfd(bfd *abfd)
Definition: symfile.c:272
int target_read_memory(CORE_ADDR memaddr, gdb_byte *myaddr, ssize_t len)
Definition: target.c:1370
struct complaints * symfile_complaints
Definition: complaints.c:96
struct minimal_symbol * minsym
Definition: minsyms.h:34
int gdb_bfd_count_sections(bfd *abfd)
Definition: gdb_bfd.c:906
#define obj_section_addr(s)
Definition: objfiles.h:140
static void show_ext_args(struct ui_file *file, int from_tty, struct cmd_list_element *c, const char *value)
Definition: symfile.c:2687
const struct language_defn * expected_language
Definition: language.c:87
int offset
Definition: agent.c:65
void add_setshow_boolean_cmd(const char *name, enum command_class theclass, int *var, const char *set_doc, const char *show_doc, const char *help_doc, cmd_const_sfunc_ftype *set_func, show_value_ftype *show_func, struct cmd_list_element **set_list, struct cmd_list_element **show_list)
Definition: cli-decode.c:569
struct bound_minimal_symbol lookup_bound_minimal_symbol(const char *name)
Definition: minsyms.c:430
Definition: bcache.c:57
struct objfile * next
Definition: objfiles.h:297
static std::vector< registered_sym_fns > symtab_fns
Definition: symfile.c:123
void observer_notify_new_objfile(struct objfile *objfile)
struct symtab * allocate_symtab(struct compunit_symtab *cust, const char *filename)
Definition: symfile.c:2785
struct objfile * objfile
Definition: objfiles.h:129
#define OPF_RETURN_REALPATH
Definition: defs.h:347
Definition: buffer.h:23
enum language lang
Definition: symfile.c:2672
#define VEC_free(T, V)
Definition: vec.h:196
#define qsort
Definition: ada-exp.c:2694
int print_symbol_loading_p(int from_tty, int exec, int full)
Definition: symfile.c:161
static void load_progress(ULONGEST bytes, void *untyped_arg)
Definition: symfile.c:1930
#define SYMBOL_LANGUAGE(symbol)
Definition: symtab.h:469
struct section_addr_info * build_section_addr_info_from_section_table(const struct target_section *start, const struct target_section *end)
Definition: symfile.c:240
void default_symfile_offsets(struct objfile *objfile, const struct section_addr_info *addrs)
Definition: symfile.c:695
struct compunit_symtab * compunit_symtab
Definition: symtab.h:1300
struct partial_symtab * free_psymtabs
Definition: objfiles.h:337
T * get() const
Definition: gdb_ref_ptr.h:130
int the_bfd_section_index
Definition: objfiles.h:111
static void symfile_find_segment_sections(struct objfile *objfile)
Definition: symfile.c:3745
int have_full_symbols(void)
Definition: objfiles.c:1040
unsigned long write_count
Definition: symfile.c:1910
struct cmd_list_element * showprintlist
Definition: cli-cmds.c:151
void disable_overlay_breakpoints(void)
Definition: breakpoint.c:7434
struct other_sections other[1]
Definition: symfile.h:70
gdb::def_vector< gdb_byte > byte_vector
Definition: byte-vector.h:58
struct inferior * current_inferior(void)
Definition: inferior.c:58
const struct block * expression_context_block
Definition: parse.c:69
enum overlay_debugging_state overlay_debugging
Definition: symfile.c:2970
struct program_space * current_program_space
Definition: progspace.c:35
unsigned int symtab_create_debug
Definition: symtab.c:215
Definition: symfile.c:3436
unsigned long long ULONGEST
Definition: common-types.h:53
static int ignore(struct target_ops *ops, struct gdbarch *gdbarch, struct bp_target_info *bp_tgt)
Definition: corelow.c:879
CORE_ADDR lowest
Definition: symfile.c:392
struct addrmap * psymtabs_addrmap
Definition: objfiles.h:333
language
Definition: defs.h:203
static void symfile_dummy_outputs(bfd *abfd, asection *sectp, void *dummy)
Definition: symfile.c:3616
static void overlay_invalidate_all(void)
Definition: symfile.c:2997
#define gdb_stdlog
Definition: utils.h:349
void add_setshow_optional_filename_cmd(const char *name, enum command_class theclass, char **var, const char *set_doc, const char *show_doc, const char *help_doc, cmd_const_sfunc_ftype *set_func, show_value_ftype *show_func, struct cmd_list_element **set_list, struct cmd_list_element **show_list)
Definition: cli-decode.c:654
struct cmd_list_element * showdebuglist
Definition: cli-cmds.c:155
static int addrs_section_compar(const void *ap, const void *bp)
Definition: symfile.c:509
CORE_ADDR overlay_mapped_address(CORE_ADDR pc, struct obj_section *section)
Definition: symfile.c:3125
void add_target_sections_of_objfile(struct objfile *objfile)
Definition: exec.c:561
void free_symfile_segment_data(struct symfile_segment_data *data)
Definition: symfile.c:3679
#define OBSTACK_ZALLOC(OBSTACK, TYPE)
Definition: gdb_obstack.h:27
argv
Definition: __init__.py:63
int sect_index_bss
Definition: objfiles.h:411
struct objfile * objfile
Definition: minsyms.h:39
char * fullname
Definition: symtab.h:1328
void * arg
Definition: cleanups.c:43
struct cleanup * make_cleanup_free_char_ptr_vec(VEC(char_ptr) *char_ptr_vec)
Definition: utils.c:3192
void dont_repeat(void)
Definition: top.c:695
static void init_objfile_sect_indices(struct objfile *objfile)
Definition: symfile.c:329
void reinit_frame_cache(void)
Definition: frame.c:1809
struct section_offsets * section_offsets
Definition: objfiles.h:396
void gdb_flush(struct ui_file *file)
Definition: ui-file.c:93
struct cleanup * make_cleanup_free_section_addr_info(struct section_addr_info *addrs)
Definition: utils.c:150
void terminate_minimal_symbol_table(struct objfile *objfile)
Definition: minsyms.c:1441
#define ALL_OBJFILES(obj)
Definition: objfiles.h:582
int ovly_mapped
Definition: objfiles.h:132
unsigned entry_point_p
Definition: objfiles.h:114
void(* sym_init)(struct objfile *)
Definition: symfile.h:314
const struct quick_symbol_functions * qf
Definition: symfile.h:369
int sect_index_data
Definition: objfiles.h:410
struct bound_minimal_symbol lookup_minimal_symbol(const char *name, const char *sfile, struct objfile *objf)
Definition: minsyms.c:311
CORE_ADDR * segment_sizes
Definition: symfile.h:89
CORE_ADDR pc_in_unmapped_range(CORE_ADDR pc, struct obj_section *section)
Definition: symfile.c:3053
enum bfd_endian byte_order
Definition: gdbarch.c:137
int is_target_filename(const char *name)
Definition: gdb_bfd.c:208
struct psymbol_bcache * psymbol_cache
Definition: objfiles.h:362
void clear_symtab_users(symfile_add_flags add_flags)
Definition: symfile.c:2885
void register_test(const std::string &name, selftest *test)
Definition: selftest.c:52
static struct cmd_list_element * overlaylist
Definition: symfile.c:3387
bfd_byte *(* sym_relocate)(struct objfile *, asection *sectp, bfd_byte *buf)
Definition: symfile.h:361
void error(const char *fmt,...)
Definition: errors.c:38
size_t size
Definition: go32-nat.c:242
void gdbarch_overlay_update(struct gdbarch *gdbarch, struct obj_section *osect)
Definition: gdbarch.c:4038
int symfile_map_offsets_to_segments(bfd *abfd, const struct symfile_segment_data *data, struct section_offsets *offsets, int num_segment_bases, const CORE_ADDR *segment_bases)
Definition: symfile.c:3703
overlay_debugging_state
Definition: symfile.h:478
struct objfile * require_partial_symbols(struct objfile *objfile, int verbose)
Definition: psymtab.c:75
struct load_progress_data * progress_data
Definition: symfile.c:1903
int auto_solib_add
Definition: symfile.c:149
static void overlay_off_command(const char *args, int from_tty)
Definition: symfile.c:3364
int target_write_memory_blocks(VEC(memory_write_request_s) *requests, enum flash_preserve_mode preserve_flash_p, void(*progress_cb)(ULONGEST, void *))
const char print_symbol_loading_full[]
Definition: symfile.c:129
void do_cleanups(struct cleanup *old_chain)
Definition: cleanups.c:174
struct section_offsets * offsets
Definition: symfile.c:391
#define SELF_CHECK(VALUE)
Definition: selftest.h:67
bool is_mi_like_p()
Definition: ui-out.c:622
struct partial_symtab * psymtabs
Definition: objfiles.h:326
void field_fmt(const char *fldname, const char *format,...) ATTRIBUTE_PRINTF(3
Definition: ui-out.c:557
struct section_addr_info * alloc_section_addr_info(size_t num_sections)
Definition: symfile.c:223
void(* sym_read)(struct objfile *, symfile_add_flags)
Definition: symfile.h:321
static unsigned cache_novlys
Definition: symfile.c:3432
int gdb_bfd_has_target_filename(struct bfd *abfd)
Definition: gdb_bfd.c:216
#define gdb_stdout
Definition: utils.h:340
void clear_last_displayed_sal(void)
Definition: stack.c:957
void symbol_file_clear(int from_tty)
Definition: symfile.c:1310
int rate
Definition: ser-unix.c:238
void symbol_file_add_separate(bfd *bfd, const char *name, symfile_add_flags symfile_flags, struct objfile *objfile)
Definition: symfile.c:1230
void(* map_symbol_filenames)(struct objfile *objfile, symbol_filename_ftype *fun, void *data, int need_fullname)
Definition: symfile.h:285
void() symbol_filename_ftype(const char *filename, const char *fullname, void *data)
Definition: symfile.h:100