From: Doug Evans <dje@google.com>
To: Hui Zhu <teawater@gmail.com>
Cc: Joel Brobecker <brobecker@adacore.com>,
Jan Kratochvil <jan.kratochvil@redhat.com>,
gdb-patches ml <gdb-patches@sourceware.org>,
Tristan Gingold <gingold@adacore.com>,
Daniel Jacobowitz <dan@codesourcery.com>
Subject: Re: [RFA] Show some tips when file cmd get bfd_error_file_ambiguously_recognized
Date: Thu, 04 Feb 2010 17:38:00 -0000 [thread overview]
Message-ID: <e394668d1002040938i71f1637ava075b3230bf7fc9@mail.gmail.com> (raw)
In-Reply-To: <daef60381002032309w578c3346yb47d6ab118bcd429@mail.gmail.com>
On Wed, Feb 3, 2010 at 11:09 PM, Hui Zhu <teawater@gmail.com> wrote:
> Ping.
Righto. Sorry!
> Thanks,
> Hui
>
> On Fri, Jan 29, 2010 at 17:05, Hui Zhu <teawater@gmail.com> wrote:
>> Thanks guys. I make a new patch according to your mails.
>>
>> And about the xrealloc, I don't know what I was thinking when I use
>> it. It is really bad, ugly and wasted me a lot of time. :(
>>
>> Please help me review the new patch. Thanks.
The patch is fine with me with two nits noted below.
No need to resubmit, you can just check it in with the requested changes.
>>
>> Best regards,
>> Hui
>>
>> 2010-01-29 Hui Zhu <teawater@gmail.com>
>>
>> * defs.h (gdb_bfd_errmsg): New extern.
>> * exec.c (exec_file_attach): Change bfd_errmsg to
>> gdb_bfd_errmsg.
>> * utils.c (AMBIGUOUS_MESS1): New macro.
>> (AMBIGUOUS_MESS2): New macro.
>> (gdb_bfd_errmsg): New function.
>>
>> ---
>> defs.h | 8 ++++++++
>> exec.c | 6 ++++--
>> utils.c | 40 ++++++++++++++++++++++++++++++++++++++++
>> 3 files changed, 52 insertions(+), 2 deletions(-)
>>
>> --- a/defs.h
>> +++ b/defs.h
>> @@ -419,6 +419,13 @@ char **gdb_buildargv (const char *);
>>
>> int compare_positive_ints (const void *ap, const void *bp);
>>
>> +/* 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 const char *gdb_bfd_errmsg (bfd_error_type error_tag, char **matching);
>> +
>> /* From demangle.c */
>>
>> extern void set_demangling_style (char *);
>> @@ -1226,4 +1233,5 @@ void dummy_obstack_deallocate (void *obj
>> extern void initialize_progspace (void);
>> extern void initialize_inferiors (void);
>>
>> +
>> #endif /* #ifndef DEFS_H */
(1) Please remove the added blank line.
>> --- a/exec.c
>> +++ b/exec.c
>> @@ -219,6 +219,7 @@ exec_file_attach (char *filename, int fr
>> char *scratch_pathname;
>> int scratch_chan;
>> struct target_section *sections = NULL, *sections_end = NULL;
>> + char **matching;
>>
>> scratch_chan = openp (getenv ("PATH"), OPF_TRY_CWD_FIRST, filename,
>> write_files ? O_RDWR | O_BINARY : O_RDONLY | O_BINARY,
>> @@ -253,13 +254,14 @@ exec_file_attach (char *filename, int fr
>> scratch_pathname = xstrdup (scratch_pathname);
>> cleanups = make_cleanup (xfree, scratch_pathname);
>>
>> - if (!bfd_check_format (exec_bfd, bfd_object))
>> + if (!bfd_check_format_matches (exec_bfd, bfd_object, &matching))
>> {
>> /* Make sure to close exec_bfd, or else "run" might try to use
>> it. */
>> exec_close ();
>> error (_("\"%s\": not in executable format: %s"),
>> - scratch_pathname, bfd_errmsg (bfd_get_error ()));
>> + scratch_pathname,
>> + gdb_bfd_errmsg (bfd_get_error (), matching));
>> }
>>
>> /* FIXME - This should only be run for RS6000, but the ifdef is a poor
>> --- a/utils.c
>> +++ b/utils.c
>> @@ -3608,6 +3608,46 @@ compare_positive_ints (const void *ap, c
>> return * (int *) ap - * (int *) bp;
>> }
>>
>> +#define AMBIGUOUS_MESS1 ".\nMatching formats:"
>> +#define AMBIGUOUS_MESS2 ".\nUse \"set gnutarget format-name\" specify the format."
(2) Grammar nit.
s,format-name\" specify,format-name\" to specify,
[insert "to" before "specify"]
>> +
>> +const char *
>> +gdb_bfd_errmsg (bfd_error_type error_tag, char **matching)
>> +{
>> + char *ret, *retp;
>> + int ret_len;
>> + char **p;
>> +
>> + /* Check if errmsg just need simple return. */
>> + if (error_tag != bfd_error_file_ambiguously_recognized || matching == NULL)
>> + return bfd_errmsg (error_tag);
>> +
>> + ret_len = strlen (bfd_errmsg (error_tag)) + strlen (AMBIGUOUS_MESS1)
>> + + strlen (AMBIGUOUS_MESS2);
>> + for (p = matching; *p; p++)
>> + ret_len += strlen (*p) + 1;
>> + ret = xmalloc (ret_len + 1);
>> + retp = ret;
>> + make_cleanup (xfree, ret);
>> +
>> + strcpy (retp, bfd_errmsg (error_tag));
>> + retp += strlen (retp);
>> +
>> + strcpy (retp, AMBIGUOUS_MESS1);
>> + retp += strlen (retp);
>> +
>> + for (p = matching; *p; p++)
>> + {
>> + sprintf (retp, " %s", *p);
>> + retp += strlen (retp);
>> + }
>> + xfree (matching);
>> +
>> + strcpy (retp, AMBIGUOUS_MESS2);
>> +
>> + return ret;
>> +}
>> +
>> /* Provide a prototype to silence -Wmissing-prototypes. */
>> extern initialize_file_ftype _initialize_utils;
>>
>
next prev parent reply other threads:[~2010-02-04 17:38 UTC|newest]
Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-01-14 2:44 Hui Zhu
2010-01-14 10:15 ` Jan Kratochvil
2010-01-19 7:01 ` Hui Zhu
2010-01-19 7:57 ` Jan Kratochvil
2010-01-19 8:08 ` Hui Zhu
2010-01-26 8:01 ` Hui Zhu
2010-01-26 21:04 ` Doug Evans
2010-01-27 9:01 ` Hui Zhu
2010-01-28 18:18 ` Doug Evans
2010-01-28 21:56 ` Jan Kratochvil
2010-01-28 21:59 ` Doug Evans
2010-01-29 3:51 ` Joel Brobecker
2010-01-29 9:06 ` Hui Zhu
2010-02-04 7:09 ` Hui Zhu
2010-02-04 17:38 ` Doug Evans [this message]
2010-02-05 2:44 ` Hui Zhu
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=e394668d1002040938i71f1637ava075b3230bf7fc9@mail.gmail.com \
--to=dje@google.com \
--cc=brobecker@adacore.com \
--cc=dan@codesourcery.com \
--cc=gdb-patches@sourceware.org \
--cc=gingold@adacore.com \
--cc=jan.kratochvil@redhat.com \
--cc=teawater@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox