llvm-project/llvm/lib/Support
Simon Tatham aab9e9de4d [Support,Windows] Tolerate failure of CryptGenRandom
Summary:
In `Unix/Process.inc`, we seed a random number generator from
`/dev/urandom` if possible, but if not, we're happy to fall back to
ordinary pseudorandom strategies, like the current time and PID.

The corresponding function on Windows calls `CryptGenRandom`, but it
//doesn't// have a fallback if that strategy fails. But `CryptGenRandom`
//can// fail, if a cryptography provider isn't properly initialized, or
occasionally (by our observation) simply intermittently.

If it's reasonable on Unix to implement traditional pseudorandom-number
seeding as a fallback, then it's surely reasonable to do the same on
Windows. So this patch adds a last-ditch use of ordinary rand(), using
much the same strategy as the Unix fallback code.

Reviewers: hans, sammccall

Reviewed By: hans

Subscribers: hiraditya, llvm-commits

Tags: #llvm

Differential Revision: https://reviews.llvm.org/D77553
2020-04-07 09:18:12 +01:00
..
Unix [Support] Delete ioctl TIOCGWINSZ 2020-03-31 16:41:09 -07:00
Windows [Support,Windows] Tolerate failure of CryptGenRandom 2020-04-07 09:18:12 +01:00
AArch64TargetParser.cpp [PATCH] [ARM] ARMv8.6-a command-line + BFloat16 Asm Support 2020-03-26 09:17:20 +00:00
ABIBreak.cpp Move LLVM_ENABLE_ABI_BREAKING_CHECKS variables to their own file 2019-09-10 22:05:01 +00:00
AMDGPUMetadata.cpp [AMDGPU] add support for hostcall buffer pointer as hidden kernel argument 2019-11-20 15:53:55 +05:30
APFloat.cpp Make IEEEFloat::roundToIntegral more standard conformant 2020-03-11 10:38:46 +07:00
APInt.cpp [APInt] byteSwap - handle any whole byte bitwidth greater than 16-bits 2020-02-15 13:27:06 +00:00
APSInt.cpp Explicitly include <cassert> when using assert 2020-03-02 22:45:28 +01:00
ARMAttributeParser.cpp [RISCV] ELF attribute section for RISC-V. 2020-03-31 16:16:19 +08:00
ARMBuildAttrs.cpp [RISCV] ELF attribute section for RISC-V. 2020-03-31 16:16:19 +08:00
ARMTargetParser.cpp [PATCH] [ARM] ARMv8.6-a command-line + BFloat16 Asm Support 2020-03-26 09:17:20 +00:00
ARMWinEH.cpp
Allocator.cpp Revert "[Support] Explicitly instantiate BumpPtrAllocatorImpl" 2020-01-18 09:33:00 -08:00
Atomic.cpp
BinaryStreamError.cpp
BinaryStreamReader.cpp BinaryStream - fix static analyzer warnings. NFCI. 2019-11-08 13:20:24 +00:00
BinaryStreamRef.cpp
BinaryStreamWriter.cpp [Support] Add LEB128 support to BinaryStreamReader/Writer. 2019-04-17 15:38:27 +00:00
BlockFrequency.cpp
BranchProbability.cpp [BranchProbability] Delete a redundant overflow check 2019-06-15 10:09:59 +00:00
BuryPointer.cpp
CMakeLists.txt [RISCV] ELF attribute section for RISC-V. 2020-03-31 16:16:19 +08:00
COM.cpp
COPYRIGHT.regex
CRC.cpp Revert abb00753 "build: reduce CMake handling for zlib" (PR44780) 2020-03-03 11:03:09 +01:00
CachePruning.cpp Rename F_{None,Text,Append} to OF_{None,Text,Append}. NFC 2019-08-05 05:43:48 +00:00
Chrono.cpp
CodeGenCoverage.cpp [llvm] Migrate llvm::make_unique to std::make_unique 2019-08-15 15:54:37 +00:00
CommandLine.cpp Make llvm::StringRef to std::string conversions explicit. 2020-01-28 23:25:25 +01:00
Compression.cpp Revert abb00753 "build: reduce CMake handling for zlib" (PR44780) 2020-03-03 11:03:09 +01:00
ConvertUTF.cpp
ConvertUTFWrapper.cpp [Support] Remove byte swapping from MathExtras.h 2020-02-27 17:23:48 -08:00
CrashRecoveryContext.cpp llvm-ar: Fix MinGW compilation 2020-02-28 09:59:24 +01:00
DAGDeltaAlgorithm.cpp
DJB.cpp Revert "Forward declare Optional<T> in STLExtras.h" 2019-11-13 16:36:21 -08:00
DataExtractor.cpp [llvm/Support] Make more DataExtractor methods error-aware 2020-04-06 14:14:11 +02:00
Debug.cpp Make llvm::StringRef to std::string conversions explicit. 2020-01-28 23:25:25 +01:00
DebugCounter.cpp Make llvm::StringRef to std::string conversions explicit. 2020-01-28 23:25:25 +01:00
DeltaAlgorithm.cpp
DynamicLibrary.cpp
ELFAttributeParser.cpp [RISCV] Support RISC-V ELF attributes sections in llvm-readobj. 2020-04-01 21:50:11 +08:00
ELFAttributes.cpp [RISCV] ELF attribute section for RISC-V. 2020-03-31 16:16:19 +08:00
Errno.cpp Remove some autoconf references from docs and comments 2019-07-03 09:57:59 +00:00
Error.cpp [Error] Remove a broken code fragment accidentally included in 76bcbaafab. 2019-11-20 17:50:22 -08:00
ErrorHandling.cpp Revert "Revert "Reland "[Support] make report_fatal_error `abort` instead of `exit`""" 2020-02-13 10:16:06 -08:00
FileCheck.cpp Revert "Remove redundant "std::move"s in return statements" 2020-02-10 07:07:40 -08:00
FileCheckImpl.h FileCheck [9/12]: Add support for matching formats 2020-01-24 14:15:28 +00:00
FileCollector.cpp Re-land "[FileCollector] Add a method to add a whole directory and it contents." 2020-03-30 13:19:18 -07:00
FileOutputBuffer.cpp [LLD][ELF] Support --[no-]mmap-output-file with F_no_mmap 2019-10-29 15:49:08 -07:00
FileUtilities.cpp Fix unused-variable warning 2020-03-02 11:55:53 -06:00
FoldingSet.cpp Drop a StringMap.h include, NFC 2020-03-11 15:45:34 -07:00
FormatVariadic.cpp Explicitly include <cassert> when using assert 2020-03-02 22:45:28 +01:00
FormattedStream.cpp Revert "[llvm-objdump] Display locations of variables alongside disassembly" 2020-03-16 14:04:25 -04:00
GlobPattern.cpp Reapply r375051: [support] GlobPattern: add support for `\` and `[!...]`, and allow `]` in more places 2019-10-17 18:09:05 +00:00
GraphWriter.cpp Make llvm::StringRef to std::string conversions explicit. 2020-01-28 23:25:25 +01:00
Hashing.cpp
Host.cpp [X86] Add SERIALIZE instruction. 2020-04-02 16:19:23 +08:00
InitLLVM.cpp llvm-ar: Fix MinGW compilation 2020-02-28 09:59:24 +01:00
IntEqClasses.cpp Explicitly include <cassert> when using assert 2020-03-02 22:45:28 +01:00
IntervalMap.cpp Explicitly include <cassert> when using assert 2020-03-02 22:45:28 +01:00
ItaniumManglingCanonicalizer.cpp Use std::foo_t rather than std::foo in LLVM. 2020-02-11 15:12:51 -08:00
JSON.cpp Revert "Remove redundant "std::move"s in return statements" 2020-02-10 07:07:40 -08:00
KnownBits.cpp Explicitly include <cassert> when using assert 2020-03-02 22:45:28 +01:00
LEB128.cpp
LLVMBuild.txt
LineIterator.cpp
Locale.cpp
LockFileManager.cpp Improve module.pcm lock file performance on machines with high core counts 2020-03-23 14:59:39 -07:00
LowLevelType.cpp Fix parameter name comments using clang-tidy. NFC. 2019-07-16 04:46:31 +00:00
MD5.cpp Avoid SmallString.h include in MD5.h, NFC 2020-02-26 09:10:24 -08:00
ManagedStatic.cpp [Support] Replace sys::Mutex with their standard equivalents. 2019-08-19 19:49:57 +00:00
MathExtras.cpp
Memory.cpp [Support] Renamed member 'Size' to 'AllocatedSize' in MemoryBlock and OwningMemoryBlock. 2019-05-20 20:53:05 +00:00
MemoryBuffer.cpp Avoid including FileSystem.h from MemoryBuffer.h 2020-02-29 12:30:23 -08:00
NativeFormatting.cpp Use std::foo_t rather than std::foo in LLVM. 2020-02-11 15:12:51 -08:00
OptimalLayout.cpp Make helpers static. NFC. 2020-03-24 13:43:00 +01:00
Optional.cpp
Parallel.cpp [lld][COFF][ELF][WebAssembly] Replace --[no-]threads /threads[:no] with --threads={1,2,...} /threads:{1,2,...} 2020-03-31 08:46:12 -07:00
Path.cpp [Support/Path] sys::path::replace_path_prefix fix and simplifications 2020-04-03 13:50:23 -04:00
PluginLoader.cpp
PrettyStackTrace.cpp Move setBugReportMsg() out from under a conditional 2020-03-26 16:39:03 -07:00
Process.cpp [Clang][Driver] After default -fintegrated-cc1, make llvm::report_fatal_error() generate preprocessed source + reproducer.sh again. 2020-02-11 10:17:30 -05:00
Program.cpp
RISCVAttributeParser.cpp [RISCV] ELF attribute section for RISC-V. 2020-03-31 16:16:19 +08:00
RISCVAttributes.cpp [RISCV] ELF attribute section for RISC-V. 2020-03-31 16:16:19 +08:00
RWMutex.cpp [RWMutex] Simplify availability check 2019-08-16 21:25:40 +00:00
RandomNumberGenerator.cpp llvm-ar: Fix MinGW compilation 2020-02-28 09:59:24 +01:00
Regex.cpp Explicitly include <cassert> when using assert 2020-03-02 22:45:28 +01:00
SHA1.cpp [Support] Optimize SHA1 implementation 2019-11-11 22:14:28 -08:00
ScaledNumber.cpp
ScopedPrinter.cpp
Signals.cpp Make llvm::StringRef to std::string conversions explicit. 2020-01-28 23:25:25 +01:00
Signposts.cpp [Support] Fix Wundef warning 2019-08-15 10:05:22 +00:00
SmallPtrSet.cpp
SmallVector.cpp
SourceMgr.cpp Make llvm::StringRef to std::string conversions explicit. 2020-01-28 23:25:25 +01:00
SpecialCaseList.cpp Make llvm::StringRef to std::string conversions explicit. 2020-01-28 23:25:25 +01:00
Statistic.cpp Statistic - Fix MSVC shadow warning against global PrintOnExit static variable. NFC. 2019-11-21 12:08:01 +00:00
StringExtras.cpp Print quoted backslashes in LLVM IR as \\ instead of \5C 2019-10-10 18:31:57 +00:00
StringMap.cpp
StringPool.cpp Explicitly include <cassert> when using assert 2020-03-02 22:45:28 +01:00
StringRef.cpp [APFloat] Fix checked error assert failures 2020-01-09 09:42:32 +02:00
StringSaver.cpp
SymbolRemappingReader.cpp
SystemUtils.cpp
TarWriter.cpp Make llvm::StringRef to std::string conversions explicit. 2020-01-28 23:25:25 +01:00
TargetParser.cpp [NFC] Fixes -Wrange-loop-analysis warnings 2020-01-01 20:01:37 +01:00
TargetRegistry.cpp
ThreadLocal.cpp
ThreadPool.cpp [Support] On Windows, ensure hardware_concurrency() extends to all CPU sockets and all NUMA groups 2020-02-14 10:24:22 -05:00
Threading.cpp After 09158252f7, fix build when -DLLVM_ENABLE_THREADS=OFF 2020-03-28 13:54:58 -04:00
TimeProfiler.cpp Refactor TimeProfiler write methods (NFC) 2020-03-06 14:34:56 -08:00
Timer.cpp [Clang][Driver] In -fintegrated-cc1 mode, avoid crashing on exit after a compiler crash 2020-03-13 08:15:35 -04:00
ToolOutputFile.cpp Make llvm::StringRef to std::string conversions explicit. 2020-01-28 23:25:25 +01:00
TrigramIndex.cpp
Triple.cpp [PATCH] [ARM] ARMv8.6-a command-line + BFloat16 Asm Support 2020-03-26 09:17:20 +00:00
Twine.cpp
Unicode.cpp
UnicodeCaseFold.cpp
Valgrind.cpp
VersionTuple.cpp Explicitly include <cassert> when using assert 2020-03-02 22:45:28 +01:00
VirtualFileSystem.cpp [VirtualFileSystem] Support directory entries in the YAMLVFSWriter 2020-03-27 15:16:52 -07:00
Watchdog.cpp
WithColor.cpp [Debuginfo][NFC] Create common error handlers for DWARFContext. 2020-02-15 12:46:17 +03:00
YAMLParser.cpp [YAMLParser] Scanner::setError - ensure we use the StringRef::iterator argument (PR45043) 2020-04-03 18:55:38 +01:00
YAMLTraits.cpp [NFC] Corrected a minor typo in a comment 2020-02-21 13:56:44 +01:00
Z3Solver.cpp [llvm] Migrate llvm::make_unique to std::make_unique 2019-08-15 15:54:37 +00:00
circular_raw_ostream.cpp
raw_os_ostream.cpp
raw_ostream.cpp [Support] Change isatty to is_displayed 2020-03-16 18:27:43 -07:00
regcomp.c Allow Compiler.h to be included in C files and fix fallthrough warnings 2019-08-23 17:25:21 +00:00
regengine.inc
regerror.c
regex2.h
regex_impl.h
regexec.c
regfree.c
regstrlcpy.c
regutils.h
xxhash.cpp