When I was using dl_iterate_phdr(), I noticed that the currently running executable wasn't showing up by name. And the first object visited by the iteration was unnamed. According to this Stack Overflow page, the first object will always be the current executable: http://stackoverflow.com/questions/8875876/getting-the-elf-header-of-the-main-executable But I didn't find any mention of this behavior in the official documentation: http://linux.die.net/man/3/dl_iterate_phdr
I added some text to the man page to note this: The first object visited by callback is the main program. For the main program, the dlpi_name field will be an empty string. Closing this bug.