From 0d5b4b320cf1acde5ff02e9fca696239f5dd3fe4 Mon Sep 17 00:00:00 2001 From: Thomas Hellstrom Date: Mon, 8 Nov 2010 17:10:02 +0100 Subject: svga/drm: Optionally resolve calls to powf during link-time When linked with certain builds of libstdc++, it appears like powf is resolved by a symbol in that library. Other builds of libstdc++ doesn't contain that symbol resulting in a linker / loader error. Optionally resolve that symbol and replace it with calls to logf and expf. Signed-off-by: Thomas Hellstrom --- src/gallium/targets/dri-vmwgfx/vmw_powf.c | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) create mode 100644 src/gallium/targets/dri-vmwgfx/vmw_powf.c (limited to 'src/gallium/targets/dri-vmwgfx/vmw_powf.c') diff --git a/src/gallium/targets/dri-vmwgfx/vmw_powf.c b/src/gallium/targets/dri-vmwgfx/vmw_powf.c new file mode 100644 index 0000000000..ca5e39b389 --- /dev/null +++ b/src/gallium/targets/dri-vmwgfx/vmw_powf.c @@ -0,0 +1,17 @@ +/** + * Powf may leave an unresolved symbol pointing to a libstdc++.so powf. + * However, not all libstdc++.so include this function, so optionally + * replace the powf function with calls to expf and logf. + */ + +#ifdef VMW_RESOLVE_POWF + +extern float expf(float x); +extern float logf(float x); +extern float powf(float x, float y); + +float powf(float x, float y) { + return expf(logf(x)*y); +} + +#endif -- cgit v1.2.3