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