diff options
author | Kyle Brenneman <[email protected]> | 2015-09-28 11:59:21 -0600 |
---|---|---|
committer | Emil Velikov <[email protected]> | 2015-10-02 13:22:46 +0100 |
commit | a27f2d991b1723c3349623401ce3c8f26dcdb28b (patch) | |
tree | c3867b3bf96c436b4263910cfecc8c81da36b253 | |
parent | 85313ff8ab1e3fad9679e05a97a7fd55ecf87291 (diff) |
glx: Fix build errors with --enable-mangling (v2)
Rearranged the GLX_ALIAS macro in glextensions.h so that it will pick up
the renames from glx_mangle.h.
Fixed the alias attribute for glXGetProcAddress when USE_MGL_NAMESPACE is
defined.
v2: Add a comment clarifying why GLX_ALIAS needs two macros.
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=55552
Signed-off-by: Kyle Brenneman <[email protected]>
Cc: "10.6 11.0" <[email protected]>
Reviewed-by: Emil Velikov <[email protected]>
-rw-r--r-- | src/glx/glxcmds.c | 4 | ||||
-rw-r--r-- | src/glx/glxextensions.h | 10 |
2 files changed, 12 insertions, 2 deletions
diff --git a/src/glx/glxcmds.c b/src/glx/glxcmds.c index 26ff804297f..93e8db5a367 100644 --- a/src/glx/glxcmds.c +++ b/src/glx/glxcmds.c @@ -2646,7 +2646,11 @@ _X_EXPORT void (*glXGetProcAddressARB(const GLubyte * procName)) (void) */ _X_EXPORT void (*glXGetProcAddress(const GLubyte * procName)) (void) #if defined(__GNUC__) && !defined(GLX_ALIAS_UNSUPPORTED) +# if defined(USE_MGL_NAMESPACE) + __attribute__ ((alias("mglXGetProcAddressARB"))); +# else __attribute__ ((alias("glXGetProcAddressARB"))); +# endif #else { return glXGetProcAddressARB(procName); diff --git a/src/glx/glxextensions.h b/src/glx/glxextensions.h index 90b173fc915..3a9bc823052 100644 --- a/src/glx/glxextensions.h +++ b/src/glx/glxextensions.h @@ -281,11 +281,17 @@ typedef void (*PFNGLXDISABLEEXTENSIONPROC) (const char *name); # define GLX_ALIAS_VOID(real_func, proto_args, args, aliased_func) #else # if defined(__GNUC__) && !defined(GLX_ALIAS_UNSUPPORTED) -# define GLX_ALIAS(return_type, real_func, proto_args, args, aliased_func) \ +/* GLX_ALIAS and GLX_ALIAS_VOID both expand to the macro GLX_ALIAS2. Using the + * extra expansion means that the name mangling macros in glx_mangle.h will + * apply before stringification, so the alias attribute will have a string like + * "mglXFoo" instead of "glXFoo". */ +# define GLX_ALIAS2(return_type, real_func, proto_args, args, aliased_func) \ return_type real_func proto_args \ __attribute__ ((alias( # aliased_func ) )); +# define GLX_ALIAS(return_type, real_func, proto_args, args, aliased_func) \ + GLX_ALIAS2(return_type, real_func, proto_args, args, aliased_func) # define GLX_ALIAS_VOID(real_func, proto_args, args, aliased_func) \ - GLX_ALIAS(void, real_func, proto_args, args, aliased_func) + GLX_ALIAS2(void, real_func, proto_args, args, aliased_func) # else # define GLX_ALIAS(return_type, real_func, proto_args, args, aliased_func) \ return_type real_func proto_args \ |