Mirror of the gdb-patches mailing list
 help / color / mirror / Atom feed
From: Jim Blandy <jimb@redhat.com>
To: Andrew Cagney <ac131313@redhat.com>
Cc: gdb-patches@sources.redhat.com
Subject: Re: [obish] More osabi comments
Date: Fri, 24 Oct 2003 21:46:00 -0000	[thread overview]
Message-ID: <vt2u15yqpgk.fsf@zenia.home> (raw)
In-Reply-To: <3F9948BA.4050201@redhat.com>


Andrew Cagney <ac131313@redhat.com> writes:
> More comments the better ...
> 
> Recent discussions to do with rs6000 compatibility left me wondering
> how come "amd64 can run code for i386" wasn't getting a hit.   The
> attached comment explains why the test (both old and new) works for
> the 32-bit vs 64-bit case.
> 
> I also changed "atom" to the more common OO term "singleton".

For what it's worth, I got "atom" from bfd/archures.c:

    SECTION
            Architectures

            BFD keeps one atom in a BFD describing the
            architecture of the data attached to the BFD: a pointer to a
            <<bfd_arch_info_type>>.

There's something to be said for using the same terminology used in
the code that defines the data structures one is discussing.  Perhaps
a corresponding patch for BFD would be good, too.

> +      /* NOTE: cagney/2003-10-23: The code for "a can_run_code_for b"
> +         is implemented using BFD's compatible method (a->compatible
> +         (b) == a -- the lowest common denominator between a and b is
> +         a).  That method's definition of compatible may not be as you
> +         expect.  For instance, while "amd64 can run code for i386"
> +         (or more generally "64-bit ISA can run code for the 32-bit
> +         ISA").  Fortunatly, BFD doesn't normally consider 32-bit and
> +         64-bit "compatible" so won't get a match.  */

(Incomplete sentence in there.)

This comment implies that can_run_code_for (A, B) might return zero
when A actually can run code for B.  That's not so.

The example you give is, I think, incorrect.  The x86_64 64-bit ISA is
not a superset with the IA-32 ISA: the 64-bit ISA takes over the
one-byte opcodes for INC and DEC, 0x40 -- 0x4f, for use as its new REX
prefix codes.  So one can't include i386 code in an x86-64 64-bit mode
code segment.  One must mark the code segment as being in
'compatibility mode' to execute IA-32 code.  For details, see:

http://www.amd.com/products/cpg/64bit/pdf/x86-64_overview.pdf

So, can_run_code_for (&bfd_x86_64_arch, &bfd_i386_arch) == 0, just as
it should.


  parent reply	other threads:[~2003-10-24 21:46 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2003-10-24 15:43 Andrew Cagney
2003-10-24 15:57 ` Daniel Jacobowitz
2003-10-24 17:20   ` Andrew Cagney
2003-10-24 15:57 ` Kevin Buettner
2003-10-24 21:46 ` Jim Blandy [this message]
2003-10-24 22:14   ` Andrew Cagney
2003-10-24 23:31     ` Jim Blandy
2003-10-27 15:28       ` Andrew Cagney

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=vt2u15yqpgk.fsf@zenia.home \
    --to=jimb@redhat.com \
    --cc=ac131313@redhat.com \
    --cc=gdb-patches@sources.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