July 18 2016 9:20 AM, "Emil Velikov" <emil.l.veli...@gmail.com> wrote: > On 18 July 2016 at 14:39, Alexander von Gluck IV <kallis...@unixzen.com> > wrote: > >> July 18 2016 3:29 AM, "Nicolai Hähnle" <nhaeh...@gmail.com> wrote: >>> A comment further up in the same file says >>> >>> /* Haiku provides debug_printf in libroot with OS.h */ >>> >>> Is that no longer true? >>> >>> Nicolai >>> >>> On 16.07.2016 16:27, Alexander von Gluck IV wrote: >>> >>>> --- >>>> src/gallium/auxiliary/util/u_debug.h | 5 ++++- >>>> 1 file changed, 4 insertions(+), 1 deletion(-) >>>> >>>> diff --git a/src/gallium/auxiliary/util/u_debug.h >>>> b/src/gallium/auxiliary/util/u_debug.h >>>> index 7da7f53..7dc4ce8 100644 >>>> --- a/src/gallium/auxiliary/util/u_debug.h >>>> +++ b/src/gallium/auxiliary/util/u_debug.h >>>> @@ -83,7 +83,10 @@ _debug_printf(const char *format, ...) >>>> * - avoid outputing large strings (512 bytes is the current maximum length >>>> * that is guaranteed to be printed in all platforms) >>>> */ >>>> -#if !defined(PIPE_OS_HAIKU) >>>> +#if defined(PIPE_OS_HAIKU) >>>> +void >>>> +debug_printf(const char *format, ...) _util_printf_format(1,2); >>>> +#else >>>> static inline void >>>> debug_printf(const char *format, ...) _util_printf_format(1,2); > > Hmm I moved the include further up with commit > 373f118c6c750d717fd0727fc3fc191828714c6f although that should not have > made any difference, barring fragile include file order. Can you check > if reverting the u_debug.h gets you up and running ? If so can you > please: > - Please add the stable tag Cc: <mesa-sta...@lists.freedesktop.org> > - Attempt to straighten the includes (it might be mesa, llvm and/or > Haiku that is getting confused) > >> It's still true, however without the _util_printf_format I get odd llvm >> symbol errors. > > I would suspect that the above is in play, but without details > (build/error log) little to no one will be able to tell you if this is > the correct fix, I'm afraid.
gcc 5.4.0 / llvm 3.8.0 Sorry, I wasn't near the machine, here is the error without any changes: src/gallium/auxiliary/gallivm/lp_bld_assert.c: In function 'lp_assert': src/gallium/auxiliary/gallivm/lp_bld_assert.c:43:7: warning: implicit declaration of function 'debug_printf' [-Wimplicit-function-declaration] debug_printf("LLVM assertion '%s' failed!\n", msg); ^ Compiling src/gallium/auxiliary/gallivm/lp_bld_const.c ... Compiling src/gallium/auxiliary/gallivm/lp_bld_conv.c ... Compiling src/gallium/auxiliary/gallivm/lp_bld_debug.cpp ... Compiling src/gallium/auxiliary/gallivm/lp_bld_flow.c ... Compiling src/gallium/auxiliary/gallivm/lp_bld_format_aos_array.c ... Compiling src/gallium/auxiliary/gallivm/lp_bld_format_aos.c ... Compiling src/gallium/auxiliary/gallivm/lp_bld_format_cached.c ... Compiling src/gallium/auxiliary/gallivm/lp_bld_format_float.c ... Compiling src/gallium/auxiliary/gallivm/lp_bld_format.c ... Compiling src/gallium/auxiliary/gallivm/lp_bld_format_soa.c ... Compiling src/gallium/auxiliary/gallivm/lp_bld_format_srgb.c ... Compiling src/gallium/auxiliary/gallivm/lp_bld_format_yuv.c ... Compiling src/gallium/auxiliary/gallivm/lp_bld_gather.c ... Compiling src/gallium/auxiliary/gallivm/lp_bld_init.c ... Compiling src/gallium/auxiliary/gallivm/lp_bld_intr.c ... src/gallium/auxiliary/gallivm/lp_bld_intr.c: In function 'lp_build_intrinsic_binary_anylength': src/gallium/auxiliary/gallivm/lp_bld_intr.c:252:10: warning: implicit declaration of function 'debug_printf' [-Wimplicit-function-declaration] debug_printf("%s: should handle arbitrary vector size\n", ^ Compiling src/gallium/auxiliary/gallivm/lp_bld_logic.c ... Compiling src/gallium/auxiliary/gallivm/lp_bld_misc.cpp ... Compiling src/gallium/auxiliary/gallivm/lp_bld_pack.c ... Compiling src/gallium/auxiliary/gallivm/lp_bld_printf.c ... src/gallium/auxiliary/gallivm/lp_bld_printf.c: In function 'lp_build_print_args': src/gallium/auxiliary/gallivm/lp_bld_printf.c:68:84: error: 'debug_printf' undeclared (first use in this function) func_printf = lp_build_const_int_pointer(gallivm, func_to_pointer((func_pointer)debug_printf)); ^ src/gallium/auxiliary/gallivm/lp_bld_printf.c:68:84: note: each undeclared identifier is reported only once for each function it appears in scons: *** [build/haiku-x86_64-debug/gallium/auxiliary/gallivm/lp_bld_printf.os] Error 1 debug_printf is definitely declared however (and it should be all c code, no C++ thus no mangling) >> The linux code just below defines debug_printf twice as well: >> >> https://cgit.freedesktop.org/mesa/mesa/tree/src/gallium/auxiliary/util/u_debug.h#n87 > > AFAICT that is due to the _util_printf_format attribute, which > older/some compilers were not have been happy with [being alongside > the function definition]. > >> I'm honestly not 100% sure what's going on here as the arguments are the >> same, >> but defining twice on Haiku (once in OS.h, and again here) seems to resolve >> the issue. >> >> I have to define it differently under Haiku (and can't use the same one for >> all platforms) >> because Haiku's debug_printf is not static inline. > > Would replacing the Haiku one with our static inline work ? Would be > nice if things don't diverge (too much) across platforms. I'm all for replacing the OS's debug_printf, but that symbol is in the libroot which must be linked into every binary... so I'm a bit worried about overriding it causing issues. This seems to compile and might be a better solution? diff --git a/src/gallium/auxiliary/util/u_debug.h b/src/gallium/auxiliary/util/u_debug.h index 7da7f53..a3f046b 100644 --- a/src/gallium/auxiliary/util/u_debug.h +++ b/src/gallium/auxiliary/util/u_debug.h @@ -39,11 +39,6 @@ #define U_DEBUG_H_ -#if defined(PIPE_OS_HAIKU) -/* Haiku provides debug_printf in libroot with OS.h */ -#include <OS.h> -#endif - #include "os/os_misc.h" #include "pipe/p_format.h" @@ -54,6 +49,10 @@ extern "C" { #endif +// Some OS's like Haiku define debug_printf +#ifdef debug_printf +#undef debug_printf +#endif #if defined(__GNUC__) #define _util_printf_format(fmt, list) __attribute__ ((format (printf, fmt, list))) @@ -83,7 +82,6 @@ _debug_printf(const char *format, ...) * - avoid outputing large strings (512 bytes is the current maximum length * that is guaranteed to be printed in all platforms) */ -#if !defined(PIPE_OS_HAIKU) static inline void debug_printf(const char *format, ...) _util_printf_format(1,2); @@ -99,7 +97,6 @@ debug_printf(const char *format, ...) (void) format; /* silence warning */ #endif } -#endif /* I haven't been able to test it though due to this strange issue that popped up: Compiling src/mesa/main/scissor.c ... In file included from src/mesa/main/remap.c:46:0: src/mesa/main/remap_helper.h:7675:39: error: array type has incomplete element type 'struct gl_function_remap' static const struct gl_function_remap MESA_alt_functions[] = { ^ src/mesa/main/remap_helper.h:7675:39: warning: 'MESA_alt_functions' defined but not used [-Wunused-variable] scons: *** [build/haiku-x86_64-debug/mesa/main/remap.os] Error 1 Compiling src/mesa/main/shaderapi.c ... scons: building terminated because of errors. -- Alex _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev