[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