[waffle] [PATCH 7/7] nacl: add implementation for waffle_dl_sym

Emil Velikov emil.l.velikov at gmail.com
Thu Feb 5 09:05:54 PST 2015


On 5 February 2015 at 13:12, Tapani <tapani.palli at intel.com> wrote:
> On 02/03/2015 07:09 PM, Emil Velikov wrote:
>>
>> On 23 January 2015 at 07:59, Tapani Pälli <tapani.palli at intel.com> wrote:
...
>>> +
>>> +    uint32_t len = strlen(src) + strlen(prefix);
>>
>> So the function name changes from glHamSandwitch to GLES2HamSandwitch ?
>> In that case you'll need to subtract 2 from the len above.
>
> I believe only 1 because of the additional string terminator, but I consider
> above cleaner than playing the +/- game (?)
>
You're correct - I've completely forgot about \0, also I agree with
your argument.

...
>>> @@ -59,7 +97,28 @@ nacl_platform_dl_sym(struct wcore_platform *wc_self,
>>>                        int32_t waffle_dl,
>>>                        const char *name)
>>>   {
>>> -    return NULL;
>>> +    struct nacl_platform *self = nacl_platform(wc_self);
>>> +    char *nacl_name = NULL;
>>> +    void *func = NULL;
>>> +
>>> +    if (!self->gl_dl)
>>> +        if (!nacl_platform_dl_can_open(wc_self, waffle_dl))
>>
>> One should not be doing this - it's the user's responsibility to call
>> dl_can_open prior to dl_sym.
>
>
> Documentation does not seem to indicate mandatory call to dl_can_open(), it
> just suggests that one can test if a dll can be opened this way. AFAICS one
> can just start to dlsym() the required functions?
>
I believe the lack of documentation is due to historical reasons.

Imho it's a picky subject what is to be done, if one can do XX
context, but does not have (direct) library to dlsym the symbols from.
I believe I've annoyed Chad enough on the topic so I won't pick it up
again :-)

I would personally opt to updating the documentation, as afaics none
of the current implementations calls dl_can_open within dl_sym.
Obviously the final decision is not mine to make, so this is just my 2c.

>>> +            return false;
>>> +
>>> +    switch (waffle_dl) {
>>> +        case WAFFLE_DL_OPENGL_ES2:
>>> +            nacl_name = nacl_prefix(name, "GLES2");
>>> +            break;
>>> +    }
>>> +
>>
>> Just drop the switch for now ?
>
> Can do. Thanks for the reviews Emil!
>
You're welcome :-)

-Emil


More information about the waffle mailing list