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.
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
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.
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?