This is the mail archive of the newlib@sourceware.org mailing list for the newlib project.
| Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
|---|---|---|
| Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |
| Other format: | [Raw text] | |
On 03/17/2017 04:04 PM, Hans-Bernhard Bröker wrote: > The reason this is wrong is that C by design treats data and functions > as living in separate realms, i.e. its virtual machine has a Harvard > architecture. One of the consequences of this is that pointers to > functions and pointers to data are incommensurable, i.e. any and all > conversions or comparisons across this divide are wrong. (void *) are > compatible to all data pointers, but not to function pointers. That's true of strict C99, but not true of POSIX (which adds the additional requirements above-and-beyond C99 that NULL be equivalent to ((void*)0) and that any function pointer can be converted to void* and back without loss of information, in part because of dlsym() and friends). Then again, not all newlib targets aim for POSIX compliance, and it is entirely feasible that someone is trying to use newlib to achieve C99 compliance without caring about additional POSIX requirements. -- Eric Blake eblake redhat com +1-919-301-3266 Libvirt virtualization library http://libvirt.org
Attachment:
signature.asc
Description: OpenPGP digital signature
| Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
|---|---|---|
| Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |