Description
In our pipeline, we build AOT files for both gnu
and eabi
target ABI's. However, we think we can simplify our pipeline by just building for one of them, as the generated AOT should be the same for both.
Generally, 'gnu' and 'eabi' distinguish the existence of an operating system and primarily indicate C standard library ABI. They also distinguish the sizes of some data types, like wchar_t, but that's relevant for binary compatibility, which is not an issue in our case. A C compiler may generate different function calls depending on what it believes is available above and beyond the Standard C library. A toolchain for an EABI, or bare-metal ABI, may assume a different C library (e.g. newlib or even no C library) to the GNU Linux C ABI (for which it assumes glibc). We generate AOT after we build WebAssembly with wasi-libc, so C standard library ABI is irrelevant when building AOT.
What's the difference between using gnu
and eabi
on generated AOT? Can you confirm we can simplify our pipeline?
Many thanks.