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