Prepending underscores to symbol names in dlsym() (commit 20613)

Will Newton will.newton at
Tue Jan 8 16:17:02 UTC 2008

On Jan 8, 2008 4:06 PM, Daniel Jacobowitz <drow at> wrote:
> On Tue, Jan 08, 2008 at 03:58:00PM +0000, Will Newton wrote:
> > Agreed, my question is whether or not adding the underscore is the
> > correct thing to do even if your architecture prepends an underscore
> > to symbol names? Is there a particular reason why this was done for
> > Blackfin, to make a particular app work? I am trying to find out what
> > the correct behaviour of dlsym is, for example does it behave like
> > this on other Unixes that have leading underscores on symbols.
> There are pretty much no Unixes that do this; a few embedded Linux
> ports are the only exceptions I've ever encountered.

I think I got the impression from the Levine "Linkers and Loaders"
book (my copy of which seems to have vanished) that prepending an
underscore to symbol names was common practice. Perhaps it was an
a.out thing, that's rather before my time though...

> If you have underscores, dlsym had better know about it, or
> cross-platform code will break.  Consider dlsym (libc_handle,
> "printf"); every caller should not need to know about _printf.

Thanks for clearing that up. My concern is that I've never seen this
documented anywhere, but it does seem to be something of a corner

More information about the uClibc mailing list