> > ../../gcc/ada/s-os_lib.adb:1007:16: note: return value type > > mismatch > > function strerror (errnum : Integer) return System.Address; > > ^ > > > > ../../gcc/ada/s-os_lib.adb:1007:16: note: > > ???system__os_lib__errno_message__strerror??? was previously > > declared here > > > > Here we have function returning pointer WRT function returning integer: > > This one is on purpose and cannot be easily changed. Pointer types (or access > types as called in Ada) are avoided as much as possible in the runtime because > they drag the accessibility machinery, which is the machinery present in > the > language to eliminate dangling references and is heavy; so they are usually > imported as System.Address instead.
This particular instance can probably be fixed, I'll give it a shot when I get a chance. But you're right that the general issue is that System.Address is often used as a void* Arno