public inbox for gcc@gcc.gnu.org
 help / color / mirror / Atom feed
From: Michael LIAO <michael.hliao@gmail.com>
To: Mike Frysinger <vapier@gentoo.org>
Cc: autoconf@gnu.org, gcc@gcc.gnu.org, x32-abi@googlegroups.com,
		config-patches@gnu.org
Subject: Re: new triplet for x32 psABI?
Date: Tue, 04 Oct 2011 03:26:00 -0000	[thread overview]
Message-ID: <CAO-CJbh26xH+XAZqWnhibeujDURu_k4wDo5YgW0cq86jwD=JvQ@mail.gmail.com> (raw)
In-Reply-To: <201110032046.49204.vapier@gentoo.org>

On Mon, Oct 3, 2011 at 5:46 PM, Mike Frysinger <vapier@gentoo.org> wrote:
> On Monday, October 03, 2011 19:47:57 Michael LIAO wrote:
>> On Mon, Oct 3, 2011 at 4:03 PM, Mike Frysinger wrote:
>> > On Monday, October 03, 2011 18:57:28 Michael LIAO wrote:
>> >> Most examples would be related to tools generating code.
>> >>
>> >> Suppose you have a software package with several hard-coded fully
>> >> optimized assembly file for different targets. Your build system need
>> >> to know the current target as well as target ABI to select the correct
>> >> assembly file to build it. It even desirable if it includes a simple
>> >> script to help generate assembly code (like the one in OpenSSL), you'd
>> >> better know the target ABI to prepare proper glue code without
>> >> breaking ABI.
>> >
>> > hjlu posted examples to the x32 site as to handle this.  the only
>> > difference between x86_64 and x32 is the size of the pointers.
>>
>> Besides the pointer size, there are other differences like indirect
>> branch which need different code sequence on x32 and x64. Indirect
>> branch would be used in assembly code (yeah, concrete example would
>> valuable here but indirect branch should be used potentially and
>> possibly in assembly code.) If the assembly code use indirect branch,
>> it needs to know the target ABI and generate/use difference code path.
>
> in terms of asm code, it's still possible to use ifdef's to handle cases where
> you truly need different code paths.

Yeah, we could have '#ifdef X32ABI" in assembly file to select
different path. But, how to generate that macro, says X32ABI, based on
autoconf to detect/select target (not only target architecture but
also target ABI.). A new triplet in general is needed to simplify that
instead of compiler/linker options only or inventing itself by each
software package itself. The reason for a new triplet is to get such
information little canonical, in somewhat.

>
> in terms of a tool that generates code itself (like gcc), i'm not sure a
> different tuple would make it any easier.  gcc itself simply adds an abi
> configure flag to control what it supports since the backend shares a lot more
> code than is unique to each abi.

not all tools like gcc has the chance to specify different ABI through
compiler option. it's especially true for simple tool to generate
code, maybe just at compile time. They may need something directly to
tell which ABI will be used.

>
> we have precedence here where multiple abi's work with a single tuple, and it
> hasn't been a significant hindrance for them.  adding a new tuple is also not
> something to be done lightly ... a lot of code out there parses tuples, and
> they would need updating.

yeah, I totally agree. At first stage, people may still need explicit
specify compiler/linker options '-mx32' to build a non-x32-aware
package with x32 ABI for correctness. But, for package requires to be
x32-aware, it could check triplet.

>
> not that i'm the one to convince here, it's just that you need real data to
> back up proposals that shows pros/cons and why your suggestion ultimately has
> more pros than cons ;).

yeah, that's why mailing list is always CCed, :)

> -mike
>

  reply	other threads:[~2011-10-04  3:26 UTC|newest]

Thread overview: 19+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-10-03 22:26 Michael LIAO
2011-10-03 22:30 ` Eric Blake
2011-10-03 22:35 ` Mike Frysinger
2011-10-03 22:57   ` Michael LIAO
2011-10-03 23:04     ` Mike Frysinger
2011-10-03 23:48       ` Michael LIAO
2011-10-04  0:47         ` Mike Frysinger
2011-10-04  3:26           ` Michael LIAO [this message]
2011-10-04  3:56             ` Mike Frysinger
2011-10-04  0:54         ` H.J. Lu
2011-10-04  3:44           ` Michael LIAO
2011-10-04 19:53             ` H.J. Lu
2011-10-03 23:06     ` H.J. Lu
2011-10-12  4:49   ` Michael LIAO
2011-10-12  7:13     ` Mike Frysinger
2011-10-12  7:27       ` Michael LIAO
2011-10-12 22:14         ` Mike Frysinger
2011-10-13  0:49         ` H.J. Lu
2011-10-13  7:26           ` Mike Frysinger

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='CAO-CJbh26xH+XAZqWnhibeujDURu_k4wDo5YgW0cq86jwD=JvQ@mail.gmail.com' \
    --to=michael.hliao@gmail.com \
    --cc=autoconf@gnu.org \
    --cc=config-patches@gnu.org \
    --cc=gcc@gcc.gnu.org \
    --cc=vapier@gentoo.org \
    --cc=x32-abi@googlegroups.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;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).