[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Where could I upload x32 port bootstrap?



On 10/11/12 16:10, Peter Samuelson wrote:

On Sat, Nov 10, 2012 at 10:47:43AM +0100, Adam Borowski wrote:
On the other hand, widespread dumb-ass assumptions about i386/amd64 may
cause quite a bit of issues: basically any Makefile that talks about "x86"
is somewhat suspicious.  This is the main reason one may want to oppose
the inclusion of x32 in Debian, IMHO.

[Andrey Rahmatullin]
Can you elaborate?

[Henrique de Moraes Holschuh]
This is no worse than any other new arch.

The new wrinkle is that, because x32 uses the x86-64 instruction set,
it defines preprocessor symbols associated with x86-64, and which a lot
of source code uses to differentiate between i386 and amd64.  Thus,
code which cares about long and pointer size may well misdetect them on
x32.  From the revised AMD64 ABI Draft, chapter 7, page 105 (linked
from https://sites.google.com/site/x32abi/documents):

     Table 7.1: Predefined Pre-Processor Symbols

     __amd64       Defined for both LP64 and ILP32 programming models.
     __amd64__     Defined for both LP64 and ILP32 programming models.
     __x86_64      Defined for both LP64 and ILP32 programming models.
     __x86_64__    Defined for both LP64 and ILP32 programming models.
     _LP64         Defined for LP64 programming model.
     __LP64__      Defined for LP64 programming model.
     _ILP32        Defined for ILP32 programming model.
     __ILP32__     Defined for ILP32 programming model.

Note that "LP64" means "longs and pointers are 64-bit", our existing
amd64 port.  "ILP32" means "int, long, pointer all 32-bit", or x32.

Peter
Apologies in advance that this is off-topic or just a silly question.

If I want my C source code to build correctly on x32, how do I choose the correct printf format strings for int32_t, int64_t etc?

Regards,
Philip Ashmore


Reply to: