@@ -50,6 +50,7 @@ namespace OggVorbisNamespace | |||||
"-Wmisleading-indentation", | "-Wmisleading-indentation", | ||||
"-Wmissing-prototypes", | "-Wmissing-prototypes", | ||||
"-Wcast-align") | "-Wcast-align") | ||||
JUCE_BEGIN_NO_SANITIZE ("undefined") | |||||
#include "oggvorbis/vorbisenc.h" | #include "oggvorbis/vorbisenc.h" | ||||
#include "oggvorbis/codec.h" | #include "oggvorbis/codec.h" | ||||
@@ -79,6 +80,7 @@ namespace OggVorbisNamespace | |||||
#include "oggvorbis/libvorbis-1.3.7/lib/vorbisfile.c" | #include "oggvorbis/libvorbis-1.3.7/lib/vorbisfile.c" | ||||
#include "oggvorbis/libvorbis-1.3.7/lib/window.c" | #include "oggvorbis/libvorbis-1.3.7/lib/window.c" | ||||
JUCE_END_NO_SANITIZE | |||||
JUCE_END_IGNORE_WARNINGS_MSVC | JUCE_END_IGNORE_WARNINGS_MSVC | ||||
JUCE_END_IGNORE_WARNINGS_GCC_LIKE | JUCE_END_IGNORE_WARNINGS_GCC_LIKE | ||||
#else | #else | ||||
@@ -29,6 +29,8 @@ | |||||
//============================================================================== | //============================================================================== | ||||
#if JucePlugin_Build_VST3 && (JUCE_MAC || JUCE_WINDOWS || JUCE_LINUX || JUCE_BSD) | #if JucePlugin_Build_VST3 && (JUCE_MAC || JUCE_WINDOWS || JUCE_LINUX || JUCE_BSD) | ||||
JUCE_BEGIN_NO_SANITIZE ("vptr") | |||||
#if JUCE_PLUGINHOST_VST3 | #if JUCE_PLUGINHOST_VST3 | ||||
#if JUCE_MAC | #if JUCE_MAC | ||||
#include <CoreFoundation/CoreFoundation.h> | #include <CoreFoundation/CoreFoundation.h> | ||||
@@ -3989,4 +3991,6 @@ extern "C" SMTG_EXPORT_SYMBOL IPluginFactory* PLUGIN_API GetPluginFactory() | |||||
extern "C" BOOL WINAPI DllMain (HINSTANCE instance, DWORD reason, LPVOID) { if (reason == DLL_PROCESS_ATTACH) Process::setCurrentModuleInstanceHandle (instance); return true; } | extern "C" BOOL WINAPI DllMain (HINSTANCE instance, DWORD reason, LPVOID) { if (reason == DLL_PROCESS_ATTACH) Process::setCurrentModuleInstanceHandle (instance); return true; } | ||||
#endif | #endif | ||||
JUCE_END_NO_SANITIZE | |||||
#endif //JucePlugin_Build_VST3 | #endif //JucePlugin_Build_VST3 |
@@ -28,6 +28,8 @@ | |||||
namespace juce | namespace juce | ||||
{ | { | ||||
JUCE_BEGIN_NO_SANITIZE ("vptr") | |||||
//============================================================================== | //============================================================================== | ||||
#define JUCE_DECLARE_VST3_COM_REF_METHODS \ | #define JUCE_DECLARE_VST3_COM_REF_METHODS \ | ||||
Steinberg::uint32 PLUGIN_API addRef() override { return (Steinberg::uint32) ++refCount; } \ | Steinberg::uint32 PLUGIN_API addRef() override { return (Steinberg::uint32) ++refCount; } \ | ||||
@@ -1219,6 +1221,8 @@ private: | |||||
std::atomic<int32> flags { 0 }; | std::atomic<int32> flags { 0 }; | ||||
}; | }; | ||||
JUCE_END_NO_SANITIZE | |||||
} // namespace juce | } // namespace juce | ||||
#endif // ! DOXYGEN | #endif // ! DOXYGEN |
@@ -31,6 +31,10 @@ | |||||
namespace juce | namespace juce | ||||
{ | { | ||||
// UB Sanitizer doesn't necessarily have instrumentation for loaded plugins, so | |||||
// it won't recognize the dynamic types of pointers to the plugin's interfaces. | |||||
JUCE_BEGIN_NO_SANITIZE ("vptr") | |||||
using namespace Steinberg; | using namespace Steinberg; | ||||
//============================================================================== | //============================================================================== | ||||
@@ -3767,6 +3771,8 @@ FileSearchPath VST3PluginFormat::getDefaultLocationsToSearch() | |||||
#endif | #endif | ||||
} | } | ||||
JUCE_END_NO_SANITIZE | |||||
} // namespace juce | } // namespace juce | ||||
#endif // JUCE_PLUGINHOST_VST3 | #endif // JUCE_PLUGINHOST_VST3 |
@@ -189,7 +189,7 @@ | |||||
#define JUCE_IGNORE_MSVC(warnings) __pragma(warning(disable:warnings)) | #define JUCE_IGNORE_MSVC(warnings) __pragma(warning(disable:warnings)) | ||||
#define JUCE_BEGIN_IGNORE_WARNINGS_LEVEL_MSVC(level, warnings) \ | #define JUCE_BEGIN_IGNORE_WARNINGS_LEVEL_MSVC(level, warnings) \ | ||||
__pragma(warning(push, level)) JUCE_IGNORE_MSVC(warnings) | __pragma(warning(push, level)) JUCE_IGNORE_MSVC(warnings) | ||||
#define JUCE_BEGIN_IGNORE_WARNINGS_MSVC(warnings) \ | |||||
#define JUCE_BEGIN_IGNORE_WARNINGS_MSVC(warnings) \ | |||||
__pragma(warning(push)) JUCE_IGNORE_MSVC(warnings) | __pragma(warning(push)) JUCE_IGNORE_MSVC(warnings) | ||||
#define JUCE_END_IGNORE_WARNINGS_MSVC __pragma(warning(pop)) | #define JUCE_END_IGNORE_WARNINGS_MSVC __pragma(warning(pop)) | ||||
#else | #else | ||||
@@ -198,3 +198,24 @@ | |||||
#define JUCE_BEGIN_IGNORE_WARNINGS_MSVC(warnings) | #define JUCE_BEGIN_IGNORE_WARNINGS_MSVC(warnings) | ||||
#define JUCE_END_IGNORE_WARNINGS_MSVC | #define JUCE_END_IGNORE_WARNINGS_MSVC | ||||
#endif | #endif | ||||
#if JUCE_MAC || JUCE_IOS | |||||
#define JUCE_SANITIZER_ATTRIBUTE_MINIMUM_CLANG_VERSION 10 | |||||
#else | |||||
#define JUCE_SANITIZER_ATTRIBUTE_MINIMUM_CLANG_VERSION 5 | |||||
#endif | |||||
/** Disable sanitizers for a range of functions. | |||||
This functionality doesn't seem to exist on GCC yet, so at the moment this only works for clang. | |||||
*/ | |||||
#if JUCE_CLANG && __clang_major__ >= JUCE_SANITIZER_ATTRIBUTE_MINIMUM_CLANG_VERSION | |||||
#define JUCE_BEGIN_NO_SANITIZE(warnings) \ | |||||
_Pragma(JUCE_TO_STRING(clang attribute push(__attribute__((no_sanitize(warnings))), apply_to=function))) | |||||
#define JUCE_END_NO_SANITIZE _Pragma(JUCE_TO_STRING(clang attribute pop)) | |||||
#else | |||||
#define JUCE_BEGIN_NO_SANITIZE(warnings) | |||||
#define JUCE_END_NO_SANITIZE | |||||
#endif | |||||
#undef JUCE_SANITIZER_ATTRIBUTE_MINIMUM_CLANG_VERSION |