Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/wolfpld/tracy.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--public/client/TracyCpuid.hpp12
-rw-r--r--public/client/TracyProfiler.cpp2
-rw-r--r--public/client/TracySysTrace.cpp2
3 files changed, 14 insertions, 2 deletions
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 <cpuid.h>
+
+#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 <cpuid.h>
+# 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 <sys/syscall.h>
# if defined __i386 || defined __x86_64__
-# include <cpuid.h>
+# include "TracyCpuid.hpp"
# endif
# include "TracyProfiler.hpp"