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

Emil Velikov emil.l.velikov at gmail.com
Tue Feb 3 09:09:19 PST 2015


On 23 January 2015 at 07:59, Tapani Pälli <tapani.palli at intel.com> wrote:
> Signed-off-by: Tapani Pälli <tapani.palli at intel.com>

You might want to model dl handling similar to cgl_dl - both support
only single waffle_dl.
As such I won't pick on the diffs between the two.

> +// Construct a string that maps GL function to NaCl function
> +// by concating given prefix and function name tail from 'src'.
> +static char *
> +nacl_prefix(const char *src, const char *prefix)
> +{
> +    if (strncmp(src, "gl", 2) != 0)
> +        return NULL;
wcore_error ?

> +
> +    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.

> +
> +    char *dst = calloc(len, 1);
Using wcore_calloc will set a nice waffle_error in case this fails :-)

[...]
> @@ -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.

> +            return false;
> +
> +    switch (waffle_dl) {
> +        case WAFFLE_DL_OPENGL_ES2:
> +            nacl_name = nacl_prefix(name, "GLES2");
> +            break;
> +    }
> +
Just drop the switch for now ?

Cheers,
Emil


More information about the waffle mailing list