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