From: "Maciej W. Rozycki" <macro@codesourcery.com>
To: Yao Qi <yao@codesourcery.com>
Cc: <gdb-patches@sourceware.org>
Subject: Re: [PATCH] microMIPS support
Date: Wed, 25 Apr 2012 15:57:00 -0000 [thread overview]
Message-ID: <alpine.DEB.1.10.1204251412380.19835@tp.orcam.me.uk> (raw)
In-Reply-To: <4F97DFEC.5030007@codesourcery.com>
On Wed, 25 Apr 2012, Yao Qi wrote:
> > +int
> > +mips_pc_is_micromips (struct gdbarch *gdbarch, CORE_ADDR memaddr)
> > +{
> > + struct minimal_symbol *sym;
> > +
> > + /* A flag indicating that this is a microMIPS function is stored by
> > + elfread.c in the high bit of the info field. Use this to decide
> > + if the function is microMIPS. Otherwise if bit 0 of the address
> > + is set, then ELF file flags will tell if this is a microMIPS
> > + function. */
> > + sym = lookup_minimal_symbol_by_pc (memaddr);
> > + if (sym)
> > + return msymbol_is_micromips (sym);
> > + else
> > + return is_micromips_addr (gdbarch, memaddr);
> > +}
>
> Why don't we check `is_micromips_addr' first, and return early if it
> returns true? In this way, we can avoid some symbol lookups.
The choice of the sequence is deliberate and actually we used to do the
checks in the opposite order for MIPS16 code until recently. The reason
is there is IMO no point in using the wrong ISA type where the ISA bit has
been set incorrectly, e.g. the wrong software breakpoint instruction when
someone says:
(gdb) break *0xdeadbeef
and the address actually refers MIPS32 code. Also the opposite does not
work, that is with the current arrangement the ISA bit of the MEMADDR
argument may have been implicitly cleared elsewhere even when referencing
a piece of compressed code and no numeric address actually used.
I think code should behave as consistently as possible, and therefore for
all the three ISAs any associated symbol's attribute is checked first,
followed by checking the ISA bit specified explicitly in the address. The
latter case is only meant to cover addresses for which no symbol
information of any kind could have been found.
Does it clear your concern?
Maciej
next prev parent reply other threads:[~2012-04-25 15:57 UTC|newest]
Thread overview: 43+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-04-24 21:18 Maciej W. Rozycki
2012-04-25 6:20 ` Eli Zaretskii
2012-04-26 13:54 ` Maciej W. Rozycki
2012-04-26 14:14 ` Eli Zaretskii
2012-04-26 18:03 ` Maciej W. Rozycki
2012-04-26 20:39 ` Eli Zaretskii
2012-04-27 18:16 ` Maciej W. Rozycki
2012-04-27 18:24 ` Eli Zaretskii
[not found] ` <alpine.DEB.1.10.1204302334520.19835@tp.orcam.me.uk>
2012-05-02 16:39 ` Eli Zaretskii
2012-05-17 15:07 ` Maciej W. Rozycki
2012-05-17 16:10 ` Eli Zaretskii
2012-05-18 23:13 ` Maciej W. Rozycki
2012-05-19 8:20 ` Eli Zaretskii
2012-04-25 13:13 ` Yao Qi
2012-04-25 15:57 ` Maciej W. Rozycki [this message]
2012-04-25 15:54 ` Joel Brobecker
2012-04-25 17:18 ` Maciej W. Rozycki
2012-04-25 18:12 ` Joel Brobecker
2012-04-25 18:27 ` Maciej W. Rozycki
2012-04-26 18:38 ` Jan Kratochvil
2012-04-26 19:04 ` Maciej W. Rozycki
2012-04-26 19:29 ` Jan Kratochvil
2012-04-26 21:59 ` Maciej W. Rozycki
2012-04-27 7:11 ` Jan Kratochvil
2012-04-27 15:14 ` Maciej W. Rozycki
2012-04-27 15:29 ` Pedro Alves
2012-04-27 15:46 ` Maciej W. Rozycki
2012-04-27 15:54 ` Tom Tromey
2012-05-18 23:53 ` Maciej W. Rozycki
2012-05-18 21:32 ` [PATCH] microMIPS support (Linux signal trampolines) Maciej W. Rozycki
2012-05-18 22:25 ` Mark Kettenis
2012-05-21 14:33 ` Maciej W. Rozycki
2012-06-11 10:32 ` [PING][PATCH] " Maciej W. Rozycki
2014-09-28 11:12 ` [PATCH] " Maciej W. Rozycki
2014-10-06 0:46 ` [PING][PATCH] " Maciej W. Rozycki
2014-10-13 12:24 ` [PING^2][PATCH] " Maciej W. Rozycki
2014-10-20 17:01 ` [PING^3][PATCH] " Maciej W. Rozycki
2014-11-03 16:04 ` [PING^4][PATCH] " Maciej W. Rozycki
2014-11-16 8:58 ` [PATCH] " Joel Brobecker
2014-12-03 21:00 ` Maciej W. Rozycki
2012-05-18 23:47 ` [PATCH] microMIPS support Maciej W. Rozycki
2012-05-19 8:52 ` Eli Zaretskii
2012-05-22 0:07 ` Maciej W. Rozycki
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=alpine.DEB.1.10.1204251412380.19835@tp.orcam.me.uk \
--to=macro@codesourcery.com \
--cc=gdb-patches@sourceware.org \
--cc=yao@codesourcery.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