[prev in list] [next in list] [prev in thread] [next in thread] 

List:       freedesktop-xorg-devel
Subject:    Question about importing symbols
From:       ajax () nwnk ! net (Adam Jackson)
Date:       2009-11-30 19:50:59
Message-ID: 1259610659.7251.31213.camel () atropine ! boston ! devel ! redhat ! com
[Download RAW message or body]

We resolved this on IRC, but just for posterity:

On Mon, 2009-11-30 at 13:55 -0500, Timothy Normand Miller wrote:

> Here's something interesting we just figured out.  If we do something
> like this, we get the unresolved symbol error:
> 
> pScreen->CreateWindow = fbCreateWindow;
> 
> However, if we CALL the function, we don't get the error.

This is a data reference, which ELF requires be resolvable on module
load.  Which won't ever happen, because your driver hasn't called
LoadSubModule() when it's dlopen()'d.

> > The "required" list is the list of symbols to error fatally on.  The
> > "referenced" list is the list to _not_ error fatally on, presumably
> > because you know when you're being careful with them.
> 
> Is that the second pointer argument to xf86LoaderReqSymLists ?

No, xf86LoaderReqSymLists() is varargs.  The "referenced" list is set up
with xf86LoaderRefSymLists().  All of one character different, how nice.

> > The lookup cost is not much worse than that of dlsym().  The runtime
> > performance ends up being slightly better than direct symbol calls
> > because you're not banging through the PLT every time.
> 
> What's the name of the function to call to look up a symbol by name?

void *LoaderSymbol(const char *sym);

- ajax
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 198 bytes
Desc: This is a digitally signed message part
Url : http://lists.x.org/archives/xorg-devel/attachments/20091130/05a5650e/attachment.pgp 

[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic