sanitizer: update to version 8.3.0

Issue #3307
This commit is contained in:
Christian Prochaska 2019-04-04 20:00:28 +02:00 committed by Christian Helmuth
parent 720919bc14
commit 8e2e4374f5
8 changed files with 232 additions and 184 deletions

View File

@ -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 */

View File

@ -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)

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -1 +1 @@
4aee2386082411a02cfd9f34cb1af12caedea51e
181889c6d4af01eed6f89b2df496b83896d18034

View File

@ -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

View File

@ -4,24 +4,24 @@ From: Christian Prochaska <christian.prochaska@genode-labs.com>
---
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 <base/log.h>
+#include <base/buffered_output.h>
+
+#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> 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 <dlfcn.h> // for dlsym()
#include <errno.h>
#include <stdint.h>
#include <stdlib.h>
#include <sys/wait.h>
#include <unistd.h>
@ -491,9 +523,40 @@ index e4ff525..793cbb1 100644
#if SANITIZER_MAC
#include <util.h> // 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<SymbolizerTool> *list,
LowLevelAllocator *allocator) {
if (!common_flags()->symbolize) {
@@ -441,11 +449,11 @@ static void ChooseSymbolizerTools(IntrusiveList<SymbolizerTool> *list,
@@ -510,11 +521,11 @@ static void ChooseSymbolizerTools(IntrusiveList<SymbolizerTool> *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;
}