From: Joel Brobecker <brobecker@adacore.com>
To: Pierre Muller <muller@ics.u-strasbg.fr>
Cc: gdb-patches@sourceware.org
Subject: Re: [RFA] Handle GPC specific name for main function
Date: Fri, 05 Oct 2007 18:16:00 -0000 [thread overview]
Message-ID: <20071005181620.GB3570@adacore.com> (raw)
In-Reply-To: <001701c805a0$1da99b60$58fcd220$@u-strasbg.fr>
Hi Pierre,
> 2007-10-03 Pierre Muller <muller@ics.u-strasbg.fr>
>
> * p-lang.h (pascal_main_name): New function.
> p-lang.c (GPC_P_INITIALIZE, GPC_MAIN_PROGRAM_NAME_1),
> (GPC_MAIN_PROGRAM_NAME_2): New char array constants
> corresponding to the three minimal symbols used
> by GPC compiler.
> (pascal_main_name): Try to find minimal symbol
> corresponding to the entry of GPC compiled programs.
> symtab.c: New include p-lang.h.
> (find_main_name): Try to find pascal specific main name
> by calling pascal_main_name.
> * Makefile.in (symtab.o): Add dependency on p-lang header.
This is mostly OK. I feel like I am being a perfectionist on you,
and I apologize, but I think I might have missed something that
feels wrong somehow: You're having to cast your global static const
char into (char *) inside pascal_main_name. I can tell from the code
that everything will be fine, but perhaps we could do better. What
do others think of this cast?
static const char GPC_MAIN_PROGRAM_NAME_1[]
= "_p__M0_main_program";
char *
pascal_main_name (void)
{
[...]
return (char *) GPC_MAIN_PROGRAM_NAME_1[];
}
One way I can see to avoid having to do the cast is to return
the SYMBOL_LINKAGE_NAME of the msym we found. Something like this:
char *
pascal_main_name (void)
{
struct minimal_symbol *msym;
msym = lookup_minimal_symbol (GPC_P_INITIALIZE, NULL, NULL);
/* If '_p_initialize' was not found,
the program doesn't seem to be compiled with GPC.
Thus default name "main" should work. */
if (msym == NULL)
return NULL;
msym = lookup_minimal_symbol (GPC_MAIN_PROGRAM_NAME_1, NULL, NULL);
if (msym == NULL)
msym = lookup_minimal_symbol (GPC_MAIN_PROGRAM_NAME_2, NULL, NULL);
if (msym != NULL)
return SYMBOL_LINKAGE_NAME (msym);
return NULL;
}
This is only a small detail, and I can't see anything wrong happening
with your patch, so I suggest you go ahead and commit the change, and
we can adjust it if others also feel the same way.
Just one adjustment:
> +/* No known entry procedure found, use default 'main' name.
> + According to Waldek Hebish, this should not happen for any GPC version
> + after June 2000 and up to 2007-09-27. */
This comment assumes that the main program is actually always written
in Pascal. But this is not true. This function will also be called for
programs written in any other language. I suggest:
/* No known entry procedure found. The main program is probably
not written in Pascal. */
The rest of the patch is great!
Thank you,
--
Joel
next prev parent reply other threads:[~2007-10-05 18:16 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-10-03 9:31 Pierre Muller
2007-10-05 18:16 ` Joel Brobecker [this message]
2007-10-06 7:24 ` Eli Zaretskii
2007-10-07 7:17 ` Joel Brobecker
2007-10-07 19:25 ` Eli Zaretskii
2007-10-08 6:35 ` Joel Brobecker
2007-10-08 7:35 ` Pierre Muller
2007-10-08 15:14 ` Joel Brobecker
2007-10-08 15:43 ` [RFA-2] " Pierre Muller
2007-10-08 15:45 ` Pierre Muller
2007-10-08 17:24 ` Joel Brobecker
2007-10-08 18:45 ` Joel Brobecker
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=20071005181620.GB3570@adacore.com \
--to=brobecker@adacore.com \
--cc=gdb-patches@sourceware.org \
--cc=muller@ics.u-strasbg.fr \
/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