On Tue, 2016-10-11 at 23:12 +0900, Akihiko Odaki wrote: > unsigned long int is not always capable to have pointer in some cases > (LLP64, for example). This makes sense, but it does change a public API. One we share with other libelf implementations. So I'll like to discuss this first to make sure this doesn't break something subtle. I believe it is binary compatible on any currently supported architecture. And indeed it is broken for any architecture that doesn't have sizeof(long) == sizeof(void *). There might be some source compatibility issues. If a user stored the result in a long without cast that would now generate a warning I suppose. Cheers, Mark