llvm-project/llvm/unittests
Lang Hames e4b4ab6d26 [Support] Add error handling to sys::Process::getPageSize().
This patch changes the return type of sys::Process::getPageSize to
Expected<unsigned> to account for the fact that the underlying syscalls used to
obtain the page size may fail (see below).

For clients who use the page size as an optimization only this patch adds a new
method, getPageSizeEstimate, which calls through to getPageSize but discards
any error returned and substitues a "reasonable" page size estimate estimate
instead. All existing LLVM clients are updated to call getPageSizeEstimate
rather than getPageSize.

On Unix, sys::Process::getPageSize is implemented in terms of getpagesize or
sysconf, depending on which macros are set. The sysconf call is documented to
return -1 on failure. On Darwin getpagesize is implemented in terms of sysconf
and may also fail (though the manpage documentation does not mention this).
These failures have been observed in practice when highly restrictive sandbox
permissions have been applied. Without this patch, the result is that
getPageSize returns -1, which wreaks havoc on any subsequent code that was
assuming a sane page size value.

<rdar://problem/41654857>

Reviewers: dblaikie, echristo

Subscribers: kristina, llvm-commits

Tags: #llvm

Differential Revision: https://reviews.llvm.org/D59107

llvm-svn: 360221
2019-05-08 02:11:07 +00:00
..
ADT [WebAssembly] Test the "wasm32-wasi" triple 2019-04-30 23:04:49 +00:00
Analysis An unreachable block may have a route to a reachable block, don't fast-path return that it can't. 2019-04-04 23:09:40 +00:00
AsmParser Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
BinaryFormat [MsgPack] Removed MsgPackTypes 2019-03-13 18:56:33 +00:00
Bitcode Replace llvm::isPodLike<...> by llvm::is_trivially_copyable<...> 2019-01-20 21:19:56 +00:00
CodeGen [SelectionDAG] Use KnownBits::computeForAddSub/computeForAddCarry 2019-04-15 07:19:11 +00:00
DebugInfo [PDB] Fix hash function used to write /src/headerblock 2019-04-29 23:09:35 +00:00
Demangle Update more file headers across all of the LLVM projects in the monorepo 2019-01-19 10:56:40 +00:00
ExecutionEngine [ORC] Fix an ambiguous call in a unit test. 2019-04-30 02:43:01 +00:00
FuzzMutate Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
IR [ConstantRange] Add srem() support 2019-05-06 16:59:37 +00:00
LineEditor Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
Linker [opaque pointer types] Pass value type to LoadInst creation. 2019-02-01 20:44:24 +00:00
MC Change some StringRef::data() reinterpret_cast to bytes_begin() or arrayRefFromStringRef() 2019-04-07 03:58:42 +00:00
MI MachineModuleInfo: Store more specific reference to LLVMTargetMachine; NFC 2018-11-05 23:49:13 +00:00
Object Object/Minidump: Add support for the ThreadList stream 2019-05-02 07:45:42 +00:00
ObjectYAML Minidump: Add support for reading/writing strings 2019-04-05 08:06:26 +00:00
Option Option spell checking: Penalize delimiter flags if input has no argument 2019-05-01 16:45:15 +00:00
Passes Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
ProfileData [SampleFDO] add suffix elision control for fcn names 2019-03-14 13:56:49 +00:00
Remarks [Remarks] Add string deduplication using a string table 2019-04-24 00:06:24 +00:00
Support [Support] Add error handling to sys::Process::getPageSize(). 2019-05-08 02:11:07 +00:00
Target [WebAssembly] Exception handling: Switch to the new proposal 2019-01-30 03:21:57 +00:00
TextAPI [TextAPI] Prefix all architecture enums to fix the build on i386. 2019-04-04 22:56:50 +00:00
Transforms Fix compilation warnings when compiling with GCC 7.3 2019-05-06 13:41:54 +00:00
XRay Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
tools [X86] Merge the different CMOV instructions for each condition code into single instructions that store the condition code as an immediate. 2019-04-05 19:27:41 +00:00
CMakeLists.txt [OptRemarks] Make OptRemarks more generic: rename OptRemarks to Remarks 2019-03-05 20:45:17 +00:00
unittest.cfg.in Add support for unittest inputs. 2018-09-05 23:30:17 +00:00