llvm/lib/Support
George Rimar 4a6a534c0c [Support/Compression] - Change zlib API to return Error instead of custom status.
Previously API returned custom enum values.
Patch changes it to return Error with string description.
That should help users to report errors in universal way.

Differential revision: https://reviews.llvm.org/D28684

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@292214 91177308-0d34-0410-b5e6-96231b3b80d8
2017-01-17 13:20:17 +00:00
..
Unix Revert "Use _Unwind_Backtrace on Apple platforms." 2017-01-06 02:26:33 +00:00
Windows Add missing includes on Windows. 2016-12-21 18:50:52 +00:00
Allocator.cpp
APFloat.cpp [ADT] APFloatBase: Prevent collapsing semPPCDoubleDouble and semBogus 2017-01-03 16:33:50 +00:00
APInt.cpp Typo 2017-01-05 17:59:22 +00:00
APSInt.cpp Remove some unneeded headers and replace some headers with forward class declarations (NFC) 2016-04-16 07:51:28 +00:00
ARMAttributeParser.cpp Revert r291903 and r291898. Reason: they break check-lld on the bots. 2017-01-13 16:45:15 +00:00
ARMBuildAttrs.cpp Use StringRef instead of raw pointers in ARMBuildAttrs (NFC) 2016-10-05 00:15:18 +00:00
ARMWinEH.cpp
Atomic.cpp Remove all of the legacy home-grown atomic operations LLVM provided 2016-06-02 17:11:11 +00:00
BlockFrequency.cpp
BranchProbability.cpp
CachePruning.cpp Remove TimeValue usage from llvm/Support 2016-10-24 10:59:17 +00:00
Chrono.cpp Reapply "Add Chrono.h - std::chrono support header" 2016-10-20 12:05:50 +00:00
circular_raw_ostream.cpp
CMakeLists.txt [ARM] Moved ARMAttributeParser to Support 2017-01-13 10:50:01 +00:00
COM.cpp
CommandLine.cpp CommandLine option: Relax the assertion introduced in r290467 to allows for empty string 2017-01-08 22:30:43 +00:00
Compression.cpp [Support/Compression] - Change zlib API to return Error instead of custom status. 2017-01-17 13:20:17 +00:00
ConvertUTF.cpp Move UTF functions into namespace llvm. 2016-09-30 00:38:45 +00:00
ConvertUTFWrapper.cpp [NFC] Header cleanup 2016-04-18 09:17:29 +00:00
COPYRIGHT.regex
CrashRecoveryContext.cpp Revert "Fix Clang-tidy modernize-deprecated-headers warnings in remaining files; other minor fixes." 2016-04-05 20:45:04 +00:00
DAGDeltaAlgorithm.cpp
DataExtractor.cpp
Debug.cpp Attempt to fix build bot after r290597 2016-12-27 10:24:58 +00:00
DeltaAlgorithm.cpp Missing includes. 2016-09-14 08:55:18 +00:00
Dwarf.cpp [DIExpression] Introduce a dedicated DW_OP_LLVM_fragment operation 2016-12-05 18:04:47 +00:00
DynamicLibrary.cpp [Support] Use HAVE_DLOPEN to guard dlopen(3) usage 2016-11-30 15:34:29 +00:00
Errno.cpp Revert "Fix Clang-tidy modernize-deprecated-headers warnings in remaining files; other minor fixes." 2016-04-05 20:45:04 +00:00
Error.cpp Fix a linefeed at eof. 2016-11-29 17:32:43 +00:00
ErrorHandling.cpp [Support] Make all Errors convertible to std::error_code. 2016-03-23 23:57:28 +00:00
FileOutputBuffer.cpp Support outputting to /dev/null. 2017-01-09 21:52:35 +00:00
FileUtilities.cpp Fix some Clang-tidy modernize-use-using and Include What You Use warnings; other minor fixes. 2016-08-23 17:14:32 +00:00
FoldingSet.cpp PR30711: Fix incorrect profiling of 'long long' in FoldingSet, then use it to 2016-10-16 17:49:09 +00:00
FormattedStream.cpp
FormatVariadic.cpp [Support] Introduce llvm::formatv() function. 2016-11-11 23:57:40 +00:00
GlobPattern.cpp Move GlobPattern class from LLD to llvm/Support. 2016-12-20 23:09:09 +00:00
GraphWriter.cpp
Hashing.cpp
Host.cpp AMD family 17h (znver1) enablement 2017-01-10 06:01:16 +00:00
IntEqClasses.cpp Remove uses of builtin comma operator. 2016-02-18 22:09:30 +00:00
IntervalMap.cpp
JamCRC.cpp [NFC] Header cleanup 2016-04-18 09:17:29 +00:00
LEB128.cpp
LineIterator.cpp
LLVMBuild.txt Add an c++ itanium demangler to llvm. 2016-09-06 19:16:48 +00:00
Locale.cpp [NFC] Header cleanup 2016-04-18 09:17:29 +00:00
LockFileManager.cpp Missing includes. 2016-09-14 08:55:18 +00:00
ManagedStatic.cpp [ManagedStatic] Reimplement double-checked locking with std::atomic. 2016-06-29 15:04:07 +00:00
MathExtras.cpp Revert "Fix Clang-tidy modernize-deprecated-headers warnings in remaining files; other minor fixes." 2016-04-05 20:45:04 +00:00
MD5.cpp [MD5] Use write32le instead of spelling it out with shifts. 2016-11-23 11:49:28 +00:00
Memory.cpp
MemoryBuffer.cpp Add interface to compute number of physical cores on host system 2016-10-13 17:43:20 +00:00
Mutex.cpp Revert "Fix Clang-tidy modernize-deprecated-headers warnings in remaining files; other minor fixes." 2016-04-05 20:45:04 +00:00
NativeFormatting.cpp Remove dead variable Len. 2017-01-04 19:47:10 +00:00
Options.cpp
Path.cpp Define sys::path::convert_to_slash 2017-01-09 01:47:15 +00:00
PluginLoader.cpp
PrettyStackTrace.cpp Include <cstdarg> in PrettyStackTrace.cpp, fixing the bots. 2016-12-14 19:19:53 +00:00
Process.cpp [Support] Creation of minidump after compiler crash on Windows 2016-05-04 16:56:51 +00:00
Program.cpp
RandomNumberGenerator.cpp [Support] Fix undefined behavior in RandomNumberGenerator. 2016-10-11 18:17:26 +00:00
raw_os_ostream.cpp
raw_ostream.cpp Re-commit r289184, "Support: Use a 64-bit seek in raw_fd_ostream::seek()." with a configure-time check for lseek64. 2016-12-09 05:20:43 +00:00
README.txt.system
regcclass.h
regcname.h
regcomp.c
regengine.inc
regerror.c
regex2.h
regex_impl.h
Regex.cpp [Support] - Fix possible crash in match() of llvm::Regex. 2016-09-02 08:44:46 +00:00
regexec.c
regfree.c
regstrlcpy.c
regutils.h
RWMutex.cpp Revert "Fix Clang-tidy modernize-deprecated-headers warnings in remaining files; other minor fixes." 2016-04-05 20:45:04 +00:00
ScaledNumber.cpp Replace APFloatBase static fltSemantics data members with getter functions 2016-12-14 11:57:17 +00:00
ScopedPrinter.cpp [Support] Improve flexibility of binary blob formatter. 2016-11-10 20:16:45 +00:00
SearchForAddressOfSpecialSymbol.cpp Revert "Fix Clang-tidy modernize-deprecated-headers warnings in remaining files; other minor fixes." 2016-04-05 20:45:04 +00:00
SHA1.cpp Fix builbots. 2016-11-23 03:58:12 +00:00
Signals.cpp Search for llvm-symbolizer binary in the same directory as argv[0], before 2016-06-09 00:53:21 +00:00
SmallPtrSet.cpp [SmallPtrSet] Introduce a find primitive and rewrite count/erase in terms of it 2016-12-31 02:33:22 +00:00
SmallVector.cpp
SourceMgr.cpp Use StringRef for MemoryBuffer identifier API (NFC) 2016-10-01 16:38:28 +00:00
SpecialCaseList.cpp Use trigrams to speed up SpecialCaseList. 2016-12-01 02:54:54 +00:00
Statistic.cpp Statistic/Timer: Include timers in PrintStatisticsJSON(). 2016-11-18 19:43:24 +00:00
StringExtras.cpp
StringMap.cpp Fix some Clang-tidy modernize-use-using and Include What You Use warnings; other minor fixes. 2016-08-23 17:14:32 +00:00
StringPool.cpp
StringRef.cpp Tweak the core loop in StringRef::find to avoid calling memcmp on every 2016-12-11 07:46:21 +00:00
StringSaver.cpp Use StringRef in StringSaver API (NFC) 2016-10-05 01:32:41 +00:00
SystemUtils.cpp
TargetParser.cpp [ARM]: Add Cortex-R52 target to LLVM 2016-10-07 12:06:40 +00:00
TargetRegistry.cpp Revert "Use StringRef instead of raw pointer in TargetRegistry API (NFC)" 2016-10-01 07:08:23 +00:00
TarWriter.cpp TarWriter: Fix a bug in Ustar header. 2017-01-09 22:55:00 +00:00
Threading.cpp Rename interface for querying physical hardware concurrency 2016-10-17 14:56:53 +00:00
ThreadLocal.cpp
ThreadPool.cpp [ThreadPool] Rollback recent changes until I figure out the breakage. 2016-11-28 09:17:12 +00:00
Timer.cpp Statistic/Timer: Include timers in PrintStatisticsJSON(). 2016-11-18 19:43:24 +00:00
ToolOutputFile.cpp
TrigramIndex.cpp Support escaping in TrigramIndex. 2016-12-02 23:30:16 +00:00
Triple.cpp Revert "[Triple] Add Facebook vendor" 2016-11-23 19:03:54 +00:00
Twine.cpp Add support for formatv to llvm::Twine. 2016-12-17 00:38:15 +00:00
Unicode.cpp
Valgrind.cpp
Watchdog.cpp
xxhash.cpp Add xxhash to llvm. 2016-09-27 15:45:57 +00:00
YAMLParser.cpp Improve error handling in YAML parsing 2016-11-28 21:38:52 +00:00
YAMLTraits.cpp YAML: Remove Input::MapHNode::isValidKey(), use llvm::is_contained() instead. NFC. 2017-01-04 20:10:43 +00:00

Design Of lib/System
====================

The software in this directory is designed to completely shield LLVM from any
and all operating system specific functionality. It is not intended to be a
complete operating system wrapper (such as ACE), but only to provide the
functionality necessary to support LLVM.

The software located here, of necessity, has very specific and stringent design
rules. Violation of these rules means that cracks in the shield could form and
the primary goal of the library is defeated. By consistently using this library,
LLVM becomes more easily ported to new platforms since the only thing requiring
porting is this library.

Complete documentation for the library can be found in the file:
  llvm/docs/SystemLibrary.html
or at this URL:
  http://llvm.org/docs/SystemLibrary.html

While we recommend that you read the more detailed documentation, for the
impatient, here's a high level summary of the library's requirements.

 1. No system header files are to be exposed through the interface.
 2. Std C++ and Std C header files are okay to be exposed through the interface.
 3. No exposed system-specific functions.
 4. No exposed system-specific data.
 5. Data in lib/System classes must use only simple C++ intrinsic types.
 6. Errors are handled by returning "true" and setting an optional std::string
 7. Library must not throw any exceptions, period.
 8. Interface functions must not have throw() specifications.
 9. No duplicate function impementations are permitted within an operating
    system class.

To accomplish these requirements, the library has numerous design criteria that
must be satisfied. Here's a high level summary of the library's design criteria:

 1. No unused functionality (only what LLVM needs)
 2. High-Level Interfaces
 3. Use Opaque Classes
 4. Common Implementations
 5. Multiple Implementations
 6. Minimize Memory Allocation
 7. No Virtual Methods