OpenCores
URL https://opencores.org/ocsvn/openrisc_me/openrisc_me/trunk

Subversion Repositories openrisc_me

[/] [openrisc/] [trunk/] [gnu-src/] [gdb-7.2/] [gdb/] [symfile.c] - Blame information for rev 484

Go to most recent revision | Details | Compare with Previous | View Log

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

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.