diff --git a/repos/base/src/test/sanitizer/main.cc b/repos/base/src/test/sanitizer/main.cc index 022edceb99..2c723d287c 100644 --- a/repos/base/src/test/sanitizer/main.cc +++ b/repos/base/src/test/sanitizer/main.cc @@ -18,7 +18,6 @@ extern void sanitizer_init(Genode::Env &); void Component::construct(Genode::Env &env) { - env.exec_static_constructors(); sanitizer_init(env); /* test array out-of-bounds access detection */ diff --git a/repos/libports/lib/mk/libsanitizer_common.mk b/repos/libports/lib/mk/libsanitizer_common.mk index 4e727051cc..d1259f89c1 100644 --- a/repos/libports/lib/mk/libsanitizer_common.mk +++ b/repos/libports/lib/mk/libsanitizer_common.mk @@ -5,8 +5,8 @@ SANITIZER_DIR := $(SANITIZER_PORT_DIR)/src/lib/sanitizer SRC_CC = sanitizer_allocator.cc \ sanitizer_common.cc \ sanitizer_common_libcdep.cc \ - sanitizer_coverage_libcdep.cc \ - sanitizer_coverage_mapping_libcdep.cc \ + sanitizer_coverage_libcdep_new.cc \ + sanitizer_file.cc \ sanitizer_flag_parser.cc \ sanitizer_flags.cc \ sanitizer_genode.cc \ @@ -21,7 +21,8 @@ SRC_CC = sanitizer_allocator.cc \ sanitizer_symbolizer.cc \ sanitizer_symbolizer_libbacktrace.cc \ sanitizer_symbolizer_libcdep.cc \ - sanitizer_symbolizer_posix_libcdep.cc + sanitizer_symbolizer_posix_libcdep.cc \ + sanitizer_termination.cc INC_DIR += $(SANITIZER_DIR) diff --git a/repos/libports/lib/mk/libubsan.mk b/repos/libports/lib/mk/libubsan.mk index 2ae2e952c9..7046c826a1 100644 --- a/repos/libports/lib/mk/libubsan.mk +++ b/repos/libports/lib/mk/libubsan.mk @@ -11,7 +11,7 @@ SRC_CC = ubsan_diag.cc \ ubsan_type_hash_itanium.cc \ ubsan_value.cc -CC_OPT += -DCAN_SANITIZE_UB=1 +CC_OPT += -DCAN_SANITIZE_UB=1 -DUBSAN_CAN_USE_CXXABI=1 LIBS += libsanitizer_common diff --git a/repos/libports/lib/symbols/libsanitizer_common b/repos/libports/lib/symbols/libsanitizer_common index 4746f3052f..5047a42161 100644 --- a/repos/libports/lib/symbols/libsanitizer_common +++ b/repos/libports/lib/symbols/libsanitizer_common @@ -1,6 +1,6 @@ +OnPrint W _Z14sanitizer_initRN6Genode3EnvE T _ZN11__sanitizer10ExtractIntEPKcS1_Pi T -_ZN11__sanitizer10FileExistsEPKc T _ZN11__sanitizer10FlagParser10ll_strndupEPKcm T _ZN11__sanitizer10FlagParser10parse_flagEv T _ZN11__sanitizer10FlagParser11ParseStringEPKc T @@ -16,6 +16,7 @@ _ZN11__sanitizer10FlagParser9ParseFileEPKcb T _ZN11__sanitizer10FlagParserC1Ev T _ZN11__sanitizer10FlagParserC2Ev T _ZN11__sanitizer10RenameFileEPKcS1_Pi T +_ZN11__sanitizer10RenderDataEPNS_20InternalScopedStringEPKcPKNS_8DataInfoES3_ T _ZN11__sanitizer10ReportFile13SetReportPathEPKc T _ZN11__sanitizer10ReportFile14SupportsColorsEv T _ZN11__sanitizer10ReportFile17ReopenIfNecessaryEv T @@ -26,6 +27,8 @@ _ZN11__sanitizer10Symbolizer11SymbolizePCEm T _ZN11__sanitizer10Symbolizer11symbolizer_E B 8 _ZN11__sanitizer10Symbolizer12PlatformInitEv T _ZN11__sanitizer10Symbolizer13SymbolizeDataEmPNS_8DataInfoE T +_ZN11__sanitizer10Symbolizer14LateInitializeEv T +_ZN11__sanitizer10Symbolizer14RefreshModulesEv T _ZN11__sanitizer10Symbolizer15ModuleNameOwner12GetOwnedCopyEPKc T _ZN11__sanitizer10Symbolizer15SymbolizerScopeC1EPKS0_ T _ZN11__sanitizer10Symbolizer15SymbolizerScopeC2EPKS0_ T @@ -33,11 +36,12 @@ _ZN11__sanitizer10Symbolizer15SymbolizerScopeD1Ev T _ZN11__sanitizer10Symbolizer15SymbolizerScopeD2Ev T _ZN11__sanitizer10Symbolizer16PlatformDemangleEPKc T _ZN11__sanitizer10Symbolizer20FindModuleForAddressEm T +_ZN11__sanitizer10Symbolizer20InvalidateModuleListEv T _ZN11__sanitizer10Symbolizer20PrepareForSandboxingEv T _ZN11__sanitizer10Symbolizer21symbolizer_allocator_E B 16 _ZN11__sanitizer10Symbolizer27GetModuleNameAndOffsetForPCEmPPKcPm T _ZN11__sanitizer10Symbolizer28PlatformPrepareForSandboxingEv T -_ZN11__sanitizer10Symbolizer33FindModuleNameAndOffsetForAddressEmPPKcPm T +_ZN11__sanitizer10Symbolizer33FindModuleNameAndOffsetForAddressEmPPKcPmPNS_10ModuleArchE T _ZN11__sanitizer10Symbolizer5FlushEv T _ZN11__sanitizer10Symbolizer8AddHooksEPFvvES2_ T _ZN11__sanitizer10Symbolizer8DemangleEPKc T @@ -45,13 +49,11 @@ _ZN11__sanitizer10Symbolizer8init_mu_E B 1 _ZN11__sanitizer10Symbolizer9GetOrInitEv T _ZN11__sanitizer10SymbolizerC1ENS_13IntrusiveListINS_14SymbolizerToolEEE T _ZN11__sanitizer10SymbolizerC2ENS_13IntrusiveListINS_14SymbolizerToolEEE T -_ZN11__sanitizer10UnbundlePcEm T _ZN11__sanitizer10UnmapOrDieEPvm T -_ZN11__sanitizer11AddressInfo14FillModuleInfoEPKcm T +_ZN11__sanitizer11AddressInfo14FillModuleInfoEPKcmNS_10ModuleArchE T _ZN11__sanitizer11AddressInfo5ClearEv T _ZN11__sanitizer11AddressInfoC1Ev T _ZN11__sanitizer11AddressInfoC2Ev T -_ZN11__sanitizer11CheckFailedEPKciS1_yy T _ZN11__sanitizer11CommonFlags11SetDefaultsEv T _ZN11__sanitizer11CommonFlags8CopyFromERKS0_ T _ZN11__sanitizer11ExtractUptrEPKcS1_Pm T @@ -60,66 +62,48 @@ _ZN11__sanitizer11RenderFrameEPNS_20InternalScopedStringEPKciRKNS_11AddressInfoE _ZN11__sanitizer11WriteToFileEiPKvmPmPi T _ZN11__sanitizer11mem_is_zeroEPKcm T _ZN11__sanitizer11report_fileE D 8216 -_ZN11__sanitizer12CovAfterForkEi T -_ZN11__sanitizer12CoverageData10BeforeForkEv T -_ZN11__sanitizer12CoverageData10DirectOpenEv T -_ZN11__sanitizer12CoverageData11DumpOffsetsEv T -_ZN11__sanitizer12CoverageData12DumpAsBitSetEv T -_ZN11__sanitizer12CoverageData12DumpCountersEv T -_ZN11__sanitizer12CoverageData16InitializeGuardsEPimPKcm T -_ZN11__sanitizer12CoverageData18InitializeCountersEPhm T -_ZN11__sanitizer12CoverageData18ReinitializeGuardsEv T -_ZN11__sanitizer12CoverageData19UpdateModuleNameVecEmmm T -_ZN11__sanitizer12CoverageData20InitializeGuardArrayEPi T -_ZN11__sanitizer12CoverageData21DumpCallerCalleePairsEv T -_ZN11__sanitizer12CoverageData23GetNumberOf8bitCountersEv T -_ZN11__sanitizer12CoverageData39Update8bitCounterBitsetAndClearCountersEPh T -_ZN11__sanitizer12CoverageData3AddEmPj T -_ZN11__sanitizer12CoverageData4InitEv T -_ZN11__sanitizer12CoverageData4dataEv T -_ZN11__sanitizer12CoverageData4sizeEv T -_ZN11__sanitizer12CoverageData6EnableEv T -_ZN11__sanitizer12CoverageData6ExtendEm T -_ZN11__sanitizer12CoverageData6ReInitEv T -_ZN11__sanitizer12CoverageData7DisableEv T -_ZN11__sanitizer12CoverageData7DumpAllEv T -_ZN11__sanitizer12CoverageData9AfterForkEi T -_ZN11__sanitizer12CoverageData9DumpTraceEv T -_ZN11__sanitizer12CoverageData9IndirCallEmmPmm T +_ZN11__sanitizer12DieOnFailure12OnBadRequestEv T +_ZN11__sanitizer12DieOnFailure5OnOOMEv T _ZN11__sanitizer12ExtractTokenEPKcS1_PPc T -_ZN11__sanitizer12InternalFreeEPvPNS_28SizeClassAllocatorLocalCacheINS_20SizeClassAllocator32ILm0ELy140737488355328ELm0ENS_12SizeClassMapILm17ELm64ELm14EEELm20ENS_15TwoLevelByteMapILy32768ELy4096ENS_20NoOpMapUnmapCallbackEEES6_EEEE T -_ZN11__sanitizer12LoadedModule15addAddressRangeEmmb T +_ZN11__sanitizer12InternalFreeEPvPNS_28SizeClassAllocatorLocalCacheINS_20SizeClassAllocator32INS_4AP32EEEEE T +_ZN11__sanitizer12LoadedModule15addAddressRangeEmmbbPKc T _ZN11__sanitizer12LoadedModule3setEPKcm T +_ZN11__sanitizer12LoadedModule3setEPKcmNS_10ModuleArchEPhb T _ZN11__sanitizer12LoadedModule5clearEv T +_ZN11__sanitizer12PrintCmdlineEv T _ZN11__sanitizer12ReadFromFileEiPvmPmPi T +_ZN11__sanitizer12RunFreeHooksEPKv T _ZN11__sanitizer13BlockingMutex11CheckLockedEv T _ZN11__sanitizer13BlockingMutex4LockEv T _ZN11__sanitizer13BlockingMutex6UnlockEv T _ZN11__sanitizer13BlockingMutexC1Ev T _ZN11__sanitizer13BlockingMutexC2Ev T -_ZN11__sanitizer13CovBeforeForkEv T -_ZN11__sanitizer13InternalAllocEmPNS_28SizeClassAllocatorLocalCacheINS_20SizeClassAllocator32ILm0ELy140737488355328ELm0ENS_12SizeClassMapILm17ELm64ELm14EEELm20ENS_15TwoLevelByteMapILy32768ELy4096ENS_20NoOpMapUnmapCallbackEEES5_EEEE T +_ZN11__sanitizer13InternalAllocEmPNS_28SizeClassAllocatorLocalCacheINS_20SizeClassAllocator32INS_4AP32EEEEEm T _ZN11__sanitizer13StackDepotGetEj T _ZN11__sanitizer13StackDepotPutENS_10StackTraceE T _ZN11__sanitizer13TemplateMatchEPKcS1_ T +_ZN11__sanitizer13WriteToSyslogEPKc T _ZN11__sanitizer13unknown_flagsE B 168 -_ZN11__sanitizer14AddDieCallbackEPFvvE T _ZN11__sanitizer14DemangleCXXABIEPKc T _ZN11__sanitizer14DumpProcessMapEv T _ZN11__sanitizer14GetProcessNameEv T +_ZN11__sanitizer14InternalCallocEmmPNS_28SizeClassAllocatorLocalCacheINS_20SizeClassAllocator32INS_4AP32EEEEE T _ZN11__sanitizer14IsAbsolutePathEPKc T -_ZN11__sanitizer14LLVMSymbolizer11SendCommandEbPKcm T _ZN11__sanitizer14LLVMSymbolizer11SymbolizePCEmPNS_15SymbolizedStackE T _ZN11__sanitizer14LLVMSymbolizer13SymbolizeDataEmPNS_8DataInfoE T +_ZN11__sanitizer14LLVMSymbolizer20FormatAndSendCommandEbPKcmNS_10ModuleArchE T _ZN11__sanitizer14LLVMSymbolizerC1EPKcPNS_17LowLevelAllocatorE T _ZN11__sanitizer14LLVMSymbolizerC2EPKcPNS_17LowLevelAllocatorE T +_ZN11__sanitizer14PageSizeCachedE B 8 _ZN11__sanitizer14ReadBinaryNameEPcm T +_ZN11__sanitizer14RunMallocHooksEPKvm T _ZN11__sanitizer14SleepForMillisEi T _ZN11__sanitizer14internal__exitEi T _ZN11__sanitizer14internal_atollEPKc T _ZN11__sanitizer14report_file_muE B 1 _ZN11__sanitizer15CacheBinaryNameEv T _ZN11__sanitizer15ColorizeReportsEv T +_ZN11__sanitizer15InternalReallocEPvmPNS_28SizeClassAllocatorLocalCacheINS_20SizeClassAllocator32INS_4AP32EEEEE T _ZN11__sanitizer15IsPathSeparatorEc T _ZN11__sanitizer15StripModuleNameEPKc T _ZN11__sanitizer15StripPathPrefixEPKcS1_ T @@ -127,7 +111,6 @@ _ZN11__sanitizer15SymbolizedStack3NewEm T _ZN11__sanitizer15SymbolizedStack8ClearAllEv T _ZN11__sanitizer15SymbolizedStackC1Ev T _ZN11__sanitizer15SymbolizedStackC2Ev T -_ZN11__sanitizer15UnbundleCounterEm T _ZN11__sanitizer15internal_getpidEv T _ZN11__sanitizer15internal_memchrEPKvim T _ZN11__sanitizer15internal_memcmpEPKvS1_m T @@ -138,13 +121,9 @@ _ZN11__sanitizer15internal_strcmpEPKcS1_ T _ZN11__sanitizer15internal_strdupEPKc T _ZN11__sanitizer15internal_strlenEPKc T _ZN11__sanitizer15internal_strstrEPKcS1_ T +_ZN11__sanitizer15internal_wcslenEPKw T _ZN11__sanitizer16Addr2LineProcess18output_terminator_E R 9 -_ZN11__sanitizer16BackgroundThreadEPv T -_ZN11__sanitizer16CovUpdateMappingEPKcm T _ZN11__sanitizer16FindPathToBinaryEPKc T -_ZN11__sanitizer16GetListOfModulesEPNS_12LoadedModuleEmPFbPKcE T -_ZN11__sanitizer16MaybeOpenCovFileEPKc T -_ZN11__sanitizer16MmapAlignedOrDieEmmPKc T _ZN11__sanitizer16MprotectNoAccessEmm T _ZN11__sanitizer16ReadFileToBufferEPKcPPcPmS4_mPi T _ZN11__sanitizer16StackDepotHandle20inc_use_count_unsafeEv T @@ -154,6 +133,8 @@ _ZN11__sanitizer16internal_iserrorEmPi T _ZN11__sanitizer16internal_memmoveEPvPKvm T _ZN11__sanitizer16internal_memrchrEPKvim T _ZN11__sanitizer16internal_strcspnEPKcS1_ T +_ZN11__sanitizer16internal_strlcatEPcPKcm T +_ZN11__sanitizer16internal_strlcpyEPcPKcm T _ZN11__sanitizer16internal_strncatEPcPKcm T _ZN11__sanitizer16internal_strncmpEPKcS1_m T _ZN11__sanitizer16internal_strncpyEPcPKcm T @@ -161,10 +142,8 @@ _ZN11__sanitizer16internal_strndupEPKcm T _ZN11__sanitizer16internal_strnlenEPKcm T _ZN11__sanitizer16internal_strrchrEPKci T _ZN11__sanitizer17DecreaseTotalMmapEm T -_ZN11__sanitizer17GetPageSizeCachedEv T _ZN11__sanitizer17IncreaseTotalMmapEm T _ZN11__sanitizer17LowLevelAllocator8AllocateEm T -_ZN11__sanitizer17RemoveDieCallbackEPFvvE T _ZN11__sanitizer17SanitizerToolNameE D 8 _ZN11__sanitizer17StackDepotLockAllEv T _ZN11__sanitizer17SymbolizerProcess11SendCommandEPKc T @@ -184,14 +163,13 @@ _ZN11__sanitizer18BufferedStackTrace15FastUnwindStackEmmmmj T _ZN11__sanitizer18BufferedStackTrace15LocatePcInTraceEm T _ZN11__sanitizer18BufferedStackTrace4InitEPKmmm T _ZN11__sanitizer18BufferedStackTrace6UnwindEjmmPvmmb T -_ZN11__sanitizer18BundlePcAndCounterEmm T _ZN11__sanitizer18GetMmapGranularityEv T -_ZN11__sanitizer18InitializeCoverageEbPKc T +_ZN11__sanitizer18HandleDeadlySignalEPvS0_jPFvRKNS_13SignalContextEPKvPNS_18BufferedStackTraceEES5_ T _ZN11__sanitizer18MmapNoReserveOrDieEmPKc T -_ZN11__sanitizer18ReportErrorSummaryEPKc T -_ZN11__sanitizer18ReportErrorSummaryEPKcPNS_10StackTraceE T -_ZN11__sanitizer18ReportErrorSummaryEPKcRKNS_11AddressInfoE T -_ZN11__sanitizer18SetUserDieCallbackEPFvvE T +_ZN11__sanitizer18ReportDeadlySignalERKNS_13SignalContextEjPFvS2_PKvPNS_18BufferedStackTraceEES4_ T +_ZN11__sanitizer18ReportErrorSummaryEPKcPKNS_10StackTraceES1_ T +_ZN11__sanitizer18ReportErrorSummaryEPKcRKNS_11AddressInfoES1_ T +_ZN11__sanitizer18ReportErrorSummaryEPKcS1_ T _ZN11__sanitizer18StackDepotGetStatsEv T _ZN11__sanitizer18SuppressionContext10GetMatchedEPNS_18InternalMmapVectorIPNS_11SuppressionEEE T _ZN11__sanitizer18SuppressionContext13ParseFromFileEPKc T @@ -202,66 +180,75 @@ _ZN11__sanitizer18SuppressionContextC2EPPKci T _ZN11__sanitizer18internal_allocatorEv T _ZN11__sanitizer18internal_ftruncateEim T _ZN11__sanitizer18internal_strchrnulEPKci T +_ZN11__sanitizer19DemangleSwiftAndCXXEPKc T _ZN11__sanitizer19ReadLongProcessNameEPcm T _ZN11__sanitizer19RegisterCommonFlagsEPNS_10FlagParserEPNS_11CommonFlagsE T _ZN11__sanitizer19StackDepotUnlockAllEv T _ZN11__sanitizer20InternalScopedString6appendEPKcz T _ZN11__sanitizer20PrepareForSandboxingEP29__sanitizer_sandbox_arguments T -_ZN11__sanitizer20ReInitializeCoverageEbPKc T _ZN11__sanitizer20ReadBinaryNameCachedEPcm T _ZN11__sanitizer20RegisterIncludeFlagsEPNS_10FlagParserEPNS_11CommonFlagsE T -_ZN11__sanitizer20RenderModuleLocationEPNS_20InternalScopedStringEPKcmS3_ T +_ZN11__sanitizer20RenderModuleLocationEPNS_20InternalScopedStringEPKcmNS_10ModuleArchES3_ T _ZN11__sanitizer20RenderSourceLocationEPNS_20InternalScopedStringEPKciibS3_ T _ZN11__sanitizer20StackDepotReverseMap10IdDescPair12IdComparatorERKS1_S3_ T _ZN11__sanitizer20StackDepotReverseMap3GetEj T _ZN11__sanitizer20StackDepotReverseMapC1Ev T _ZN11__sanitizer20StackDepotReverseMapC2Ev T _ZN11__sanitizer20internal_sched_yieldEv T -_ZN11__sanitizer21CoverageUpdateMappingEv T +_ZN11__sanitizer21InitializeCommonFlagsEPNS_11CommonFlagsE T +_ZN11__sanitizer21ScopedErrorReportLock11CheckLockedEv T +_ZN11__sanitizer21ScopedErrorReportLockC1Ev T +_ZN11__sanitizer21ScopedErrorReportLockC2Ev T +_ZN11__sanitizer21ScopedErrorReportLockD1Ev T +_ZN11__sanitizer21ScopedErrorReportLockD2Ev T _ZN11__sanitizer21SetSandboxingCallbackEPFvvE T -_ZN11__sanitizer21SupportsColoredOutputEi T -_ZN11__sanitizer21common_flags_dont_useE B 168 +_ZN11__sanitizer21common_flags_dont_useE B 232 +_ZN11__sanitizer22AllocatorMayReturnNullEv T +_ZN11__sanitizer22CatastrophicErrorWriteEPKcm T +_ZN11__sanitizer22IsAllocatorOutOfMemoryEv T _ZN11__sanitizer22LibbacktraceSymbolizer11SymbolizePCEmPNS_15SymbolizedStackE T _ZN11__sanitizer22LibbacktraceSymbolizer13SymbolizeDataEmPNS_8DataInfoE T _ZN11__sanitizer22LibbacktraceSymbolizer3getEPNS_17LowLevelAllocatorE T _ZN11__sanitizer22LibbacktraceSymbolizer8DemangleEPKc T _ZN11__sanitizer22ParseSymbolizePCOutputEPKcPNS_15SymbolizedStackE T -_ZN11__sanitizer22SetCheckFailedCallbackEPFvPKciS1_yyE T +_ZN11__sanitizer22SubstituteForFlagValueEPKcPcm T _ZN11__sanitizer22thePersistentAllocatorE B 24 -_ZN11__sanitizer23CovPrepareForSandboxingEP29__sanitizer_sandbox_arguments T _ZN11__sanitizer23IsAccessibleMemoryRangeEmm T _ZN11__sanitizer23MapWritableFileToMemoryEPvmim T -_ZN11__sanitizer23ReportMmapFailureAndDieEmPKcS1_i T +_ZN11__sanitizer23ReportMmapFailureAndDieEmPKcS1_ib T _ZN11__sanitizer23ReportUnrecognizedFlagsEv T +_ZN11__sanitizer23StartReportDeadlySignalEv T _ZN11__sanitizer23internal_simple_strtollEPKcPPci T _ZN11__sanitizer23stoptheworld_tracer_pidE B 8 _ZN11__sanitizer24ParseSymbolizeDataOutputEPKcPNS_8DataInfoE T +_ZN11__sanitizer24ReturnNullOrDieOnFailure12OnBadRequestEv T +_ZN11__sanitizer24ReturnNullOrDieOnFailure5OnOOMEv T _ZN11__sanitizer24StackDepotPut_WithHandleENS_10StackTraceE T _ZN11__sanitizer24internal_bzero_aligned16EPvm T _ZN11__sanitizer24stoptheworld_tracer_ppidE B 8 _ZN11__sanitizer25ExtractTokenUpToDelimiterEPKcS1_PPc T _ZN11__sanitizer25MaybeStartBackgroudThreadEv T +_ZN11__sanitizer25SetAllocatorMayReturnNullEb T _ZN11__sanitizer26CommonSanitizerReportMutexE B 1 _ZN11__sanitizer26SetPrintfAndReportCallbackEPFvPKcE T _ZN11__sanitizer27SetLowLevelAllocateCallbackEPFvmmE T _ZN11__sanitizer31ReportAllocatorCannotReturnNullEv T _ZN11__sanitizer31SetSoftRssLimitExceededCallbackEPFvbE T -_ZN11__sanitizer35CallocShouldReturnNullDueToOverflowEmm T -_ZN11__sanitizer3DieEv T +_ZN11__sanitizer35RemoveANSIEscapeSequencesFromStringEPc T _ZN11__sanitizer5AbortEv T _ZN11__sanitizer6AtexitEPFvvE T _ZN11__sanitizer6GetEnvEPKc T _ZN11__sanitizer6GetRSSEv T _ZN11__sanitizer6PrintfEPKcz T _ZN11__sanitizer6ReportEPKcz T -_ZN11__sanitizer7OnPrintEPKc T _ZN11__sanitizer8DataInfo5ClearEv T _ZN11__sanitizer8DataInfoC1Ev T _ZN11__sanitizer8DataInfoC2Ev T _ZN11__sanitizer8OpenFileEPKcNS_14FileAccessModeEPi T _ZN11__sanitizer8RawWriteEPKc T _ZN11__sanitizer9CloseFileEi T -_ZN11__sanitizer9MmapOrDieEmPKc T +_ZN11__sanitizer9MmapOrDieEmPKcb T +_ZN11__sanitizer9SortArrayEPjm T _ZN11__sanitizer9SortArrayEPmm T _ZN11__sanitizer9VSNPrintfEPciPKcP13__va_list_tag T _ZNK11__sanitizer10StackTrace5PrintEv T @@ -270,24 +257,12 @@ _ZNK11__sanitizer16Addr2LineProcess18ReachedEndOfOutputEPKcm T _ZNK11__sanitizer18SuppressionContext13SuppressionAtEm T _ZNK11__sanitizer18SuppressionContext16SuppressionCountEv T _ZNK11__sanitizer18SuppressionContext18HasSuppressionTypeEPKc T -__sanitizer_cov T -__sanitizer_cov_dump T -__sanitizer_cov_indir_call16 T -__sanitizer_cov_init T -__sanitizer_cov_module_init T -__sanitizer_cov_trace_basic_block T -__sanitizer_cov_trace_cmp W -__sanitizer_cov_trace_func_enter T -__sanitizer_cov_trace_switch W -__sanitizer_cov_with_check T -__sanitizer_get_coverage_guards T -__sanitizer_get_number_of_counters T -__sanitizer_get_total_unique_caller_callee_pairs T -__sanitizer_get_total_unique_coverage T -__sanitizer_maybe_open_cov_file T +__sanitizer_get_module_and_offset_for_pc T +__sanitizer_install_malloc_and_free_hooks T __sanitizer_report_error_summary W -__sanitizer_reset_coverage T __sanitizer_sandbox_on_notify W __sanitizer_set_death_callback T +__sanitizer_set_report_fd T __sanitizer_set_report_path T -__sanitizer_update_counter_bitset_and_clear_counters T +__sanitizer_symbolize_global T +__sanitizer_symbolize_pc T diff --git a/repos/libports/lib/symbols/libubsan b/repos/libports/lib/symbols/libubsan index c7837c895c..ef1b56b2a3 100644 --- a/repos/libports/lib/symbols/libubsan +++ b/repos/libports/lib/symbols/libubsan @@ -1,21 +1,27 @@ _ZN7__ubsan11ubsan_flagsE B 24 _ZN7__ubsan12InitAsPluginEv T +_ZN7__ubsan12ScopedReport11InitializerC1Ev T +_ZN7__ubsan12ScopedReport11InitializerC2Ev T _ZN7__ubsan12ScopedReportC1ENS_13ReportOptionsENS_8LocationENS_9ErrorTypeE T _ZN7__ubsan12ScopedReportC2ENS_13ReportOptionsENS_8LocationENS_9ErrorTypeE T _ZN7__ubsan12ScopedReportD1Ev T _ZN7__ubsan12ScopedReportD2Ev T -_ZN7__ubsan14TypeCheckKindsE D 80 +_ZN7__ubsan12ignoreReportENS_14SourceLocationENS_13ReportOptionsENS_9ErrorTypeE T +_ZN7__ubsan14IsPCSuppressedENS_9ErrorTypeEmPKc T +_ZN7__ubsan14TypeCheckKindsE D 88 _ZN7__ubsan15InitializeFlagsEv T _ZN7__ubsan16InitAsStandaloneEv T _ZN7__ubsan16checkDynamicTypeEPvS0_m T _ZN7__ubsan18RegisterUbsanFlagsEPN11__sanitizer10FlagParserEPNS_5FlagsE T _ZN7__ubsan21IsVptrCheckSuppressedEPKc T _ZN7__ubsan21getSymbolizedLocationEm T +_ZN7__ubsan22GetSanititizerToolNameEv T _ZN7__ubsan22InitializeSuppressionsEv T _ZN7__ubsan27InitAsStandaloneIfNecessaryEv T _ZN7__ubsan28MaybeCallUbsanDefaultOptionsEv T _ZN7__ubsan28getDynamicTypeInfoFromObjectEPv T _ZN7__ubsan28getDynamicTypeInfoFromVtableEPv T +_ZN7__ubsan31GetStackTraceWithPcBpAndContextEPN11__sanitizer18BufferedStackTraceEmmmPvb T _ZN7__ubsan4DiagD1Ev T _ZN7__ubsan4DiagD2Ev T _ZN7__ubsan5Flags11SetDefaultsEv T @@ -27,10 +33,9 @@ __ubsan_default_options W __ubsan_handle_add_overflow T __ubsan_handle_add_overflow_abort T __ubsan_handle_builtin_unreachable T -__ubsan_handle_cfi_bad_icall T -__ubsan_handle_cfi_bad_icall_abort T __ubsan_handle_cfi_bad_type T -__ubsan_handle_cfi_bad_type_abort T +__ubsan_handle_cfi_check_fail T +__ubsan_handle_cfi_check_fail_abort T __ubsan_handle_divrem_overflow T __ubsan_handle_divrem_overflow_abort T __ubsan_handle_dynamic_type_cache_miss T @@ -39,6 +44,8 @@ __ubsan_handle_float_cast_overflow T __ubsan_handle_float_cast_overflow_abort T __ubsan_handle_function_type_mismatch T __ubsan_handle_function_type_mismatch_abort T +__ubsan_handle_invalid_builtin T +__ubsan_handle_invalid_builtin_abort T __ubsan_handle_load_invalid_value T __ubsan_handle_load_invalid_value_abort T __ubsan_handle_missing_return T @@ -48,16 +55,22 @@ __ubsan_handle_negate_overflow T __ubsan_handle_negate_overflow_abort T __ubsan_handle_nonnull_arg T __ubsan_handle_nonnull_arg_abort T -__ubsan_handle_nonnull_return T -__ubsan_handle_nonnull_return_abort T +__ubsan_handle_nonnull_return_v1 T +__ubsan_handle_nonnull_return_v1_abort T +__ubsan_handle_nullability_arg T +__ubsan_handle_nullability_arg_abort T +__ubsan_handle_nullability_return_v1 T +__ubsan_handle_nullability_return_v1_abort T __ubsan_handle_out_of_bounds T __ubsan_handle_out_of_bounds_abort T +__ubsan_handle_pointer_overflow T +__ubsan_handle_pointer_overflow_abort T __ubsan_handle_shift_out_of_bounds T __ubsan_handle_shift_out_of_bounds_abort T __ubsan_handle_sub_overflow T __ubsan_handle_sub_overflow_abort T -__ubsan_handle_type_mismatch T -__ubsan_handle_type_mismatch_abort T +__ubsan_handle_type_mismatch_v1 T +__ubsan_handle_type_mismatch_v1_abort T __ubsan_handle_vla_bound_not_positive T __ubsan_handle_vla_bound_not_positive_abort T __ubsan_vptr_type_cache B 1024 diff --git a/repos/libports/ports/sanitizer.hash b/repos/libports/ports/sanitizer.hash index 1e8b259cd7..76d672cd24 100644 --- a/repos/libports/ports/sanitizer.hash +++ b/repos/libports/ports/sanitizer.hash @@ -1 +1 @@ -4aee2386082411a02cfd9f34cb1af12caedea51e +181889c6d4af01eed6f89b2df496b83896d18034 diff --git a/repos/libports/ports/sanitizer.port b/repos/libports/ports/sanitizer.port index 3c3410ef16..f0fab556de 100644 --- a/repos/libports/ports/sanitizer.port +++ b/repos/libports/ports/sanitizer.port @@ -1,9 +1,9 @@ LICENSE := LGPL -VERSION := 6.3.0 +VERSION := 8.3.0 DOWNLOADS := sanitizer.archive -URL(sanitizer) := ftp://ftp.fu-berlin.de/gnu/gcc/gcc-$(VERSION)/gcc-$(VERSION).tar.bz2 -SHA(sanitizer) := f06ae7f3f790fbf0f018f6d40e844451e6bc3b7bc96e128e63b09825c1f8b29f +URL(sanitizer) := ftp://ftp.fu-berlin.de/gnu/gcc/gcc-$(VERSION)/gcc-$(VERSION).tar.xz +SHA(sanitizer) := 64baadfe6cc0f4947a84cb12d7f0dfaf45bb58b7e92461639596c21e02d97d2c DIR(sanitizer) := src/lib/sanitizer SIG(sanitizer) := ${URL(gcc)} KEY(sanitizer) := GNU diff --git a/repos/libports/src/lib/sanitizer/sanitizer.patch b/repos/libports/src/lib/sanitizer/sanitizer.patch index 8e56e730df..db78a5e2e6 100644 --- a/repos/libports/src/lib/sanitizer/sanitizer.patch +++ b/repos/libports/src/lib/sanitizer/sanitizer.patch @@ -4,24 +4,24 @@ From: Christian Prochaska --- - sanitizer_common/sanitizer_genode.cc | 332 ++++++++++++++++++++ + sanitizer_common/sanitizer_genode.cc | 330 ++++++++++++++++++++ sanitizer_common/sanitizer_internal_defs.h | 6 sanitizer_common/sanitizer_platform.h | 4 + sanitizer_common/sanitizer_posix.h | 2 sanitizer_common/sanitizer_printf.cc | 2 sanitizer_common/sanitizer_stacktrace.h | 2 - sanitizer_common/sanitizer_symbolizer_libcdep.cc | 5 - .../sanitizer_symbolizer_posix_libcdep.cc | 20 + + sanitizer_common/sanitizer_symbolizer_libcdep.cc | 10 - + .../sanitizer_symbolizer_posix_libcdep.cc | 31 +- ubsan/ubsan_diag.cc | 4 - ubsan/ubsan_type_hash_itanium.cc | 2 - 9 files changed, 366 insertions(+), 11 deletions(-) + 9 files changed, 376 insertions(+), 15 deletions(-) create mode 100644 sanitizer_common/sanitizer_genode.cc diff --git a/sanitizer_common/sanitizer_genode.cc b/sanitizer_common/sanitizer_genode.cc new file mode 100644 -index 0000000..1f549e5 +index 0000000..cd2bc92 --- /dev/null +++ b/sanitizer_common/sanitizer_genode.cc -@@ -0,0 +1,332 @@ +@@ -0,0 +1,330 @@ +/* + * \brief Genode-specific functions from sanitizer_common.h + * and sanitizer_libc.h @@ -41,9 +41,11 @@ index 0000000..1f549e5 +#include +#include + ++#include "sanitizer_common.h" ++#include "sanitizer_file.h" +#include "sanitizer_platform.h" + -+#include "sanitizer_common.h" ++using namespace __sanitizer; + + +extern int genode_atexit(void (*func)(void)); @@ -53,21 +55,27 @@ index 0000000..1f549e5 +static constexpr bool verbose = false; + + -+struct Sanitizer_env ++/* ++ * Cannot use 'Genode::Constructible' for the environment, because its ++ * constructor would need to be called before 'sanitizer_init()'. ++ */ ++ ++static Genode::Env *genode_env; ++ ++static Genode::Heap &heap() +{ -+ Genode::Env &env; -+ Genode::Heap heap { env.ram(), env.rm() }; ++ struct Sanitizer_not_initialized { }; ++ if (!genode_env) throw Sanitizer_not_initialized(); + -+ Sanitizer_env(Genode::Env &env) : env(env) { } -+}; -+ -+ -+static Genode::Constructible sanitizer_env; ++ static Genode::Heap instance(genode_env->ram(), genode_env->rm()); ++ return instance; ++} + + +void sanitizer_init(Genode::Env &env) +{ -+ sanitizer_env.construct(env); ++Genode::log("sanitizer_init()"); ++ genode_env = &env; +} + + @@ -87,6 +95,11 @@ index 0000000..1f549e5 +} + + ++uptr __sanitizer::GetThreadSelf() { ++ return 0; ++} ++ ++ +bool __sanitizer::SupportsColoredOutput(fd_t fd) +{ + if (fd == 2) @@ -110,13 +123,6 @@ index 0000000..1f549e5 +} + + -+bool __sanitizer::FileExists(const char *filename) -+{ -+ Genode::error("sanitizer: ", __func__, " called"); -+ return false; -+} -+ -+ +const char *__sanitizer::GetEnv(const char *name) +{ + if (verbose) @@ -184,15 +190,15 @@ index 0000000..1f549e5 +} + + -+void *__sanitizer::MmapOrDie(uptr size, const char *mem_type) ++void *__sanitizer::MmapOrDie(uptr size, const char *mem_type, bool raw_report) +{ + size = RoundUpTo(size, GetPageSizeCached()); + + void *res = nullptr; -+ sanitizer_env->heap.alloc(size, &res); ++ heap().alloc(size, &res); + + if (res == nullptr) -+ ReportMmapFailureAndDie(size, mem_type, "allocate", 0); ++ ReportMmapFailureAndDie(size, mem_type, "allocate", 0, raw_report); + + IncreaseTotalMmap(size); + return res; @@ -203,7 +209,7 @@ index 0000000..1f549e5 +{ + if (!addr || !size) return; + -+ sanitizer_env->heap.free(addr, size); ++ heap().free(addr, size); + + DecreaseTotalMmap(size); +} @@ -317,14 +323,6 @@ index 0000000..1f549e5 +} + + -+uptr __sanitizer::GetListOfModules(LoadedModule *modules, uptr max_modules, -+ string_predicate_t filter) -+{ -+ Genode::error("sanitizer: ", __func__, " called"); -+ return 0; -+} -+ -+ +/* sanitizer_libc.h */ + + @@ -355,7 +353,7 @@ index 0000000..1f549e5 + return false; +} diff --git a/sanitizer_common/sanitizer_internal_defs.h b/sanitizer_common/sanitizer_internal_defs.h -index d76ed75..bab2fdc 100644 +index edd6a21..a927498 100644 --- a/sanitizer_common/sanitizer_internal_defs.h +++ b/sanitizer_common/sanitizer_internal_defs.h @@ -13,6 +13,8 @@ @@ -367,20 +365,24 @@ index d76ed75..bab2fdc 100644 #ifndef SANITIZER_DEBUG # define SANITIZER_DEBUG 0 #endif -@@ -101,9 +103,9 @@ typedef uptr OFF_T; +@@ -152,13 +154,13 @@ typedef uptr OFF_T; typedef u64 OFF64_T; #if (SANITIZER_WORDSIZE == 64) || SANITIZER_MAC -typedef uptr operator_new_size_type; +typedef size_t operator_new_size_type; #else + # if defined(__s390__) && !defined(__s390x__) + // Special case: 31-bit s390 has unsigned long as size_t. + typedef unsigned long operator_new_size_type; + # else -typedef u32 operator_new_size_type; +typedef size_t operator_new_size_type; + # endif #endif - } // namespace __sanitizer diff --git a/sanitizer_common/sanitizer_platform.h b/sanitizer_common/sanitizer_platform.h -index 7d0ff28..e096ee9 100644 +index 1eb4d0c..95701c2 100644 --- a/sanitizer_common/sanitizer_platform.h +++ b/sanitizer_common/sanitizer_platform.h @@ -11,10 +11,12 @@ @@ -388,25 +390,41 @@ index 7d0ff28..e096ee9 100644 #define SANITIZER_PLATFORM_H +#if 0 - #if !defined(__linux__) && !defined(__FreeBSD__) && \ - !defined(__APPLE__) && !defined(_WIN32) + #if !defined(__linux__) && !defined(__FreeBSD__) && !defined(__NetBSD__) && \ + !defined(__APPLE__) && !defined(_WIN32) && !defined(__Fuchsia__) # error "This operating system is not supported" #endif +#endif #if defined(__linux__) # define SANITIZER_LINUX 1 -@@ -59,7 +61,7 @@ - # define SANITIZER_ANDROID 0 +@@ -90,7 +92,7 @@ #endif --#define SANITIZER_POSIX (SANITIZER_FREEBSD || SANITIZER_LINUX || SANITIZER_MAC) -+#define SANITIZER_POSIX (SANITIZER_FREEBSD || SANITIZER_LINUX || SANITIZER_MAC || 1) + #define SANITIZER_POSIX \ +- (SANITIZER_FREEBSD || SANITIZER_LINUX || SANITIZER_MAC || SANITIZER_NETBSD) ++ (SANITIZER_FREEBSD || SANITIZER_LINUX || SANITIZER_MAC || SANITIZER_NETBSD || 1) #if __LP64__ || defined(_WIN64) # define SANITIZER_WORDSIZE 64 +diff --git a/sanitizer_common/sanitizer_posix.h b/sanitizer_common/sanitizer_posix.h +index 9626654..2afbdc0 100644 +--- a/sanitizer_common/sanitizer_posix.h ++++ b/sanitizer_common/sanitizer_posix.h +@@ -80,9 +80,11 @@ int my_pthread_attr_getstack(void *attr, void **addr, uptr *size); + // A routine named real_sigaction() must be implemented by each sanitizer in + // order for internal_sigaction() to bypass interceptors. + int internal_sigaction(int signum, const void *act, void *oldact); ++#if 0 + void internal_sigfillset(__sanitizer_sigset_t *set); + void internal_sigemptyset(__sanitizer_sigset_t *set); + bool internal_sigismember(__sanitizer_sigset_t *set, int signum); ++#endif + + uptr internal_execve(const char *filename, char *const argv[], + char *const envp[]); diff --git a/sanitizer_common/sanitizer_printf.cc b/sanitizer_common/sanitizer_printf.cc -index 6688610..6efd98b 100644 +index 1456c76..d6d46b3 100644 --- a/sanitizer_common/sanitizer_printf.cc +++ b/sanitizer_common/sanitizer_printf.cc @@ -16,7 +16,9 @@ @@ -420,7 +438,7 @@ index 6688610..6efd98b 100644 #if SANITIZER_WINDOWS && defined(_MSC_VER) && _MSC_VER < 1800 && \ diff --git a/sanitizer_common/sanitizer_stacktrace.h b/sanitizer_common/sanitizer_stacktrace.h -index 7f22455..d16d758 100644 +index 31e99f6..47c7204 100644 --- a/sanitizer_common/sanitizer_stacktrace.h +++ b/sanitizer_common/sanitizer_stacktrace.h @@ -31,7 +31,7 @@ static const u32 kStackTraceMax = 256; @@ -433,7 +451,7 @@ index 7f22455..d16d758 100644 struct StackTrace { diff --git a/sanitizer_common/sanitizer_symbolizer_libcdep.cc b/sanitizer_common/sanitizer_symbolizer_libcdep.cc -index 4264b5e..52fc18d 100644 +index df93441..fd65874 100644 --- a/sanitizer_common/sanitizer_symbolizer_libcdep.cc +++ b/sanitizer_common/sanitizer_symbolizer_libcdep.cc @@ -9,6 +9,8 @@ @@ -445,25 +463,38 @@ index 4264b5e..52fc18d 100644 #include "sanitizer_allocator_internal.h" #include "sanitizer_internal_defs.h" #include "sanitizer_symbolizer_internal.h" -@@ -146,6 +148,8 @@ bool Symbolizer::FindModuleNameAndOffsetForAddress(uptr address, +@@ -167,7 +169,7 @@ void Symbolizer::RefreshModules() { + RAW_CHECK(modules_.size() > 0); + modules_fresh_ = true; } - - LoadedModule *Symbolizer::FindModuleForAddress(uptr address) { +- ++#if 0 + static const LoadedModule *SearchForModule(const ListOfModules &modules, + uptr address) { + for (uptr i = 0; i < modules.size(); i++) { +@@ -177,8 +179,11 @@ static const LoadedModule *SearchForModule(const ListOfModules &modules, + } + return nullptr; + } +- ++#endif + const LoadedModule *Symbolizer::FindModuleForAddress(uptr address) { + Genode::error("sanitizer: ", __func__, " called"); ++ return 0; +#if 0 bool modules_were_reloaded = false; if (!modules_fresh_) { - for (uptr i = 0; i < n_modules_; i++) -@@ -170,6 +174,7 @@ LoadedModule *Symbolizer::FindModuleForAddress(uptr address) { - modules_fresh_ = false; - return FindModuleForAddress(address); + RefreshModules(); +@@ -202,6 +207,7 @@ const LoadedModule *Symbolizer::FindModuleForAddress(uptr address) { + module = SearchForModule(fallback_modules_, address); } + return module; +#endif - return 0; } + // For now we assume the following protocol: diff --git a/sanitizer_common/sanitizer_symbolizer_posix_libcdep.cc b/sanitizer_common/sanitizer_symbolizer_posix_libcdep.cc -index e4ff525..793cbb1 100644 +index afd6bbe..9a34d2f 100644 --- a/sanitizer_common/sanitizer_symbolizer_posix_libcdep.cc +++ b/sanitizer_common/sanitizer_symbolizer_posix_libcdep.cc @@ -10,6 +10,9 @@ @@ -476,13 +507,14 @@ index e4ff525..793cbb1 100644 #include "sanitizer_platform.h" #if SANITIZER_POSIX #include "sanitizer_allocator_internal.h" -@@ -23,12 +26,12 @@ - #include "sanitizer_symbolizer_internal.h" +@@ -25,13 +28,14 @@ #include "sanitizer_symbolizer_libbacktrace.h" #include "sanitizer_symbolizer_mac.h" -- + +#if 0 + #include // for dlsym() #include + #include #include #include #include @@ -491,9 +523,40 @@ index e4ff525..793cbb1 100644 #if SANITIZER_MAC #include // for forkpty() #endif // SANITIZER_MAC -@@ -60,6 +63,10 @@ const char *DemangleCXXABI(const char *name) { - } +@@ -61,7 +65,7 @@ const char *DemangleCXXABI(const char *name) { + return name; + } +- ++#if 0 + // As of now, there are no headers for the Swift runtime. Once they are + // present, we will weakly link since we do not require Swift runtime to be + // linked. +@@ -92,14 +96,16 @@ const char *DemangleSwift(const char *name) { + + return nullptr; + } +- ++#endif + const char *DemangleSwiftAndCXX(const char *name) { + if (!name) return nullptr; ++#if 0 + if (const char *swift_demangled_name = DemangleSwift(name)) + return swift_demangled_name; ++#endif + return DemangleCXXABI(name); + } +- ++#if 0 + static bool CreateTwoHighNumberedPipes(int *infd_, int *outfd_) { + int *infd = NULL; + int *outfd = NULL; +@@ -139,8 +145,12 @@ static bool CreateTwoHighNumberedPipes(int *infd_, int *outfd_) { + outfd_[1] = outfd[1]; + return true; + } +- ++#endif bool SymbolizerProcess::StartSymbolizerSubprocess() { + Genode::error("sanitizer: ", __func__, " called"); + return false; @@ -502,7 +565,7 @@ index e4ff525..793cbb1 100644 if (!FileExists(path_)) { if (!reported_invalid_path_) { Report("WARNING: invalid path to external symbolizer!\n"); -@@ -182,6 +189,7 @@ bool SymbolizerProcess::StartSymbolizerSubprocess() { +@@ -246,6 +256,7 @@ bool SymbolizerProcess::StartSymbolizerSubprocess() { } return true; @@ -510,7 +573,7 @@ index e4ff525..793cbb1 100644 } class Addr2LineProcess : public SymbolizerProcess { -@@ -376,7 +384,7 @@ const char *Symbolizer::PlatformDemangle(const char *name) { +@@ -443,7 +454,7 @@ const char *Symbolizer::PlatformDemangle(const char *name) { } void Symbolizer::PlatformPrepareForSandboxing() {} @@ -519,7 +582,7 @@ index e4ff525..793cbb1 100644 static SymbolizerTool *ChooseExternalSymbolizer(LowLevelAllocator *allocator) { const char *path = common_flags()->external_symbolizer_path; const char *binary_name = path ? StripModuleName(path) : ""; -@@ -424,7 +432,7 @@ static SymbolizerTool *ChooseExternalSymbolizer(LowLevelAllocator *allocator) { +@@ -491,7 +502,7 @@ static SymbolizerTool *ChooseExternalSymbolizer(LowLevelAllocator *allocator) { } return nullptr; } @@ -528,7 +591,7 @@ index e4ff525..793cbb1 100644 static void ChooseSymbolizerTools(IntrusiveList *list, LowLevelAllocator *allocator) { if (!common_flags()->symbolize) { -@@ -441,11 +449,11 @@ static void ChooseSymbolizerTools(IntrusiveList *list, +@@ -510,11 +521,11 @@ static void ChooseSymbolizerTools(IntrusiveList *list, list->push_back(tool); return; } @@ -542,8 +605,18 @@ index e4ff525..793cbb1 100644 #if SANITIZER_MAC VReport(2, "Using dladdr symbolizer.\n"); list->push_back(new(*allocator) DlAddrSymbolizer()); +@@ -530,7 +541,9 @@ Symbolizer *Symbolizer::PlatformInit() { + + void Symbolizer::LateInitialize() { + Symbolizer::GetOrInit(); ++#if 0 + InitializeSwiftDemangler(); ++#endif + } + + } // namespace __sanitizer diff --git a/ubsan/ubsan_diag.cc b/ubsan/ubsan_diag.cc -index 1197f83..8ffa8fe 100644 +index 978d966..7d38a9b 100644 --- a/ubsan/ubsan_diag.cc +++ b/ubsan/ubsan_diag.cc @@ -20,7 +20,9 @@ @@ -556,27 +629,14 @@ index 1197f83..8ffa8fe 100644 using namespace __ubsan; -@@ -204,8 +206,10 @@ static void renderText(const char *Message, const Diag::Arg *Args) { +@@ -209,8 +211,10 @@ static void RenderText(InternalScopedString *Buffer, const char *Message, #if SANITIZER_WINDOWS - sprintf_s(Buffer, sizeof(Buffer), "%Lg", (long double)A.Float); + sprintf_s(FloatBuffer, sizeof(FloatBuffer), "%Lg", (long double)A.Float); #else +#if 0 - snprintf(Buffer, sizeof(Buffer), "%Lg", (long double)A.Float); + snprintf(FloatBuffer, sizeof(FloatBuffer), "%Lg", (long double)A.Float); #endif +#endif - Printf("%s", Buffer); - break; - } -diff --git a/ubsan/ubsan_type_hash_itanium.cc b/ubsan/ubsan_type_hash_itanium.cc -index e4f1334..57e78cd 100644 ---- a/ubsan/ubsan_type_hash_itanium.cc -+++ b/ubsan/ubsan_type_hash_itanium.cc -@@ -113,7 +113,7 @@ static __ubsan::HashValue *getTypeCacheHashTableBucket(__ubsan::HashValue V) { - static bool isDerivedFromAtOffset(const abi::__class_type_info *Derived, - const abi::__class_type_info *Base, - sptr Offset) { -- if (Derived->__type_name == Base->__type_name) -+ if (internal_strcmp(Derived->__type_name, Base->__type_name) == 0) - return Offset == 0; - - if (const abi::__si_class_type_info *SI = + Buffer->append("%s", FloatBuffer); + break; + }