Skip to content

Difference between AOT generated for gnu and eabi target ABI #3280

Open
@FractalGiraffe

Description

@FractalGiraffe

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.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions