hanchenye-llvm-project/llvm/lib/Support
Ivan Krasin 1ed7896c1b Revert r291903 and r291898. Reason: they break check-lld on the bots.
Summary:
Revert [ARM] Fix ubig32_t read in ARMAttributeParser

Now using support functions to read data instead of trying to
perform casts.
===========================================================

Revert [ARM] Enable objdump to construct triple for ARM

Now that The ARMAttributeParser has been moved into the library,
it has been modified so that it can parse the attributes without
printing them and stores them in a map. ELFObjectFile now queries
the attributes to fill out the architecture details of a provided
triple for 'arm' and 'thumb' targets. llvm-objdump uses this new
functionality.

Subscribers: llvm-commits, samparker, aemerson, mgorny

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

llvm-svn: 291911
2017-01-13 16:45:15 +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
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
Allocator.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
CMakeLists.txt [ARM] Moved ARMAttributeParser to Support 2017-01-13 10:50:01 +00:00
COM.cpp
COPYRIGHT.regex
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
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 Define a dummy zlib::uncompress when zlib is not available. 2016-09-12 13:00:51 +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
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
FormatVariadic.cpp [Support] Introduce llvm::formatv() function. 2016-11-11 23:57:40 +00:00
FormattedStream.cpp
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
IntervalMap.cpp
JamCRC.cpp [NFC] Header cleanup 2016-04-18 09:17:29 +00:00
LEB128.cpp
LLVMBuild.txt Add an c++ itanium demangler to llvm. 2016-09-06 19:16:48 +00:00
LineIterator.cpp
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
MD5.cpp [MD5] Use write32le instead of spelling it out with shifts. 2016-11-23 11:49:28 +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
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
README.txt.system
RWMutex.cpp Revert "Fix Clang-tidy modernize-deprecated-headers warnings in remaining files; other minor fixes." 2016-04-05 20:45:04 +00:00
RandomNumberGenerator.cpp [Support] Fix undefined behavior in RandomNumberGenerator. 2016-10-11 18:17:26 +00:00
Regex.cpp [Support] - Fix possible crash in match() of llvm::Regex. 2016-09-02 08:44:46 +00:00
SHA1.cpp Fix builbots. 2016-11-23 03:58:12 +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
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
TarWriter.cpp TarWriter: Fix a bug in Ustar header. 2017-01-09 22:55:00 +00:00
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
ThreadLocal.cpp
ThreadPool.cpp [ThreadPool] Rollback recent changes until I figure out the breakage. 2016-11-28 09:17:12 +00:00
Threading.cpp Rename interface for querying physical hardware concurrency 2016-10-17 14:56:53 +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
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
circular_raw_ostream.cpp
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
regcclass.h
regcname.h
regcomp.c
regengine.inc
regerror.c
regex2.h
regex_impl.h
regexec.c
regfree.c
regstrlcpy.c
regutils.h
xxhash.cpp Add xxhash to llvm. 2016-09-27 15:45:57 +00:00

README.txt.system

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