The natural way to import a builtin that returns void * is to use System.Address in Ada, which is in fact an integral type. Addressed by this patch, which makes it possible to e.g. compile: with System; procedure Btins1 is function Frame_Address (Level : Integer) return System.Address; pragma Import (Intrinsic, Frame_Address, "__builtin_frame_address"); Ptr : System.Address; pragma Volatile (Ptr); begin Ptr := Frame_Address (0); end; Tested on x86_64-pc-linux-gnu, committed on trunk 2012-07-16 Tristan Gingold * gcc-interface/decl.c (intrin_return_compatible_p): Map Address to void *.