41 #include "filenames.h" 47 #include "readline/readline.h" 62 #include <sys/types.h> 73 unsigned long section_sent,
74 unsigned long section_size,
75 unsigned long total_sent,
76 unsigned long total_size);
204 asection **lowest = (asection **) obj;
206 if (0 == (bfd_get_section_flags (abfd, sect) & (SEC_ALLOC | SEC_LOAD)))
210 else if (bfd_section_vma (abfd, *lowest) > bfd_section_vma (abfd, sect))
212 else if (bfd_section_vma (abfd, *lowest) == bfd_section_vma (abfd, sect)
213 && (bfd_section_size (abfd, (*lowest))
214 <= bfd_section_size (abfd, sect)))
249 for (stp = start, oidx = 0; stp != end; stp++)
252 bfd *abfd = asect->owner;
254 if (bfd_get_section_flags (abfd, asect) & (SEC_ALLOC | SEC_LOAD)
255 && oidx < end - start)
258 sap->
other[oidx].
name = xstrdup (bfd_section_name (abfd, asect));
276 struct bfd_section *sec;
279 for (i = 0, sec = abfd->sections; sec != NULL; sec = sec->next)
280 if (bfd_get_section_flags (abfd, sec) & (SEC_ALLOC | SEC_LOAD))
282 sap->
other[i].
addr = bfd_get_section_vma (abfd, sec);
283 sap->
other[i].
name = xstrdup (bfd_get_section_name (abfd, sec));
334 sect = bfd_get_section_by_name (
objfile->
obfd,
".text");
338 sect = bfd_get_section_by_name (
objfile->
obfd,
".data");
342 sect = bfd_get_section_by_name (
objfile->
obfd,
".bss");
346 sect = bfd_get_section_by_name (
objfile->
obfd,
".rodata");
407 if ((bfd_get_section_flags (abfd, sect) & SEC_ALLOC) == 0)
415 start_addr = (arg->
lowest + align - 1) & -align;
422 for (cur_sec = abfd->sections; cur_sec != NULL; cur_sec = cur_sec->next)
424 int indx = cur_sec->index;
431 if ((bfd_get_section_flags (abfd, cur_sec) & SEC_ALLOC) == 0)
441 if (start_addr + bfd_get_section_size (sect) >
offsets[indx]
442 && start_addr <
offsets[indx] + bfd_get_section_size (cur_sec))
444 start_addr =
offsets[indx] + bfd_get_section_size (cur_sec);
445 start_addr = (start_addr + align - 1) & -align;
456 arg->
lowest = start_addr + bfd_get_section_size (sect);
477 osp = &addrs->
other[i];
497 if (strcmp (s,
".dynbss") == 0)
499 if (strcmp (s,
".sdynbss") == 0)
534 array[i] = &addrs->
other[i];
549 asection *lower_sect;
561 if (lower_sect == NULL)
563 warning (
_(
"no loadable sections found in added symbol-file %s"),
564 bfd_get_filename (abfd));
568 lower_offset = bfd_section_vma (bfd_get_filename (abfd), lower_sect);
594 while (*addrs_sorted)
598 while (*abfd_addrs_sorted
603 if (*abfd_addrs_sorted
610 index_in_addrs = *addrs_sorted - addrs->
other;
611 gdb_assert (addrs_to_abfd_addrs[index_in_addrs] == NULL);
612 addrs_to_abfd_addrs[index_in_addrs] = *abfd_addrs_sorted;
651 const char *sect_name = addrs->
other[i].
name;
667 if (!(strcmp (sect_name,
".gnu.liblist") == 0
668 || strcmp (sect_name,
".gnu.conflict") == 0
669 || (strcmp (sect_name,
".bss") == 0
671 && strcmp (addrs->
other[i - 1].
name,
".dynbss") == 0
672 && addrs_to_abfd_addrs[i - 1] != NULL)
673 || (strcmp (sect_name,
".sbss") == 0
675 && strcmp (addrs->
other[i - 1].
name,
".sdynbss") == 0
676 && addrs_to_abfd_addrs[i - 1] != NULL)))
677 warning (
_(
"section %s not found in %s"), sect_name,
678 bfd_get_filename (abfd));
710 if ((bfd_get_file_flags (
objfile->
obfd) & (EXEC_P | DYNAMIC)) == 0)
716 for (cur_sec = abfd->sections; cur_sec != NULL; cur_sec = cur_sec->next)
719 if (bfd_section_vma (abfd, cur_sec) != 0)
758 for (cur_sec = abfd->sections; cur_sec != NULL;
759 cur_sec = cur_sec->next)
761 if ((bfd_get_section_flags (abfd, cur_sec) & SEC_ALLOC) == 0)
764 bfd_set_section_vma (abfd, cur_sec,
offsets[cur_sec->index]);
795 if ((bfd_get_file_flags (abfd) & (EXEC_P | DYNAMIC)) == 0)
799 for (sect = abfd->sections; sect != NULL; sect = sect->next)
801 if ((bfd_get_section_flags (abfd, sect) & SEC_ALLOC) == 0)
809 low = bfd_get_section_vma (abfd, sect);
810 high = low + bfd_get_section_size (sect);
817 num_sections = bfd_count_sections (abfd);
820 for (i = 0, sect = abfd->sections; sect != NULL; i++, sect = sect->next)
824 if ((bfd_get_section_flags (abfd, sect) & SEC_ALLOC) == 0)
827 vma = bfd_get_section_vma (abfd, sect);
830 if (vma + bfd_get_section_size (sect) > high)
831 high = vma + bfd_get_section_size (sect);
894 else if (bfd_get_file_flags (
objfile->
obfd) & DYNAMIC
932 if (entry_point >= bfd_get_section_vma (
objfile->
obfd, sect)
933 && entry_point < (bfd_get_section_vma (
objfile->
obfd, sect)
934 + bfd_get_section_size (sect)))
972 symfile_add_flags add_flags)
998 std::unique_ptr<struct objfile> objfile_holder (
objfile);
1054 objfile_holder.release ();
1065 symfile_add_flags add_flags)
1119 symfile_add_flags add_flags,
1148 && !
query (
_(
"Load new symbol table from \"%s\"? "),
name))
1149 error (
_(
"Not confirmed."));
1222 bfd_cache_close_all ();
1231 symfile_add_flags symfile_flags,
1244 (bfd,
name, symfile_flags, sap,
1258 symfile_add_flags add_flags,
1295 objfile_flags
flags)
1315 ? !
query (
_(
"Discard symbol table from `%s'? "),
1317 : !
query (
_(
"Discard symbol table? "))))
1318 error (
_(
"Not confirmed."));
1337 struct objfile *parent_objfile)
1339 unsigned long file_crc;
1341 struct stat parent_stat, abfd_stat;
1342 int verified_as_different;
1372 if (bfd_stat (abfd.
get (), &abfd_stat) == 0
1373 && abfd_stat.st_ino != 0
1374 && bfd_stat (parent_objfile->
obfd, &parent_stat) == 0)
1376 if (abfd_stat.st_dev == parent_stat.st_dev
1377 && abfd_stat.st_ino == parent_stat.st_ino)
1379 verified_as_different = 1;
1382 verified_as_different = 0;
1389 if (crc != file_crc)
1391 unsigned long parent_crc;
1397 if (!verified_as_different)
1403 if (verified_as_different || parent_crc != file_crc)
1404 warning (
_(
"the debug information found in \"%s\"" 1405 " does not match \"%s\" (CRC mismatch).\n"),
1420 _(
"The directory where separate debug " 1421 "symbols are searched for is \"%s\".\n"),
1425 #if ! defined (DEBUG_SUBDIRECTORY) 1426 #define DEBUG_SUBDIRECTORY ".debug" 1438 const char *canon_dir,
1439 const char *debuglink,
1455 if (canon_dir != NULL && strlen (canon_dir) > i)
1456 i = strlen (canon_dir);
1463 + strlen (debuglink)
1467 strcpy (debugfile, dir);
1468 strcat (debugfile, debuglink);
1474 strcpy (debugfile, dir);
1476 strcat (debugfile,
"/");
1477 strcat (debugfile, debuglink);
1492 strcpy (debugfile, debugdir);
1493 strcat (debugfile,
"/");
1494 strcat (debugfile, dir);
1495 strcat (debugfile, debuglink);
1505 if (canon_dir != NULL
1508 && IS_DIR_SEPARATOR (canon_dir[strlen (
gdb_sysroot)]))
1510 strcpy (debugfile, debugdir);
1511 strcat (debugfile, canon_dir + strlen (
gdb_sysroot));
1512 strcat (debugfile,
"/");
1513 strcat (debugfile, debuglink);
1539 for (i = strlen(path) - 1; i >= 0; i--)
1540 if (IS_DIR_SEPARATOR (path[i]))
1554 unsigned long crc32;
1557 (bfd_get_debug_link_info (
objfile->
obfd, &crc32));
1559 if (debuglink == NULL)
1571 debuglink.get (), crc32,
objfile);
1573 if (debugfile == NULL)
1581 && S_ISLNK (st_buf.st_mode))
1585 if (symlink_dir != NULL)
1588 if (dir != symlink_dir.get ())
1611 error (
_(
"-readnow and -readnever cannot be used simultaneously"));
1640 symfile_add_flags add_flags = 0;
1642 bool stop_processing_options =
false;
1650 for (arg = built_argv[0], idx = 0; arg != NULL; arg = built_argv[++idx])
1652 if (stop_processing_options || *arg !=
'-')
1657 error (
_(
"Unrecognized argument \"%s\""), arg);
1659 else if (strcmp (arg,
"-readnow") == 0)
1661 else if (strcmp (arg,
"-readnever") == 0)
1663 else if (strcmp (arg,
"--") == 0)
1664 stop_processing_options =
true;
1666 error (
_(
"Unrecognized argument \"%s\""), arg);
1670 error (
_(
"no symbol file name was specified"));
1726 char *absolute_name;
1731 desc =
openp (getenv (
"PATH"),
1733 expanded_name.get (), O_RDONLY |
O_BINARY, &absolute_name);
1734 #if defined(__GO32__) || defined(_WIN32) || defined (__CYGWIN__) 1737 char *exename = (
char *) alloca (strlen (expanded_name.get ()) + 5);
1739 strcat (strcpy (exename, expanded_name.get ()),
".exe");
1740 desc =
openp (getenv (
"PATH"),
1742 exename, O_RDONLY |
O_BINARY, &absolute_name);
1749 name = absolute_name;
1753 if (sym_bfd == NULL)
1754 error (
_(
"`%s': can't open to read symbols: %s."),
name,
1755 bfd_errmsg (bfd_get_error ()));
1758 bfd_set_cacheable (sym_bfd.
get (), 1);
1760 if (!bfd_check_format (sym_bfd.
get (), bfd_object))
1761 error (
_(
"`%s': can't read symbols: %s."),
name,
1762 bfd_errmsg (bfd_get_error ()));
1775 asection *sect = bfd_get_section_by_name (
objfile->
obfd, section_name);
1803 enum bfd_flavour our_flavour = bfd_get_flavour (abfd);
1805 if (our_flavour == bfd_target_srec_flavour
1806 || our_flavour == bfd_target_ihex_flavour
1807 || our_flavour == bfd_target_tekhex_flavour)
1811 if (our_flavour == rsf.sym_flavour)
1814 error (
_(
"I'm sorry, Dave, I can't do that. Symbol format `%s' unknown."),
1815 bfd_get_target (abfd));
1841 while ((parg = strpbrk (parg,
"\\\"'\t ")))
1850 char *temp = (
char *)
xmalloc (strlen (
arg) + count + 1 );
1857 while ((parg = strpbrk (parg,
"\\\"'\t ")))
1859 strncpy (ptemp, prev, parg - prev);
1860 ptemp += parg - prev;
1864 strcpy (ptemp, prev);
1895 bfd_size_type *sum = (bfd_size_type *) data;
1897 *sum += bfd_get_section_size (asec);
1947 current_uiout->message (
"Loading section %s, size %s lma %s\n",
1966 error (
_(
"Download verify read failed at %s"),
1968 if (memcmp (args->
buffer,
check.data (), bytes) != 0)
1969 error (
_(
"Download verify compare failed at %s"),
1981 error (
_(
"Canceled the download"));
1999 bfd_size_type
size = bfd_get_section_size (asec);
2001 const char *sect_name = bfd_get_section_name (abfd, asec);
2003 if ((bfd_get_section_flags (abfd, asec) & SEC_LOAD) == 0)
2010 args->requests, NULL);
2017 new_request->
baton = section_data;
2024 section_data->
lma = new_request->
begin;
2027 bfd_get_section_contents (abfd, asec,
buffer, 0,
size);
2050 unsigned long data_count,
2051 unsigned long write_count,
2052 std::chrono::steady_clock::duration d);
2064 memset (&cbdata, 0,
sizeof (cbdata));
2065 memset (&total_progress, 0,
sizeof (total_progress));
2077 if (
argv[1] != NULL)
2085 if (
argv[1] == endptr)
2086 error (
_(
"Invalid download offset:%s."),
argv[1]);
2088 if (
argv[2] != NULL)
2089 error (
_(
"Too many parameters."));
2094 if (loadfile_bfd == NULL)
2097 if (!bfd_check_format (loadfile_bfd.
get (), bfd_object))
2099 error (
_(
"\"%s\" is not an object file: %s"), filename.get (),
2100 bfd_errmsg (bfd_get_error ()));
2110 steady_clock::time_point start_time = steady_clock::now ();
2114 error (
_(
"Load failed"));
2116 steady_clock::time_point end_time = steady_clock::now ();
2118 entry = bfd_get_start_address (loadfile_bfd.
get ());
2120 uiout->
text (
"Start address ");
2122 uiout->
text (
", load size ");
2139 end_time - start_time);
2152 unsigned long data_count,
2153 unsigned long write_count,
2154 std::chrono::steady_clock::duration time)
2159 milliseconds ms = duration_cast<milliseconds> (time);
2161 uiout->
text (
"Transfer rate: ");
2162 if (ms.count () > 0)
2164 unsigned long rate = ((
ULONGEST) data_count * 1000) / ms.count ();
2169 uiout->
text (
" bits/sec");
2171 else if (
rate < 1024)
2174 uiout->
text (
" bytes/sec");
2179 uiout->
text (
" KB/sec");
2184 uiout->
field_fmt (
"transferred-bits",
"%lu", (data_count * 8));
2185 uiout->
text (
" bits in <1 sec");
2187 if (write_count > 0)
2190 uiout->
field_fmt (
"write-rate",
"%lu", data_count / write_count);
2191 uiout->
text (
" bytes/write");
2193 uiout->
text (
".\n");
2215 symfile_add_flags add_flags = 0;
2227 std::vector<sect_opt> sect_opts = { {
".text", NULL } };
2228 bool stop_processing_options =
false;
2234 error (
_(
"add-symbol-file takes a file name and an address"));
2236 bool seen_addr =
false;
2241 if (stop_processing_options || *
arg !=
'-')
2243 if (filename == NULL)
2246 filename.reset (tilde_expand (
arg));
2248 else if (!seen_addr)
2252 sect_opts[0].value =
arg;
2256 error (
_(
"Unrecognized argument \"%s\""),
arg);
2258 else if (strcmp (
arg,
"-readnow") == 0)
2260 else if (strcmp (
arg,
"-readnever") == 0)
2262 else if (strcmp (
arg,
"-s") == 0)
2264 if (
argv[argcnt + 1] == NULL)
2265 error (
_(
"Missing section name after \"-s\""));
2266 else if (
argv[argcnt + 2] == NULL)
2267 error (
_(
"Missing section address after \"-s\""));
2269 sect_opt sect = {
argv[argcnt + 1],
argv[argcnt + 2] };
2271 sect_opts.push_back (sect);
2274 else if (strcmp (
arg,
"--") == 0)
2275 stop_processing_options =
true;
2277 error (
_(
"Unrecognized argument \"%s\""),
arg);
2280 if (filename == NULL)
2281 error (
_(
"You must provide a filename to be loaded."));
2290 error (
_(
"The address where %s has been loaded is missing"),
2303 for (sect_opt § : sect_opts)
2306 const char *val = sect.value;
2307 const char *sec = sect.name;
2313 section_addrs->other[sec_num].name = (
char *) sec;
2314 section_addrs->other[sec_num].addr = addr;
2325 section_addrs->num_sections = sec_num;
2327 if (from_tty && (!
query (
"%s",
"")))
2328 error (
_(
"Not confirmed."));
2352 error (
_(
"remove-symbol-file: no symbol file provided"));
2356 if (strcmp (
argv[0],
"-a") == 0)
2361 if (
argv[1] == NULL)
2362 error (
_(
"Missing address argument"));
2364 if (
argv[2] != NULL)
2377 else if (
argv[0] != NULL)
2381 if (
argv[1] != NULL)
2390 && objf->
pspace == pspace
2391 && filename_cmp (filename.get (),
objfile_name (objf)) == 0)
2397 error (
_(
"No symbol file found"));
2400 && !
query (
_(
"Remove symbol table from file \"%s\"? "),
2402 error (
_(
"Not confirmed."));
2415 struct stat new_statbuf;
2417 std::vector<struct objfile *> new_objfiles;
2439 res = stat (
objfile->
obfd->my_archive->filename, &new_statbuf);
2449 new_modtime = new_statbuf.st_mtime;
2455 char *original_name;
2470 std::unique_ptr<struct objfile> objfile_holder (
objfile);
2476 && filename_cmp (bfd_get_filename (
objfile->
obfd),
2510 char *obfd_filename;
2518 error (
_(
"Can't open %s to read symbols."), obfd_filename);
2525 if (!bfd_check_format (
objfile->
obfd, bfd_object))
2527 bfd_errmsg (bfd_get_error ()));
2569 strlen (original_name));
2635 objfile_holder.release ();
2644 new_objfiles.push_back (
objfile);
2648 if (!new_objfiles.empty ())
2655 for (
auto iter : new_objfiles)
2691 _(
"Mapping between filename extension " 2692 "and source language is \"%s\".\n"),
2705 error (
_(
"'%s': Filename extension must begin with '.'"),
ext_args);
2708 while (*cp && !isspace (*cp))
2712 error (
_(
"'%s': two arguments required -- " 2713 "filename extension and language"),
2723 error (
_(
"'%s': two arguments required -- " 2724 "filename extension and language"),
2758 printf_filtered (
_(
"Filename extensions and the languages they represent:"));
2770 if (filename != NULL)
2771 if ((cp = strrchr (filename,
'.')) != NULL)
2774 if (entry.ext == cp)
2803 static char *last_objfile_name = NULL;
2805 if (last_objfile_name == NULL
2808 xfree (last_objfile_name);
2811 "Creating one or more symtabs for objfile %s ...\n",
2815 "Created symtab %s for module %s.\n",
2846 const char *saved_name;
2853 saved_name = lbasename (
name);
2856 strlen (saved_name));
2863 "Created compunit symtab %s for %s.\n",
2984 if (bfd_section_lma (abfd, bfd_section) != 0
2985 && bfd_section_lma (abfd, bfd_section)
2986 != bfd_section_vma (abfd, bfd_section))
3061 bfd_vma
size = bfd_get_section_size (bfd_section);
3064 if (bfd_get_section_lma (abfd, bfd_section) +
offset <= pc
3065 && pc < bfd_get_section_lma (abfd, bfd_section) +
offset +
size)
3099 return (a_start < b_end && b_start < a_end);
3113 return pc + bfd_section_lma (abfd, bfd_section)
3114 - bfd_section_vma (abfd, bfd_section);
3131 return pc + bfd_section_vma (abfd, bfd_section)
3132 - bfd_section_lma (abfd, bfd_section);
3269 error (
_(
"Overlay debugging not enabled. Use " 3270 "either the 'overlay auto' or\n" 3271 "the 'overlay manual' command."));
3273 if (args == 0 || *args == 0)
3274 error (
_(
"Argument required: name of an overlay section"));
3300 error (
_(
"No overlay section called %s"), args);
3314 error (
_(
"Overlay debugging not enabled. " 3315 "Use either the 'overlay auto' or\n" 3316 "the 'overlay manual' command."));
3318 if (args == 0 || *args == 0)
3319 error (
_(
"Argument required: name of an overlay section"));
3326 error (
_(
"Section %s is not mapped"), args);
3330 error (
_(
"No overlay section called %s"), args);
3380 error (
_(
"This target does not know how to read its overlay state."));
3393 (
"\"overlay\" must be followed by the name of an overlay command.\n");
3456 int len,
int size,
enum bfd_endian byte_order)
3463 for (i = 0; i < len; i++)
3481 if (! novlys_msym.
minsym)
3483 error (
_(
"Error reading inferior's overlay table: " 3484 "couldn't find `_novlys' variable\n" 3485 "in inferior. Use `overlay manual' mode."));
3490 if (! ovly_table_msym.
minsym)
3492 error (
_(
"Error reading inferior's overlay table: couldn't find " 3493 "`_ovly_table' array\n" 3494 "in inferior. Use `overlay manual' mode."));
3573 if (
minsym.minsym == NULL)
3574 error (
_(
"Error reading inferior's overlay table: couldn't " 3575 "find `_ovly_table' array\n" 3576 "in inferior. Use `overlay manual' mode."));
3618 sectp->output_section = sectp;
3619 sectp->output_offset = 0;
3630 bfd *abfd = sectp->owner;
3634 if ((sectp->flags & SEC_RELOC) == 0)
3641 return bfd_simple_get_relocated_section_contents (abfd, sectp, buf, NULL);
3660 asection *sectp, bfd_byte *buf)
3706 int num_segment_bases,
3721 for (i = 0, sect = abfd->sections; sect != NULL; i++, sect = sect->next)
3725 gdb_assert (0 <= which && which <= data->num_segments);
3734 if (which > num_segment_bases)
3735 which = num_segment_bases;
3737 offsets->
offsets[i] = (segment_bases[which - 1]
3762 for (i = 0, sect = abfd->sections; sect != NULL; i++, sect = sect->next)
3774 else if (which == 2)
3817 expansion_notify, kind);
3844 static void test_filename_language ()
3864 test_set_ext_lang_command ()
3883 args_holder.reset (xstrdup (
".hello pascal"));
3905 #define READNOW_READNEVER_HELP \ 3906 "The '-readnow' option will cause GDB to read the entire symbol file\n\ 3907 immediately. This makes the command slower, but may make future operations\n\ 3909 The '-readnever' option will prevent GDB from reading the symbol file's\n\ 3910 symbolic debug information." 3913 Load symbol table from executable file FILE.\n\ 3914 Usage: symbol-file [-readnow | -readnever] FILE\n\ 3915 The `file' command can also load symbol tables, as well as setting the file\n\ 3920 Load symbols from FILE, assuming FILE has been dynamically loaded.\n\ 3921 Usage: add-symbol-file FILE ADDR [-readnow | -readnever | \ 3922 -s SECT-NAME SECT-ADDR]...\n\ 3923 ADDR is the starting address of the file's text.\n\ 3924 Each '-s' argument provides a section name and address, and\n\ 3925 should be specified if the data and bss segments are not contiguous\n\ 3926 with the text. SECT-NAME is a section name to be loaded at SECT-ADDR.\n" 3933 Remove a symbol file added via the add-symbol-file command.\n\ 3934 Usage: remove-symbol-file FILENAME\n\ 3935 remove-symbol-file -a ADDRESS\n\ 3936 The file to remove can be identified by its filename or by an address\n\ 3937 that lies within the boundaries of this symbol file in memory."),
3941 Dynamically load FILE into the running program, and record its symbols\n\ 3942 for access from GDB.\n\ 3943 Usage: load [FILE] [OFFSET]\n\ 3944 An optional load OFFSET may also be given as a literal address.\n\ 3945 When OFFSET is provided, FILE must also be provided. FILE can be provided\n\ 3957 _(
"Assert that an overlay section is mapped."), &
overlaylist);
3960 _(
"Assert that an overlay section is unmapped."), &
overlaylist);
3963 _(
"List mappings of overlay sections."), &
overlaylist);
3970 _(
"Enable automatic overlay debugging."), &
overlaylist);
3972 _(
"Read the overlay mapping state from the target."), &
overlaylist);
3977 Set mapping between filename extension and source language."),
_(
"\ 3978 Show mapping between filename extension and source language."),
_(
"\ 3979 Usage: set extension-language .foo bar"),
3985 _(
"All filename extensions associated with a source language."));
3989 Set the directories where separate debug symbols are searched for."),
_(
"\ 3990 Show the directories where separate debug symbols are searched for."),
_(
"\ 3991 Separate debug symbols are first searched for in the same\n\ 3993 and lastly at the path of the directory of the binary with\n\ 3994 each global debug-file-directory component prepended."),
4002 Set printing of symbol loading messages."),
_(
"\ 4003 Show printing of symbol loading messages."),
_(
"\ 4004 off == turn all messages off\n\ 4005 brief == print messages for the executable,\n\ 4006 and brief messages for shared libraries\n\ 4007 full == print messages for the executable,\n\ 4008 and messages for each shared library."),
4015 Set printing of separate debug info file search debug."),
_(
"\ 4016 Show printing of separate debug info file search debug."),
_(
"\ 4017 When on, GDB prints the searched locations while looking for separate debug \ 4022 (
"filename_language", selftests::filename_language::test_filename_language);
4024 (
"set_ext_lang_command",
4025 selftests::filename_language::test_set_ext_lang_command);
static void place_section(bfd *abfd, asection *sect, void *obj)
void error_no_arg(const char *why)
void(* expand_symtabs_matching)(struct objfile *objfile, gdb::function_view< expand_symtabs_file_matcher_ftype > file_matcher, const lookup_name_info &lookup_name, gdb::function_view< expand_symtabs_symbol_matcher_ftype > symbol_matcher, gdb::function_view< expand_symtabs_exp_notify_ftype > expansion_notify, enum search_domain kind)
struct gdbarch * target_gdbarch(void)
static void list_overlays_command(const char *args, int from_tty)
void objfiles_changed(void)
bfd_byte * symfile_relocate_debug_section(struct objfile *objfile, asection *sectp, bfd_byte *buf)
void no_shared_libraries(const char *ignored, int from_tty)
char * hex_string(LONGEST num)
enum language main_language(void)
static void show_debug_file_directory(struct ui_file *file, int from_tty, struct cmd_list_element *c, const char *value)
void reopen_exec_file(void)
static void symfile_free_objfile(struct objfile *objfile)
void addr_info_make_relative(struct section_addr_info *addrs, bfd *abfd)
static void map_overlay_command(const char *args, int from_tty)
struct objfile * symbol_file_add(const char *name, symfile_add_flags add_flags, struct section_addr_info *addrs, objfile_flags flags)
void enable_overlay_breakpoints(void)
void objfile_set_sym_fns(struct objfile *objfile, const struct sym_fns *sf)
#define SECT_OFF_TEXT(objfile)
static void init_entry_point_info(struct objfile *objfile)
struct psymbol_bcache * psymbol_bcache_init(void)
struct observer * observer_attach_free_objfile(observer_free_objfile_ftype *f)
#define COMPUNIT_DEBUGFORMAT(cust)
static int simple_read_overlay_table(void)
static void read_target_long_array(CORE_ADDR, unsigned int *, int, int, enum bfd_endian)
void(* deprecated_pre_add_symbol_hook)(const char *)
void psymbol_bcache_free(struct psymbol_bcache *bcache)
int gdb_bfd_section_index(bfd *abfd, asection *section)
void free_all_objfiles(void)
struct objfile * separate_debug_objfile_backlink
filename_language(const std::string &ext_, enum language lang_)
void symbol_file_command(const char *args, int from_tty)
const char * section_name
int section_is_overlay(struct obj_section *section)
struct bfd_section * the_bfd_section
#define BMSYMBOL_VALUE_ADDRESS(symbol)
void relative_addr_info_to_section_offsets(struct section_offsets *section_offsets, int num_sections, const struct section_addr_info *addrs)
void warning(const char *fmt,...)
void expand_symtabs_matching(gdb::function_view< expand_symtabs_file_matcher_ftype > file_matcher, const lookup_name_info &lookup_name, gdb::function_view< expand_symtabs_symbol_matcher_ftype > symbol_matcher, gdb::function_view< expand_symtabs_exp_notify_ftype > expansion_notify, enum search_domain kind)
CORE_ADDR * segment_bases
static void print_transfer_performance(struct ui_file *stream, unsigned long data_count, unsigned long write_count, std::chrono::steady_clock::duration d)
#define obj_section_offset(s)
int query(const char *ctlstr,...)
int objfile_has_symbols(struct objfile *objfile)
struct program_space * pspace
void map_symbol_filenames(symbol_filename_ftype *fun, void *data, int need_fullname)
enum language set_language(enum language lang)
static const char * print_symbol_loading
char * get_exec_file(int err)
static void overlay_command(const char *args, int from_tty)
struct compunit_symtab * allocate_compunit_symtab(struct objfile *objfile, const char *name)
struct symfile_segment_data *(* sym_segments)(bfd *abfd)
struct cmd_list_element * add_info(const char *name, cmd_const_cfunc_ftype *fun, const char *doc)
int currently_reading_symtab
#define READNOW_READNEVER_HELP
void * memset(T *s, int c, size_t n)=delete
void clear_complaints(struct complaints **c, int less_verbose, int noisy)
scoped_restore_tmpl< int > increment_reading_symtab(void)
void add_symtab_fns(enum bfd_flavour flavour, const struct sym_fns *sf)
#define obj_section_endaddr(s)
static CORE_ADDR cache_ovly_table_base
static void load_command(const char *arg, int from_tty)
void add_setshow_enum_cmd(const char *name, enum command_class theclass, const char *const *enumlist, const char **var, const char *set_doc, const char *show_doc, const char *help_doc, cmd_const_sfunc_ftype *set_func, show_value_ftype *show_func, struct cmd_list_element **set_list, struct cmd_list_element **show_list)
void add_filename_language(const char *ext, enum language lang)
static struct objfile * symbol_file_add_with_addrs(bfd *abfd, const char *name, symfile_add_flags add_flags, struct section_addr_info *addrs, objfile_flags flags, struct objfile *parent)
static void simple_free_overlay_table(void)
struct section_addr_info * build_section_addr_info_from_objfile(const struct objfile *objfile)
struct symfile_segment_data * default_symfile_segments(bfd *abfd)
struct cmd_list_element * add_cmd(const char *name, enum command_class theclass, const char *doc, struct cmd_list_element **list)
#define ALL_OBJSECTIONS(objfile, osect)
enum language language_enum(const char *str)
void generic_load(const char *args, int from_tty)
void set_initial_language(void)
int gdbarch_long_bit(struct gdbarch *gdbarch)
void reread_symbols(void)
const struct block * innermost_block
void filename_completer(struct cmd_list_element *ignore, completion_tracker &tracker, const char *text, const char *word)
int have_partial_symbols(void)
gdb_bfd_ref_ptr symfile_bfd_open(const char *name)
#define ALL_OBJFILE_OSECTIONS(objfile, osect)
static void syms_from_objfile(struct objfile *objfile, struct section_addr_info *addrs, symfile_add_flags add_flags)
#define VEC_safe_push(T, V, O)
void symbol_file_add_main(const char *args, symfile_add_flags add_flags)
void observer_notify_executable_changed(void)
struct cmd_list_element * cmdlist
struct block_symbol lookup_symbol(const char *name, const struct block *block, domain_enum domain, struct field_of_this_result *is_a_field_of_this)
char * debug_file_directory
char * skip_spaces(char *chp)
static void set_ext_lang_command(const char *args, int from_tty, struct cmd_list_element *e)
gdb_bfd_ref_ptr find_separate_debug_file_in_section(struct objfile *objfile)
void varobj_invalidate(void)
static int sections_overlap(struct obj_section *a, struct obj_section *b)
void regcache_write_pc(struct regcache *regcache, CORE_ADDR pc)
void free_section_addr_info(struct section_addr_info *sap)
struct objfile_per_bfd_storage * per_bfd
static unsigned(* cache_ovly_table)[4]
void text(const char *string)
struct regcache * get_current_regcache(void)
struct symbol * template_symbols
int is_addr_in_objfile(CORE_ADDR addr, const struct objfile *objfile)
int gdb_bfd_crc(struct bfd *abfd, unsigned long *crc_out)
void printf_filtered(const char *format,...)
void set_objfile_per_bfd(struct objfile *objfile)
const char * paddress(struct gdbarch *gdbarch, CORE_ADDR addr)
#define host_address_to_string(ADDR)
struct obj_section * find_pc_overlay(CORE_ADDR pc)
struct cmd_list_element * add_prefix_cmd(const char *name, enum command_class theclass, cmd_const_cfunc_ftype *fun, const char *doc, struct cmd_list_element **prefixlist, const char *prefixname, int allow_unknown, struct cmd_list_element **list)
scoped_restore_tmpl< T > make_scoped_restore(T *var)
mach_port_t kern_return_t mach_port_t msgports mach_port_t kern_return_t pid_t pid mach_port_t kern_return_t mach_port_t task mach_port_t kern_return_t int flags
void null_cleanup(void *arg)
static void unmap_overlay_command(const char *args, int from_tty)
#define SIZEOF_N_SECTION_OFFSETS(n)
int objfile_has_partial_symbols(struct objfile *objfile)
struct cmd_list_element * setlist
static void clear_memory_write_data(void *arg)
#define VEC_iterate(T, V, I, P)
bfd_byte * default_symfile_relocate(struct objfile *objfile, asection *sectp, bfd_byte *buf)
struct objfile * symbol_file_add_from_bfd(bfd *abfd, const char *name, symfile_add_flags add_flags, struct section_addr_info *addrs, objfile_flags flags, struct objfile *parent)
void breakpoint_re_set(void)
static void read_symbols(struct objfile *objfile, symfile_add_flags add_flags)
CORE_ADDR pc_in_mapped_range(CORE_ADDR pc, struct obj_section *section)
LONGEST read_memory_integer(CORE_ADDR memaddr, int len, enum bfd_endian byte_order)
gdb_bfd_ref_ptr gdb_bfd_open(const char *name, const char *target, int fd)
static int separate_debug_file_exists(const char *name, unsigned long crc, struct objfile *parent_objfile)
#define OPF_TRY_CWD_FIRST
static const char * addr_section_name(const char *s)
void target_load(const char *arg, int from_tty)
#define DEBUG_SUBDIRECTORY
void free_objfile_separate_debug(struct objfile *objfile)
static void overlay_auto_command(const char *args, int from_tty)
static int simple_overlay_update_1(struct obj_section *)
std::unique_ptr< T, xfree_deleter< T > > unique_xmalloc_ptr
void clear_current_source_symtab_and_line(void)
struct target_ops current_target
CORE_ADDR gdbarch_addr_bits_remove(struct gdbarch *gdbarch, CORE_ADDR addr)
objfile(bfd *, const char *, objfile_flags)
void fprintf_filtered(struct ui_file *stream, const char *format,...)
int openp(const char *, int, const char *, int, char **)
struct symfile_segment_data * get_symfile_segment_data(bfd *abfd)
void set_cmd_completer(struct cmd_list_element *cmd, completer_ftype *completer)
static ULONGEST extract_unsigned_integer(const gdb_byte *addr, int len, enum bfd_endian byte_order)
static void overlay_manual_command(const char *args, int from_tty)
static void remove_symbol_file_command(const char *args, int from_tty)
void find_lowest_section(bfd *abfd, asection *sect, void *obj)
void(* deprecated_show_load_progress)(const char *section, unsigned long section_sent, unsigned long section_size, unsigned long total_sent, unsigned long total_size)
void remove_target_sections(void *owner)
static void add_symbol_file_command(const char *args, int from_tty)
void _initialize_symfile(void)
CORE_ADDR gdbarch_convert_from_func_ptr_addr(struct gdbarch *gdbarch, CORE_ADDR addr, struct target_ops *targ)
void fprintf_unfiltered(struct ui_file *stream, const char *format,...)
static const struct sym_fns * find_sym_fns(bfd *)
struct cmd_list_element * showlist
void preserve_values(struct objfile *objfile)
struct cmd_list_element * add_com_alias(const char *name, const char *oldname, enum command_class theclass, int abbrev_flag)
static void symbol_file_add_main_1(const char *args, symfile_add_flags add_flags, objfile_flags flags)
void fputs_filtered(const char *linebuffer, struct ui_file *stream)
void add_separate_debug_objfile(struct objfile *objfile, struct objfile *parent)
void puts_filtered(const char *string)
const struct sym_fns * sf
void build_objfile_section_table(struct objfile *objfile)
struct cmd_list_element * add_setshow_string_noescape_cmd(const char *name, enum command_class theclass, char **var, const char *set_doc, const char *show_doc, const char *help_doc, cmd_const_sfunc_ftype *set_func, show_value_ftype *show_func, struct cmd_list_element **set_list, struct cmd_list_element **show_list)
static const char * print_symbol_loading_enums[]
enum bfd_endian gdbarch_byte_order(struct gdbarch *gdbarch)
struct cleanup * make_cleanup(make_cleanup_ftype *function, void *arg)
#define ANOFFSET(secoff, whichone)
struct gdbarch * get_objfile_arch(const struct objfile *objfile)
struct obj_section * sections
static char * find_separate_debug_file(const char *dir, const char *canon_dir, const char *debuglink, unsigned long crc32, struct objfile *objfile)
const char * language_str(enum language lang)
void add_compunit_symtab_to_objfile(struct compunit_symtab *cu)
static std::vector< filename_language > filename_language_table
void(* sym_new_init)(struct objfile *)
CORE_ADDR symbol_overlayed_address(CORE_ADDR address, struct obj_section *section)
struct objfile * separate_debug_objfile
struct gdbarch * get_current_arch(void)
char * find_separate_debug_file_by_debuglink(struct objfile *objfile)
int overlay_cache_invalid
symfile_add_flags symfile_flags
void(* expand_all_symtabs)(struct objfile *objfile)
struct compunit_symtab * compunit_symtabs
struct load_progress_data * cumulative
enum bfd_flavour sym_flavour
void simple_overlay_update(struct obj_section *osect)
int gdbarch_overlay_update_p(struct gdbarch *gdbarch)
struct compunit_symtab * next
static void terminate_after_last_dir_separator(char *path)
ULONGEST strtoulst(const char *num, const char **trailer, int base)
struct cmd_list_element * setprintlist
void(* sym_offsets)(struct objfile *, const struct section_addr_info *)
void printf_unfiltered(const char *format,...)
int section_is_mapped(struct obj_section *osect)
struct cmd_list_element * setdebuglist
int(* deprecated_ui_load_progress_hook)(const char *section, unsigned long num)
static void validate_readnow_readnever(objfile_flags flags)
void(* sym_finish)(struct objfile *)
static void finish_new_objfile(struct objfile *objfile, symfile_add_flags add_flags)
void read_memory(CORE_ADDR memaddr, gdb_byte *myaddr, ssize_t len)
struct bfd_section * the_bfd_section
static void info_ext_lang_command(const char *args, int from_tty)
void clear_displays(void)
const char * objfile_name(const struct objfile *objfile)
static void add_section_size_callback(bfd *abfd, asection *asec, void *data)
int separate_debug_file_debug
std::vector< partial_symbol * > static_psymbols
struct symtab * last_filetab
const char print_symbol_loading_off[]
int get_section_index(struct objfile *objfile, const char *section_name)
void wrap_here(const char *indent)
void exec_set_section_address(const char *filename, int index, CORE_ADDR address)
void(* deprecated_post_add_symbol_hook)(void)
void clear_pc_function_cache(void)
const char print_symbol_loading_brief[]
static int validate_download
static void overlay_load_command(const char *args, int from_tty)
void exec_file_attach(const char *filename, int from_tty)
static void clear_symtab_users_cleanup(void *ignore)
void help_list(struct cmd_list_element *list, const char *cmdtype, enum command_class theclass, struct ui_file *stream)
void discard_cleanups(struct cleanup *old_chain)
const struct language_defn * current_language
struct obj_section * find_pc_mapped_section(CORE_ADDR pc)
static void load_section_callback(bfd *abfd, asection *asec, void *data)
void void void void void void void void void perror_with_name(const char *string) ATTRIBUTE_NORETURN
CORE_ADDR overlay_unmapped_address(CORE_ADDR pc, struct obj_section *section)
const struct sym_fns * sym_fns
int readnever_symbol_files
static void check(BOOL ok, const char *file, int line)
enum language deduce_language_from_filename(const char *filename)
CORE_ADDR parse_and_eval_address(const char *exp)
static void syms_from_objfile_1(struct objfile *objfile, struct section_addr_info *addrs, symfile_add_flags add_flags)
int check_quit_flag(void)
static struct other_sections ** addrs_section_sort(struct section_addr_info *addrs)
std::vector< partial_symbol * > global_psymbols
registered_sym_fns(bfd_flavour sym_flavour_, const struct sym_fns *sym_fns_)
static struct section_addr_info * build_section_addr_info_from_bfd(bfd *abfd)
int target_read_memory(CORE_ADDR memaddr, gdb_byte *myaddr, ssize_t len)
struct complaints * symfile_complaints
struct minimal_symbol * minsym
int gdb_bfd_count_sections(bfd *abfd)
#define obj_section_addr(s)
static void show_ext_args(struct ui_file *file, int from_tty, struct cmd_list_element *c, const char *value)
const struct language_defn * expected_language
void add_setshow_boolean_cmd(const char *name, enum command_class theclass, int *var, const char *set_doc, const char *show_doc, const char *help_doc, cmd_const_sfunc_ftype *set_func, show_value_ftype *show_func, struct cmd_list_element **set_list, struct cmd_list_element **show_list)
struct bound_minimal_symbol lookup_bound_minimal_symbol(const char *name)
static std::vector< registered_sym_fns > symtab_fns
void observer_notify_new_objfile(struct objfile *objfile)
struct symtab * allocate_symtab(struct compunit_symtab *cust, const char *filename)
#define OPF_RETURN_REALPATH
int print_symbol_loading_p(int from_tty, int exec, int full)
static void load_progress(ULONGEST bytes, void *untyped_arg)
#define SYMBOL_LANGUAGE(symbol)
struct section_addr_info * build_section_addr_info_from_section_table(const struct target_section *start, const struct target_section *end)
void default_symfile_offsets(struct objfile *objfile, const struct section_addr_info *addrs)
struct compunit_symtab * compunit_symtab
struct partial_symtab * free_psymtabs
int the_bfd_section_index
static void symfile_find_segment_sections(struct objfile *objfile)
int have_full_symbols(void)
unsigned long write_count
struct cmd_list_element * showprintlist
void disable_overlay_breakpoints(void)
struct other_sections other[1]
gdb::def_vector< gdb_byte > byte_vector
struct inferior * current_inferior(void)
const struct block * expression_context_block
enum overlay_debugging_state overlay_debugging
struct program_space * current_program_space
unsigned int symtab_create_debug
unsigned long long ULONGEST
static int ignore(struct target_ops *ops, struct gdbarch *gdbarch, struct bp_target_info *bp_tgt)
struct addrmap * psymtabs_addrmap
static void symfile_dummy_outputs(bfd *abfd, asection *sectp, void *dummy)
static void overlay_invalidate_all(void)
void add_setshow_optional_filename_cmd(const char *name, enum command_class theclass, char **var, const char *set_doc, const char *show_doc, const char *help_doc, cmd_const_sfunc_ftype *set_func, show_value_ftype *show_func, struct cmd_list_element **set_list, struct cmd_list_element **show_list)
struct cmd_list_element * showdebuglist
static int addrs_section_compar(const void *ap, const void *bp)
CORE_ADDR overlay_mapped_address(CORE_ADDR pc, struct obj_section *section)
void add_target_sections_of_objfile(struct objfile *objfile)
void free_symfile_segment_data(struct symfile_segment_data *data)
#define OBSTACK_ZALLOC(OBSTACK, TYPE)
struct cleanup * make_cleanup_free_char_ptr_vec(VEC(char_ptr) *char_ptr_vec)
static void init_objfile_sect_indices(struct objfile *objfile)
void reinit_frame_cache(void)
struct section_offsets * section_offsets
void gdb_flush(struct ui_file *file)
struct cleanup * make_cleanup_free_section_addr_info(struct section_addr_info *addrs)
void terminate_minimal_symbol_table(struct objfile *objfile)
#define ALL_OBJFILES(obj)
void(* sym_init)(struct objfile *)
const struct quick_symbol_functions * qf
struct bound_minimal_symbol lookup_minimal_symbol(const char *name, const char *sfile, struct objfile *objf)
CORE_ADDR * segment_sizes
CORE_ADDR pc_in_unmapped_range(CORE_ADDR pc, struct obj_section *section)
enum bfd_endian byte_order
int is_target_filename(const char *name)
struct psymbol_bcache * psymbol_cache
void clear_symtab_users(symfile_add_flags add_flags)
void register_test(const std::string &name, selftest *test)
static struct cmd_list_element * overlaylist
bfd_byte *(* sym_relocate)(struct objfile *, asection *sectp, bfd_byte *buf)
void error(const char *fmt,...)
void gdbarch_overlay_update(struct gdbarch *gdbarch, struct obj_section *osect)
int symfile_map_offsets_to_segments(bfd *abfd, const struct symfile_segment_data *data, struct section_offsets *offsets, int num_segment_bases, const CORE_ADDR *segment_bases)
struct objfile * require_partial_symbols(struct objfile *objfile, int verbose)
struct load_progress_data * progress_data
static void overlay_off_command(const char *args, int from_tty)
int target_write_memory_blocks(VEC(memory_write_request_s) *requests, enum flash_preserve_mode preserve_flash_p, void(*progress_cb)(ULONGEST, void *))
const char print_symbol_loading_full[]
void do_cleanups(struct cleanup *old_chain)
struct section_offsets * offsets
#define SELF_CHECK(VALUE)
struct partial_symtab * psymtabs
void field_fmt(const char *fldname, const char *format,...) ATTRIBUTE_PRINTF(3
struct section_addr_info * alloc_section_addr_info(size_t num_sections)
void(* sym_read)(struct objfile *, symfile_add_flags)
static unsigned cache_novlys
int gdb_bfd_has_target_filename(struct bfd *abfd)
void clear_last_displayed_sal(void)
void symbol_file_clear(int from_tty)
void symbol_file_add_separate(bfd *bfd, const char *name, symfile_add_flags symfile_flags, struct objfile *objfile)
void(* map_symbol_filenames)(struct objfile *objfile, symbol_filename_ftype *fun, void *data, int need_fullname)
void() symbol_filename_ftype(const char *filename, const char *fullname, void *data)