Upstreaming x32 ABI support


We (the Portable Native Client team) would like to continue upstreaming
our LLVM modifications which contain support for Software Fault
Isolation (SFI) as required for sandboxing programs to run under
Native Client. Since the “total patch size” is quite big, we are
splitting the effort to manageable chunks that can be committed,
tested and reviewed separately as independently as feasible.

Eli has recently landed the changes we needed for instruction bundling
and alignment. Thanks to those of you who provided reviews and
suggestions for improvement.

The next step:
The second portion that we would like to upstream is in preparation
for our x86-64 Native Client changes. In particular, our ABI is
dependent on the existence of an ILP32 ABI on x86-64. The
conventions we rely on are the same as those developed for the
x32 effort, and we propose that the community begin reviewing
changes to implement the x32 ABI. It should also be noted that the
x32 ABI is already supported by binutils, gcc, and glibc, and that
the Native Client team hopes to host its changes there on top of
x32 as well.

Our proposal is that the community ratify the idea of supporting

the x32 ABI and that the Native Client team start by defining the
variables/flags/etc., to allow selecting the x32 ABI in LLVM. We
are aware of the previous set of patches posted to this list for x32,
and will be as consistent with that direction as possible.

For background, the x8-64 Native Client model is described in
x32 is described at

The previous set of patches was sent attached to




We have our first CL ready and waiting, but haven’t heard from the community. Are there issues or suggestions we should understand a priori?



I think we’re waiting for patches. =]

The smaller and more incremental, the better it’ll go…