_dl_open_hook is to support the static libdl.a case. If a static program dlopen's libc.so, and then libc.so wants to dlopen e.g. a gconv module, it has to use the static program's dlopen rather than ld.so's dlopen.