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