From: Joel Brobecker <brobecker@adacore.com>
To: Pierre Muller <pierre.muller@ics-cnrs.unistra.fr>,
Tom Tromey <tromey@redhat.com>
Cc: 'Pedro Alves' <palves@redhat.com>, 'Eli Zaretskii' <eliz@gnu.org>,
gdb-patches@sourceware.org
Subject: Re: [RFC-v4] Fix .text section offset for windows DLL (was Calling __stdcall functions in the inferior)
Date: Mon, 26 Nov 2012 17:22:00 -0000 [thread overview]
Message-ID: <20121126172227.GB3089@adacore.com> (raw)
In-Reply-To: <009801cdcb5f$38ecd830$aac68890$@muller@ics-cnrs.unistra.fr>
> I used alloca here... And tried to use if for the qualified_name
> too, but that turned out to be a bad idea...
>
> The name was apparently still accessed after the function returned,
> despite the fact that the symbol_name is copied... (This is probably
> in the hash table, but I didn't completely understand how that
> works...)
I think you might have unearthed a bug, here. This is the code you
propose:
+ qualified_name = xstrprintf ("%s!%s", dll_name, sym_name);
+ prim_record_minimal_symbol (qualified_name, vma, msymtype, objfile);
Following the code:
prim_record_minimal_symbol
-> prim_record_minimal_symbol_full with copy_name=1
-> SYMBOL_SET_NAMES (msymbol, name, name_len, copy_name, objfile);
And symbol_set_names does:
| else
| {
| lookup_len = len;
| lookup_name = linkage_name;
| linkage_name_copy = linkage_name;
| }
|
| entry.mangled = (char *) lookup_name;
| slot = ((struct demangled_name_entry **)
| htab_find_slot (objfile->demangled_names_hash,
| &entry, INSERT));
Does it looks like a reference to the string might actually
get inserted in the htab if not found, thus defeating the
mechanism above? Tom might be better suited to answer that
question more authoritatively.
In the meantime, one approach that might be equally suitable, but
without the bug, is if allocate the name on the objfile obstack,
and then call prim_record_minimal_symbol_full directly (I am
assuming that objfile can never be null, which seems to be the
case by my reading of your patch).
> > Are we missing a cleanup/xfree?
>
> I added some, please check that part, as I have no experience at all
> with using make_cleanup related functions... In particular, I didn't
> really get if it is OK to call do_cleanups with a possibly NULL
> argument...
It seems like you're going to have to make some other changes to
address the crash that was reported, and Pedro sent you a link to
the documentation. So I'll wait for that version before reviewing.
Hope that's OK.
> > > + section_data[PE_SECTION_INDEX_DATA].section_name = ".data";
> > > + section_data[PE_SECTION_INDEX_BSS].ms_type = mst_bss;
> > > + section_data[PE_SECTION_INDEX_BSS].section_name = ".bss";
> >
> > Also, I think it makes it harder to determine what the contents of the
> > table is. I suggest you go back to the static definition above, but
> > updated with the extra field.
>
> Sorry, but here my C knowledge is not sufficent:
> section_data is now a pointer allocated on heap,
> how can I reconcile this with the old static definition?
I cannot remember what I was thinking (or inhaling) at the time.
Probably something good (thinking or inhaling), but now gone.
Suggestion withdrawn...
> > Can you make prim_record_minimal_symbol sym_name parameter a "const",
> > and then declare...
>
> I hope you meant changing add_pe_exported_sym only...
> I don't want to touch prim_record_minimal_symbol function which is also
> used in other C sources...
>
> I removed the null_char by handling NULL also in add_pe_exportd_sym
> instead of only supporting a pointer to '\0'.
Yes, I meant add_pe_exported_sym, nowing that the only potential issue
was with the call to prim_record_minimal_symbol - but not an issue
since the name parameter is already a const.
Your solution is good, although making the sym_name parameter a const
is also an improvement.
--
Joel
next prev parent reply other threads:[~2012-11-26 17:22 UTC|newest]
Thread overview: 59+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <83a9vs89r9.fsf@gnu.org>
[not found] ` <201210120953.q9C9rqfu020865@glazunov.sibelius.xs4all.nl>
[not found] ` <834nm07z0s.fsf@gnu.org>
[not found] ` <5077FEB9.4030304@redhat.com>
[not found] ` <83y5jb7rfe.fsf@gnu.org>
2012-10-15 13:36 ` [RFC] " Pierre Muller
2012-10-24 19:45 ` Joel Brobecker
2012-10-25 12:21 ` Pierre Muller
2012-11-05 17:11 ` Joel Brobecker
2012-11-06 14:31 ` [RFC-v2] " Pierre Muller
[not found] ` <50991f5f.8382440a.1100.ffff82abSMTPIN_ADDED@mx.google.com>
2012-11-07 19:44 ` Pedro Alves
2012-11-08 9:54 ` [RFC-v3] " Pierre Muller
2012-11-22 17:30 ` Joel Brobecker
2012-11-22 17:51 ` Pedro Alves
2012-11-25 22:50 ` [RFC-v4] " Pierre Muller
2012-11-26 17:22 ` Joel Brobecker [this message]
2012-11-26 18:36 ` Tom Tromey
2012-11-26 20:58 ` Joel Brobecker
[not found] ` <15690.5992342674$1353883881@news.gmane.org>
2012-11-26 4:04 ` asmwarrior
2012-11-26 10:14 ` Pierre Muller
[not found] ` <50b340fb.0aec440a.1c48.5818SMTPIN_ADDED_BROKEN@mx.google.com>
2012-11-26 11:39 ` Pedro Alves
2012-11-26 16:54 ` Tom Tromey
2012-11-27 14:59 ` [RFC-v5] " Pierre Muller
2012-12-07 7:10 ` Joel Brobecker
2012-12-07 15:23 ` asmwarrior
2012-12-07 15:41 ` Pierre Muller
[not found] ` <29545.4593528577$1354894901@news.gmane.org>
2012-12-07 16:15 ` asmwarrior
2012-12-07 16:27 ` Pierre Muller
[not found] ` <50c21914.a750420a.2ec3.ffffe4ffSMTPIN_ADDED_BROKEN@mx.google.com>
2012-12-07 17:10 ` Pedro Alves
2012-12-07 17:49 ` Pedro Alves
2012-12-13 10:57 ` Pierre Muller
2012-12-13 11:07 ` Pedro Alves
2012-12-13 11:49 ` Pedro Alves
[not found] ` <00a201cdd931$b0ee13f0$12ca3bd0$@muller@ics-cnrs.unistra.fr>
2012-12-13 14:32 ` Pedro Alves
2012-12-13 15:17 ` Pierre Muller
2012-12-13 14:33 ` Pedro Alves
2012-12-13 14:56 ` Pierre Muller
2012-12-13 15:03 ` Pedro Alves
2012-12-13 16:43 ` Pedro Alves
2012-12-13 16:54 ` Pierre Muller
2012-12-13 16:56 ` Pedro Alves
2012-12-13 17:09 ` Pierre Muller
2012-12-13 15:08 ` Pierre Muller
2012-12-13 16:04 ` Pedro Alves
[not found] ` <50c218e5.2850b40a.0281.ffffbef4SMTPIN_ADDED_BROKEN@mx.google.com>
2012-12-08 14:17 ` asmwarrior
2012-12-08 15:07 ` asmwarrior
2012-12-08 18:01 ` Pierre Muller
[not found] ` <50c38058.03d0d80a.31dd.4e28SMTPIN_ADDED_BROKEN@mx.google.com>
2012-12-09 2:45 ` asmwarrior
2012-12-09 12:45 ` Pierre Muller
[not found] ` <50c487f8.a813b40a.57d7.ffffdc7fSMTPIN_ADDED_BROKEN@mx.google.com>
2012-12-09 13:19 ` asmwarrior
2012-12-13 10:48 ` Pierre Muller
[not found] ` <37373.4003318988$1355395714@news.gmane.org>
2012-12-13 16:16 ` Tom Tromey
2012-12-13 16:21 ` Pierre Muller
[not found] ` <12936.6976012991$1355415704@news.gmane.org>
2012-12-13 20:05 ` Tom Tromey
[not found] ` <42721.1671988063$1354028360@news.gmane.org>
2012-11-28 2:44 ` asmwarrior
2012-11-29 3:40 ` asmwarrior
2012-12-12 0:59 ` asmwarrior
[not found] ` <50b2a0d1.c849420a.3a3a.3538SMTPIN_ADDED_BROKEN@mx.google.com>
2012-12-07 16:38 ` [RFC-v4] " Pedro Alves
2012-12-07 17:03 ` Pierre Muller
2012-12-07 17:50 ` Pedro Alves
[not found] ` <000301cdbd96$f5cd9f10$e168dd30$%muller@ics-cnrs.unistra.fr>
2012-11-17 10:01 ` [RFC-v3] " Eli Zaretskii
[not found] ` <006001cdaada$00c81f00$02585d00$%muller@ics-cnrs.unistra.fr>
2012-10-15 17:23 ` [RFC] " Eli Zaretskii
2012-11-03 10:36 ` Eli Zaretskii
2012-11-06 13:55 ` Pierre Muller
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=20121126172227.GB3089@adacore.com \
--to=brobecker@adacore.com \
--cc=eliz@gnu.org \
--cc=gdb-patches@sourceware.org \
--cc=palves@redhat.com \
--cc=pierre.muller@ics-cnrs.unistra.fr \
--cc=tromey@redhat.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