mirror of
https://github.com/espressif/binutils-gdb.git
synced 2025-06-20 01:50:24 +08:00
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:
@ -1059,6 +1059,36 @@ gdb_bfd_get_full_section_contents (bfd *abfd, asection *section,
|
|||||||
section_size);
|
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. */
|
/* A callback for htab_traverse that prints a single BFD. */
|
||||||
|
|
||||||
static int
|
static int
|
||||||
|
@ -223,4 +223,11 @@ gdb_bfd_sections (const gdb_bfd_ref_ptr &abfd)
|
|||||||
return gdb_bfd_section_range (abfd->sections);
|
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 */
|
#endif /* GDB_BFD_H */
|
||||||
|
28
gdb/utils.c
28
gdb/utils.c
@ -3026,34 +3026,6 @@ gdb_argv::reset (const char *s)
|
|||||||
m_argv = argv;
|
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. */
|
/* Return ARGS parsed as a valid pid, or throw an error. */
|
||||||
|
|
||||||
int
|
int
|
||||||
|
@ -109,13 +109,6 @@ compare_cstrings (const char *str1, const char *str2)
|
|||||||
return strcmp (str1, str2) < 0;
|
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. */
|
/* Reset the prompt_for_continue clock. */
|
||||||
void reset_prompt_for_continue_wait_time (void);
|
void reset_prompt_for_continue_wait_time (void);
|
||||||
/* Return the time spent in prompt_for_continue. */
|
/* Return the time spent in prompt_for_continue. */
|
||||||
|
Reference in New Issue
Block a user