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