diff --git a/public/client/TracyCpuid.hpp b/public/client/TracyCpuid.hpp new file mode 100644 index 00000000..9820be00 --- /dev/null +++ b/public/client/TracyCpuid.hpp @@ -0,0 +1,12 @@ +#ifndef __TRACYCPUID_HPP__ +#define __TRACYCPUID_HPP__ + +// Prior to GCC 11 the cpuid.h header did not have any include guards and thus +// including it more than once would cause a compiler error due to symbol +// redefinitions. In order to support older GCC versions, we have to wrap this +// include between custom include guards to prevent this issue. +// See also https://github.com/wolfpld/tracy/issues/452 + +#include + +#endif diff --git a/public/client/TracyProfiler.cpp b/public/client/TracyProfiler.cpp index 90cc0077..e0783825 100644 --- a/public/client/TracyProfiler.cpp +++ b/public/client/TracyProfiler.cpp @@ -106,7 +106,7 @@ extern "C" typedef BOOL (WINAPI *t_GetLogicalProcessorInformationEx)( LOGICAL_PR #endif #if !defined _WIN32 && ( defined __i386 || defined _M_IX86 || defined __x86_64__ || defined _M_X64 ) -# include +# include "TracyCpuid.hpp" #endif #if !( ( defined _WIN32 && _WIN32_WINNT >= _WIN32_WINNT_VISTA ) || defined __linux__ ) diff --git a/public/client/TracySysTrace.cpp b/public/client/TracySysTrace.cpp index ee62547d..23b1020a 100644 --- a/public/client/TracySysTrace.cpp +++ b/public/client/TracySysTrace.cpp @@ -609,7 +609,7 @@ void SysTraceGetExternalName( uint64_t thread, const char*& threadName, const ch # include # if defined __i386 || defined __x86_64__ -# include +# include "TracyCpuid.hpp" # endif # include "TracyProfiler.hpp"