llvm-6502/lib/Support
Daniel Dunbar e179b31bfc [conf] Add config variable to disable crash related overrides.
- We do some nasty things w.r.t. installing or overriding signal handlers in
   order to improve our crash recovery support or interaction with crash
   reporting software, and those things are not necessarily appropriate when
   LLVM is being linked into a client application that has its own ideas about
   how to do things. This gives those clients a way to disable that handling at
   build time.

 - Currently, the code this guards is all Apple specific, but other platforms
   might have the same concerns so I went for a more generic configure
   name. Someone who is more familiar with library embedding on Windows can
   handle choosing which of the Windows/Signals.inc behaviors might make sense
   to go under this flag.

 - This also fixes the proper autoconf'ing of ENABLE_BACKTRACES. The code
   expects it to be undefined when disabled, but the autoconf check was just
   defining it to 0.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@189694 91177308-0d34-0410-b5e6-96231b3b80d8
2013-08-30 20:39:21 +00:00
..
Unix [conf] Add config variable to disable crash related overrides. 2013-08-30 20:39:21 +00:00
Windows [Win32] mapped_file_region: Fix a bug in CreateFileMapping() that Size must contain Offset when Offset >= 65536. 2013-08-22 15:14:53 +00:00
Allocator.cpp [BumpPtrAllocator] Move DefaultSlabAllocator to a member of BumpPtrAllocator, instead of a static variable. 2013-08-28 01:02:21 +00:00
APFloat.cpp Change default # of digits for APFloat::toString 2013-08-29 23:44:34 +00:00
APInt.cpp APInt: Simplify code. No functionality change. 2013-06-01 11:26:39 +00:00
APSInt.cpp
Atomic.cpp
BlockFrequency.cpp Fix a bad overflow check pointed out by Ben. 2013-06-28 21:51:18 +00:00
BranchProbability.cpp
circular_raw_ostream.cpp
CMakeLists.txt Rename PathV2 to just Path now that it is the only one. 2013-06-26 19:33:03 +00:00
CommandLine.cpp Implement TokenizeWindowsCommandLine. 2013-07-30 19:03:20 +00:00
Compression.cpp Expose CRC-32 implementation from zlib 2013-08-14 16:03:29 +00:00
ConstantRange.cpp Don't use a potentially expensive shift if all we want is one set bit. 2013-07-11 16:05:50 +00:00
ConvertUTF.c
ConvertUTFWrapper.cpp [Support] Add a Unicode conversion wrapper from UTF16 to UTF8 2013-07-16 17:14:33 +00:00
COPYRIGHT.regex
CrashRecoveryContext.cpp [Support/CrashRecoveryContext] Make sure CrashRecoveryContext does not clear the thread-local "CurrentContext" 2013-06-19 22:53:45 +00:00
DAGDeltaAlgorithm.cpp
DataExtractor.cpp
DataStream.cpp Add a wrapper for open. 2013-07-16 19:44:17 +00:00
Debug.cpp
DeltaAlgorithm.cpp
Disassembler.cpp Remove some std stream usage from Support and TableGen 2013-08-06 22:51:21 +00:00
Dwarf.cpp Add DW_AT_GNU_odr_signature to the set of dwarf attributes. 2013-07-14 22:02:31 +00:00
DynamicLibrary.cpp
Errno.cpp Remove dead or useless header checks from cmake and autoconf 2013-07-26 16:54:23 +00:00
ErrorHandling.cpp [Support] Fix some warnings when self-hosting clang on Windows 2013-07-16 14:04:08 +00:00
FileOutputBuffer.cpp Create files with the correct permission instead of changing it afterwards. 2013-07-08 15:22:09 +00:00
FileUtilities.cpp MemoryBuffer::getFile handles zero sized files, no need to duplicate the test. 2013-07-10 17:30:39 +00:00
FoldingSet.cpp
FormattedStream.cpp Add line tracking support to FormattedStream 2013-05-08 20:29:10 +00:00
GraphWriter.cpp Find xdot or xdot.py. 2013-07-08 20:24:54 +00:00
Hashing.cpp
Host.cpp X86: Add a description of the Intel Atom Silvermont CPU. 2013-08-30 14:05:32 +00:00
IncludeFile.cpp
IntEqClasses.cpp
IntervalMap.cpp
IntrusiveRefCntPtr.cpp
IsInf.cpp
IsNAN.cpp
LLVMBuild.txt
Locale.cpp
LocaleGeneric.inc isCharInSet refactoring. 2013-08-29 12:12:13 +00:00
LocaleWindows.inc
LocaleXlocale.inc
LockFileManager.cpp Fix boolean logic in LockFileManager and test it 2013-08-07 01:22:04 +00:00
Makefile
ManagedStatic.cpp
MD5.cpp Add support for adding the contents of a StringRef to the MD5 hash. 2013-05-31 22:34:56 +00:00
Memory.cpp
MemoryBuffer.cpp MemoryBuffer.cpp: Consider if PageSize were not 4096 in shouldUseMmap(). Follow-up to r188903. 2013-08-22 10:23:52 +00:00
MemoryObject.cpp Remove the Copied parameter from MemoryObject::readBytes. 2013-05-24 10:54:58 +00:00
Mutex.cpp
Path.cpp Fixes a bug when iterating on paths 2013-08-12 17:10:49 +00:00
PluginLoader.cpp
PrettyStackTrace.cpp
Process.cpp
Program.cpp Replace use of PathV1.h in Program.cpp. 2013-06-14 19:38:45 +00:00
raw_os_ostream.cpp
raw_ostream.cpp raw_ostream.cpp: Introduce <fcntl.h> to let O_BINARY provided. Or, llvm::outs() would be set to O_TEXT by default. 2013-07-17 02:21:10 +00:00
README.txt.system
regcclass.h
regcname.h
regcomp.c
regengine.inc
regerror.c
regex2.h
regex_impl.h
Regex.cpp Fix off-by-one error in Regex::isValid 2013-08-08 17:32:45 +00:00
regexec.c
regfree.c
regstrlcpy.c
regutils.h
RWMutex.cpp
SearchForAddressOfSpecialSymbol.cpp
Signals.cpp
SmallPtrSet.cpp
SmallVector.cpp
SourceMgr.cpp Fix size_t -> uint warnings with MSVC 64-bit build 2013-07-20 00:20:10 +00:00
Statistic.cpp
StreamableMemoryObject.cpp Remove the Copied parameter from MemoryObject::readBytes. 2013-05-24 10:54:58 +00:00
StringExtras.cpp
StringMap.cpp
StringPool.cpp
StringRef.cpp Added const qualifier to StringRef::edit_distance member function 2013-08-24 01:50:41 +00:00
StringRefMemoryObject.cpp Remove the Copied parameter from MemoryObject::readBytes. 2013-05-24 10:54:58 +00:00
system_error.cpp
SystemUtils.cpp Move PrependMainExecutablePath next to its only user. 2013-06-14 15:12:13 +00:00
TargetRegistry.cpp
Threading.cpp
ThreadLocal.cpp
Timer.cpp Add a wrapper for open. 2013-07-16 19:44:17 +00:00
TimeValue.cpp
ToolOutputFile.cpp Add a wrapper for open. 2013-07-16 19:44:17 +00:00
Triple.cpp [PowerPC] Support powerpc64le as a syntax-checking target. 2013-07-26 01:35:43 +00:00
Twine.cpp
Valgrind.cpp
Watchdog.cpp
YAMLParser.cpp Add ArrayRef constructor from None, and do the cleanups that this constructor enables 2013-05-05 00:40:33 +00:00
YAMLTraits.cpp Tighten up the yamilizer so it stops eliding empty sequences if the embedded empty sequence is the first key/value in a map which is itself in a sequence. 2013-08-15 23:17:53 +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