llvm/lib/Support
Michael J. Spencer b9f39bcc82 Support ELF files of unknown type.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@222208 91177308-0d34-0410-b5e6-96231b3b80d8
2014-11-18 01:14:25 +00:00
..
Unix Revert 220932. 2014-11-05 04:44:31 +00:00
Windows silence gcc 4.9.1 warning in /llvm/lib/Support/Windows/Path.inc:564:39: 2014-11-17 09:29:33 +00:00
Allocator.cpp
APFloat.cpp Revert "r216914 - Revert: [APFloat] Fixed a bug in method 'fusedMultiplyAdd'" 2014-10-14 19:23:07 +00:00
APInt.cpp InstCombine: Don't miscompile (x lshr C1) udiv C2 2014-10-13 21:48:30 +00:00
APSInt.cpp
ARMBuildAttrs.cpp
ARMWinEH.cpp Support: add Windows ARM EH data structures 2014-06-02 01:17:49 +00:00
Atomic.cpp Fix .cpp files claiming to be header files 2014-06-20 01:36:00 +00:00
BlockFrequency.cpp
BranchProbability.cpp
circular_raw_ostream.cpp
CMakeLists.txt Merge StreamableMemoryObject into MemoryObject. 2014-11-12 03:55:46 +00:00
CommandLine.cpp Introduce LLVMParseCommandLineOptions C API function. 2014-10-16 22:47:52 +00:00
Compression.cpp
ConvertUTF.c Support/ConvertUTF: restore compatibility with MSVC, which only implements C89 2014-06-16 11:22:33 +00:00
ConvertUTFWrapper.cpp
COPYRIGHT.regex
CrashRecoveryContext.cpp For CrashRecoveryContext::RunSafelyOnThread, propagate Darwin's PRIO_DARWIN_BG to the new thread if it is 2014-06-25 23:54:50 +00:00
DAGDeltaAlgorithm.cpp
DataExtractor.cpp Using llvm::sys::swapByteOrder() for the common case of byte-swapping a value in place 2014-06-14 13:18:07 +00:00
DataStream.cpp Merge StreamableMemoryObject into MemoryObject. 2014-11-12 03:55:46 +00:00
Debug.cpp Removing static initializer from Debug.cpp by converting to a ManagedStatic. 2014-09-03 17:50:14 +00:00
DeltaAlgorithm.cpp
Dwarf.cpp Modernize doxygen comments in Support/Dwarf.h 2014-10-23 04:08:38 +00:00
DynamicLibrary.cpp Revert "Limit the symbol search in DynamicLibrary to the module that was opened." 2014-08-27 17:51:43 +00:00
Errno.cpp
ErrorHandling.cpp Converting the ErrorHandlerMutex to a ManagedStatic to avoid the static constructor and destructor. 2014-10-03 22:03:12 +00:00
FileOutputBuffer.cpp unique_ptrify FileOutputBuffer::FileOutputBuffer 2014-09-02 17:49:23 +00:00
FileUtilities.cpp Remove some calls to std::move. 2014-08-01 14:31:55 +00:00
FoldingSet.cpp
FormattedStream.cpp
GraphWriter.cpp Fix style. 2014-11-07 21:30:36 +00:00
Hashing.cpp
Host.cpp Add support for ppc64/power8 as a host 2014-06-26 13:37:03 +00:00
IntEqClasses.cpp
IntervalMap.cpp
IntrusiveRefCntPtr.cpp
IsInf.cpp
IsNAN.cpp
LEB128.cpp
LineIterator.cpp Add CRLF support to LineIterator. 2014-11-03 14:09:47 +00:00
LLVMBuild.txt
Locale.cpp
LockFileManager.cpp Misc cleanups to the FileSytem api. 2014-09-11 20:30:02 +00:00
Makefile Support: Inject LLVM_VERSION_INFO into the Support library 2014-06-17 06:52:47 +00:00
ManagedStatic.cpp Revert 220932. 2014-11-05 04:44:31 +00:00
MathExtras.cpp Fix llvm::huge_valf multiple initializations with Visual C++. 2014-09-27 14:41:29 +00:00
MD5.cpp Make the MD5 result name consistent between functions, header and source. 2014-10-06 13:48:07 +00:00
Memory.cpp
MemoryBuffer.cpp [Support] Add MemoryBuffer::getFileSlice() 2014-10-08 00:22:18 +00:00
MemoryObject.cpp Make readBytes pure virtual. Every real implementation has it. 2014-11-12 02:30:38 +00:00
Mutex.cpp
Options.cpp Defining a new API for debug options that doesn't rely on static global cl::opts. 2014-10-15 21:54:35 +00:00
Path.cpp Support ELF files of unknown type. 2014-11-18 01:14:25 +00:00
PluginLoader.cpp
PrettyStackTrace.cpp
Process.cpp Refactor the code in clang to find a file in a PATH like environment variable into a helper function 2014-06-30 19:54:20 +00:00
Program.cpp Fix .cpp files claiming to be header files 2014-06-20 01:36:00 +00:00
RandomNumberGenerator.cpp Random Number Generator (llvm) 2014-06-25 15:21:42 +00:00
raw_os_ostream.cpp
raw_ostream.cpp Support: Don't call close again if we get EINTR 2014-10-07 05:48:40 +00:00
README.txt.system
regcclass.h adding re-include guards into lib/Support/reg*.h 2014-06-12 16:07:56 +00:00
regcname.h adding re-include guards into lib/Support/reg*.h 2014-06-12 16:07:56 +00:00
regcomp.c
regengine.inc
regerror.c
regex2.h adding re-include guards into lib/Support/reg*.h 2014-06-12 16:07:56 +00:00
regex_impl.h
Regex.cpp
regexec.c
regfree.c
regstrlcpy.c
regutils.h adding re-include guards into lib/Support/reg*.h 2014-06-12 16:07:56 +00:00
RWMutex.cpp
ScaledNumber.cpp Fix undefined behavior (left shift by 64 bits) in ScaledNumber::toString(). 2014-08-20 18:30:07 +00:00
SearchForAddressOfSpecialSymbol.cpp
Signals.cpp
SmallPtrSet.cpp Fix an off by 1 bug that prevented SmallPtrSet from using all of its 'small' capacity. Then fix the early return in the move constructor that prevented 'small' moves from clearing the NumElements in the moved from object. The directed test missed this because it was always testing large moves due to the off by 1 bug. 2014-08-20 04:41:36 +00:00
SmallVector.cpp
SourceMgr.cpp Remove unnecessary .c_str() when implicitly converting to Twine 2014-11-06 01:13:27 +00:00
SpecialCaseList.cpp unique_ptrify the result of SpecialCaseList::create 2014-09-02 18:13:54 +00:00
Statistic.cpp
StreamingMemoryObject.cpp Fixing -Wtype-limits warnings with the asserts (the expression would always evaluate to true). Also fixing a -Wcast-qual warning, where the cast expression isn't required. 2014-11-13 13:55:13 +00:00
StringExtras.cpp
StringMap.cpp Recommit 211309 (StringMap::insert), reverted in 211328 due to issues with private, but non-deleted, move members. 2014-06-23 18:28:53 +00:00
StringPool.cpp Convert StringMapEntry::Create to use StringRef instead of start/end pointers. Simpliies all in tree call sites. No functional change. 2014-06-11 05:35:56 +00:00
StringRef.cpp Simplify creation of a bunch of ArrayRefs by using None, makeArrayRef or just letting them be implicitly created. 2014-08-27 05:25:25 +00:00
SystemUtils.cpp
TargetRegistry.cpp Remove obsolete function TargetRegistry::getClosestTargetForJIT() 2014-07-01 10:47:13 +00:00
Threading.cpp Revert 220932. 2014-11-05 04:44:31 +00:00
ThreadLocal.cpp
Timer.cpp Modernize raw_fd_ostream's constructor a bit. 2014-08-25 18:16:47 +00:00
TimeValue.cpp Cleaning up static initializers in TimeValue. 2014-08-29 01:05:12 +00:00
ToolOutputFile.cpp Modernize raw_fd_ostream's constructor a bit. 2014-08-25 18:16:47 +00:00
Triple.cpp Fix ARM triple parsing 2014-11-17 14:08:57 +00:00
Twine.cpp
Unicode.cpp
Valgrind.cpp
Watchdog.cpp
YAMLParser.cpp Fix some cases where StringRef was being passed by const reference. Remove const from some other StringRefs since its implicitly const already. 2014-08-30 16:48:02 +00:00
YAMLTraits.cpp Fix memory leak in error paths in YAMLTraits by using unique_ptr 2014-09-15 18:39:24 +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