https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83584
--- Comment #20 from Witold Baryluk <witold.baryluk+gcc at gmail dot com> --- FYI. http://austingroupbugs.net/view.php?id=74#c205 says Note that conversion from a void * pointer to a function pointer as in: fptr = (int (*)(int))dlsym(handle, "my_function"); is not defined by the ISO C Standard. This standard requires this conversion to work correctly on conforming implementations. This is published now as IEEE Std 1003.1-2017, aka POSIX.1-2017: https://pubs.opengroup.org/onlinepubs/9699919799/functions/dlsym.html POSIX standard is free to do so.