This is the mail archive of the
mailing list for the GCC project.
Re: new triplet for x32 psABI?
On Mon, Oct 3, 2011 at 5:53 PM, H.J. Lu <email@example.com> wrote:
> On Mon, Oct 3, 2011 at 4:47 PM, Michael LIAO <firstname.lastname@example.org> wrote:
>> On Mon, Oct 3, 2011 at 4:03 PM, Mike Frysinger <email@example.com> wrote:
>>> On Monday, October 03, 2011 18:57:28 Michael LIAO wrote:
>>> please don't top post
>> sorry, it's my first post on mailing.
>>>> 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 assembly codes, most, if not all, of x86-64 indirect branch work fine for x32
that may cause the target IP out of the first 4G range if assembly
code won't follow x32 abi, e.g. indirect target is stored in a memory
location and assembly direct use 64-bit near absolute indirect call
with m64 opernad since the branch target is 32 bits in memory but that
call will read 64-bit value and result in garbage on high 32 bits of
the final IP.