ABI Extractor - Understanding ABI compatibility between compilers targeting RISC-V

Day 1 | 11:15 | 00:40 | H.1309 (Van Rijn) | Luis Silva


Note: I'm reworking this at the moment, some things won't work.

The stream isn't available yet! Check back at 11:15.
Get involved in the conversation!Join the chat

How to ensure that object files from two compilers are ABI (Application Binary Interface) compatible?

This talk presents a tool capable of extracting ABI properties for a RISC-V compiler. This human readable summary can be compared to another version, be it a reference version or one created for a different compiler or with different options, exposing where compatibility problems can pop up.

While the topic may not receive extensive attention, certain methods for ABI validation do exist, most of which focus on libraries. This tool, however, adopts a unique approach by focusing on extracting ABI properties to ensure compatibility between object files produced by different compilers. It covers aspects from data type sizes/alignment to the organization of data in registers and on the stack. For example, it identifies which registers or stack locations are used for variable/struct argument passing and distinguishes caller-saved from callee-saved registers.