llvm-6502/lib/Support
Benjamin Kramer e7a0719161 Fix handling of the From parameter in StringRef::find.
Enable bounds checking to catch this kind of bug earlier.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142247 91177308-0d34-0410-b5e6-96231b3b80d8
2011-10-17 20:49:40 +00:00
..
Unix sys::Process: Add a SetWorkingDirectory method. 2011-09-23 23:23:36 +00:00
Windows Revert r142046, "Fix for llvm::sys::getHostTriple on Windows. Instead of relying on the triple" 2011-10-15 04:29:36 +00:00
Allocator.cpp
APFloat.cpp Fix APFloat::getSmallestNormalized so the shift doesn't depend on undefined behavior. Patch from Ahmed Charles. 2011-10-12 21:56:19 +00:00
APInt.cpp Fix APInt::operator*= so that it computes the correct result for large integers where there is unsigned overflow. Fix APFloat::toString so that it doesn't depend on the incorrect behavior in common cases (and computes the correct result in some rare cases). Fixes PR11086. 2011-10-07 23:40:49 +00:00
APSInt.cpp
Atomic.cpp Rename LLVM_MULTITHREADED define and fix build without threads. 2011-09-19 20:43:23 +00:00
BlockFrequency.cpp
BranchProbability.cpp
circular_raw_ostream.cpp
CMakeLists.txt
CommandLine.cpp CommandLine: Add support for 64 bit unsigned integer options. 2011-09-15 21:17:37 +00:00
ConstantRange.cpp Change: 2011-09-21 03:09:09 +00:00
COPYRIGHT.regex
CrashRecoveryContext.cpp
DAGDeltaAlgorithm.cpp
DataExtractor.cpp
Debug.cpp
DeltaAlgorithm.cpp
Disassembler.cpp Clean up a few references to System/. We still have docs/SystemLibrary.html 2011-10-11 20:02:52 +00:00
Dwarf.cpp Add some more DWARF extensions from: 2011-09-15 05:21:03 +00:00
DynamicLibrary.cpp
Errno.cpp
ErrorHandling.cpp
FileUtilities.cpp
FoldingSet.cpp
FormattedStream.cpp
GraphWriter.cpp
Host.cpp
IncludeFile.cpp Clean up a few references to System/. We still have docs/SystemLibrary.html 2011-10-11 20:02:52 +00:00
IntEqClasses.cpp
IntervalMap.cpp
IsInf.cpp
IsNAN.cpp
Makefile
ManagedStatic.cpp
Memory.cpp The Mips specific function for instruction cache invalidation cannot be 2011-10-10 18:41:02 +00:00
MemoryBuffer.cpp use 64-bit types instead of off_t/size_t to avoid the issue when 2011-09-15 23:13:00 +00:00
MemoryObject.cpp
Mutex.cpp Clean up a few references to System/. We still have docs/SystemLibrary.html 2011-10-11 20:02:52 +00:00
Path.cpp
PathV2.cpp Fix a minor bug in fs::create_directories. Patch by Albert Wong. 2011-09-16 18:36:31 +00:00
PluginLoader.cpp
PrettyStackTrace.cpp Add more initializers to quiet a clang warning. 2011-10-05 05:00:26 +00:00
Process.cpp
Program.cpp
raw_os_ostream.cpp
raw_ostream.cpp Avoid undefined behavior in signed integer negation. Patch by Ahmed Charles. 2011-10-13 22:49:56 +00:00
README.txt.system
regcclass.h
regcname.h
regcomp.c
regengine.inc
regerror.c
regex2.h
regex_impl.h
Regex.cpp
regexec.c
regfree.c
regstrlcpy.c
regutils.h
RWMutex.cpp Clean up a few references to System/. We still have docs/SystemLibrary.html 2011-10-11 20:02:52 +00:00
SearchForAddressOfSpecialSymbol.cpp These symbols appear to be visible by SearchForAddressOfSymbol and no longer 2011-09-27 20:01:41 +00:00
Signals.cpp
SmallPtrSet.cpp
SmallVector.cpp
SourceMgr.cpp remove the dead 'ShowLine' argument from SMDiagnostic. 2011-10-16 05:47:55 +00:00
Statistic.cpp Let printf do the formatting instead aligning strings ourselves. 2011-10-16 16:30:34 +00:00
StringExtras.cpp
StringMap.cpp
StringPool.cpp
StringRef.cpp Fix handling of the From parameter in StringRef::find. 2011-10-17 20:49:40 +00:00
system_error.cpp
SystemUtils.cpp
TargetRegistry.cpp
Threading.cpp Rename LLVM_MULTITHREADED define and fix build without threads. 2011-09-19 20:43:23 +00:00
ThreadLocal.cpp Clean up a few references to System/. We still have docs/SystemLibrary.html 2011-10-11 20:02:52 +00:00
Timer.cpp Let printf do the formatting instead aligning strings ourselves. 2011-10-16 16:30:34 +00:00
TimeValue.cpp
ToolOutputFile.cpp
Triple.cpp Add mips64 & mips64el to Triple. Patch by Liu with modifications. 2011-09-20 18:09:37 +00:00
Twine.cpp
Valgrind.cpp

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