Subject: 64-bit ABIs
To: None <tech-userlevel@netbsd.org>
From: Ben Harris <bjh21@netbsd.org>
List: tech-userlevel
Date: 04/29/2003 12:39:51
At the moment, the return type of inet_addr() in NetBSD is unsigned long.
In version 2 of the Single Unix Standard, and now POSIX, it's specified as
in_addr_t, which is equivalent to uint32_t.  Fixing this would obviously
cause no problems on ILP32 systems, but I can imagine it might upset LP64
ones.

So, my question is:  are there any systems on which the ABI differs for
functions which return uint32_t as opposed to unsigned long?  For the
obvious implementation (function return value in a register), I'd expect
not, but I'd like confirmation of this so I can decide how to proceed.

Similarly, inet_makeaddr is specified as having in_addr_t arguments, but
we have it taking u_long.  Do any of our current LP64 ABIs break if we
change a u_long argument to a uint32_t?

-- 
Ben Harris                                                   <bjh21@netbsd.org>
Portmaster, NetBSD/acorn26           <URL:http://www.netbsd.org/Ports/acorn26/>