Skip to content

Instantly share code, notes, and snippets.

@ychaouche
Last active February 27, 2025 16:54
Show Gist options
  • Save ychaouche/4da87cb591431ba57ae24e562d375239 to your computer and use it in GitHub Desktop.
Save ychaouche/4da87cb591431ba57ae24e562d375239 to your computer and use it in GitHub Desktop.
/lib/ is for 32-bit apps
/libx32/ is for the 32x ABI
In the new "x32" ABI x86_64-linux-gnux32,
inspired by SGI n32 environment,
registers are 64 bits,
but pointers, integers and longs are only 32 bits,
saving a lot of memory in pointer-heavy workflows.
It also ensures all the other 64-bit only processor features are available,
resulting in to about 30% reduction in memory usage
and up to about 40% increase in speed. [2][5]
It is designed to run on 64bit host
(amd64/x86_64 CPUs)
which gives it full access to all x64 goodies:
o native x64 registers and math
o more registers
o SSE2/3/4, AVX1/2/...
o Full 4Gb address space on 64bit host [3]
It is part of Linux 3.4,
released on the 20th May 2012 [4]
The idea is to combine the smaller memory and cache footprint from 32-bit data types
with the larger register set of x86_64. [5]
Requirements:
- kernel support (3.4 and above),
- distro support (see below),
- libc support (2.11 or above),
- GCC 4.8 and above (improved address size prefix support).
When booting a kernel with the support,
you must use syscall.x32=y option [5]
[1] https://stackoverflow.com/a/851229/212044
[2] https://stackoverflow.com/a/36347228/212044
[3] https://stackoverflow.com/a/36347144/212044
[4] https://stackoverflow.com/q/7635013/212044
[5] https://stackoverflow.com/a/32663236/212044
[6] https://unix.stackexchange.com/a/539354/22046
[7] https://www.quora.com/Systems-Programming/What-is-the-exact-difference-between-dynamic-loading-and-dynamic-linking/answer/Jeff-Darcy
[8] https://unix.stackexchange.com/a/476783/22046
[9] https://stackoverflow.com/a/76490135/212044
[10] https://stackoverflow.com/a/75630806/212044
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment