Move gdb_bfd_errmsg to gdb_bfd.c

gdb_bfd.c contains most of gdb's BFD-related utility functions.
However, gdb_bfd_errmsg is in utils.c.  It seemed better to me to move
this out of util.[ch] and into the BFD-related file instead.

Tested by rebuilding.
This commit is contained in:
Tom Tromey
2021-12-21 16:24:16 -07:00
parent b6a08665ff
commit 34b965f7c0
4 changed files with 37 additions and 35 deletions

View File

@ -1059,6 +1059,36 @@ gdb_bfd_get_full_section_contents (bfd *abfd, asection *section,
section_size);
}
#define AMBIGUOUS_MESS1 ".\nMatching formats:"
#define AMBIGUOUS_MESS2 \
".\nUse \"set gnutarget format-name\" to specify the format."
/* See gdb_bfd.h. */
std::string
gdb_bfd_errmsg (bfd_error_type error_tag, char **matching)
{
char **p;
/* Check if errmsg just need simple return. */
if (error_tag != bfd_error_file_ambiguously_recognized || matching == NULL)
return bfd_errmsg (error_tag);
std::string ret (bfd_errmsg (error_tag));
ret += AMBIGUOUS_MESS1;
for (p = matching; *p; p++)
{
ret += " ";
ret += *p;
}
ret += AMBIGUOUS_MESS2;
xfree (matching);
return ret;
}
/* A callback for htab_traverse that prints a single BFD. */
static int

View File

@ -223,4 +223,11 @@ gdb_bfd_sections (const gdb_bfd_ref_ptr &abfd)
return gdb_bfd_section_range (abfd->sections);
};
/* A wrapper for bfd_errmsg to produce a more helpful error message
in the case of bfd_error_file_ambiguously recognized.
MATCHING, if non-NULL, is the corresponding argument to
bfd_check_format_matches, and will be freed. */
extern std::string gdb_bfd_errmsg (bfd_error_type error_tag, char **matching);
#endif /* GDB_BFD_H */

View File

@ -3026,34 +3026,6 @@ gdb_argv::reset (const char *s)
m_argv = argv;
}
#define AMBIGUOUS_MESS1 ".\nMatching formats:"
#define AMBIGUOUS_MESS2 \
".\nUse \"set gnutarget format-name\" to specify the format."
std::string
gdb_bfd_errmsg (bfd_error_type error_tag, char **matching)
{
char **p;
/* Check if errmsg just need simple return. */
if (error_tag != bfd_error_file_ambiguously_recognized || matching == NULL)
return bfd_errmsg (error_tag);
std::string ret (bfd_errmsg (error_tag));
ret += AMBIGUOUS_MESS1;
for (p = matching; *p; p++)
{
ret += " ";
ret += *p;
}
ret += AMBIGUOUS_MESS2;
xfree (matching);
return ret;
}
/* Return ARGS parsed as a valid pid, or throw an error. */
int

View File

@ -109,13 +109,6 @@ compare_cstrings (const char *str1, const char *str2)
return strcmp (str1, str2) < 0;
}
/* A wrapper for bfd_errmsg to produce a more helpful error message
in the case of bfd_error_file_ambiguously recognized.
MATCHING, if non-NULL, is the corresponding argument to
bfd_check_format_matches, and will be freed. */
extern std::string gdb_bfd_errmsg (bfd_error_type error_tag, char **matching);
/* Reset the prompt_for_continue clock. */
void reset_prompt_for_continue_wait_time (void);
/* Return the time spent in prompt_for_continue. */