hanchenye-llvm-project/clang
Bruno Cardoso Lopes c9daaaedb6 Reapply: [VFS] Add support for handling path traversals
This is originally r261551, reverted because of windows bots failing on
unittests. Change the current behavior to do not handle path traversals
on windows.

Handle ".", ".." and "./" with trailing slashes while collecting files
to be dumped into the vfs overlay directory.

Include the support for symlinks into components. Given the path:

/install-dir/bin/../lib/clang/3.8.0/include/altivec.h, if "bin"
component is a symlink, it's not safe to use `path::remove_dots` here,
and `realpath` is used to get the right answer. Since `realpath`
is expensive, we only do it at collecting time (which only happens
during the crash reproducer) and cache the base directory for fast lookups.

Overall, this makes the input to the VFS YAML file to be canonicalized
to never contain traversal components.

Differential Revision: http://reviews.llvm.org/D17104

rdar://problem/24499339

llvm-svn: 263617
2016-03-16 04:39:38 +00:00
..
INPUTS
bindings libclang python bindings: Fix for bug 26394 2016-03-10 23:29:45 +00:00
cmake [CMake] Updating Apple build configurations 2016-03-15 18:27:28 +00:00
docs Make it possible for AST plugins to enable themselves by default 2016-03-15 12:51:40 +00:00
examples Make it possible for AST plugins to enable themselves by default 2016-03-15 12:51:40 +00:00
include Convert some ObjC msgSends to runtime calls. 2016-03-16 00:33:21 +00:00
lib Reapply: [VFS] Add support for handling path traversals 2016-03-16 04:39:38 +00:00
runtime [cmake] Add a few more compiler-rt check-* targets for EXTERNAL_COMPILER_RT 2016-03-01 15:33:52 +00:00
test Reapply: [VFS] Add support for handling path traversals 2016-03-16 04:39:38 +00:00
tools [OPENMP 4.5] Codegen for data members in 'linear' clause. 2016-03-09 09:49:00 +00:00
unittests clang-format: [JS] Handle certain cases of ASI. 2016-03-14 19:21:36 +00:00
utils Print strict in Availability attribute when it is on. 2016-03-10 23:54:12 +00:00
www Implement support for [[maybe_unused]] in C++1z that is based off existing support for unused, and treat it as an extension pre-C++1z. This also means extending the existing unused attribute so that it can be placed on an enum and enumerator, in addition to the other subjects. 2016-03-09 16:48:08 +00:00
.arcconfig
.clang-format
.clang-tidy
.gitignore
CMakeLists.txt [CMake] Defaulting CLANG_VENDOR to PACKAGE_VENDOR 2016-03-15 18:25:36 +00:00
CODE_OWNERS.TXT Added Anastasia Stulova as a code owner for OpenCL 2016-02-03 18:51:19 +00:00
INSTALL.txt
LICENSE.TXT
ModuleInfo.txt
NOTES.txt
README.txt

README.txt

//===----------------------------------------------------------------------===//
// C Language Family Front-end
//===----------------------------------------------------------------------===//

Welcome to Clang.  This is a compiler front-end for the C family of languages
(C, C++, Objective-C, and Objective-C++) which is built as part of the LLVM
compiler infrastructure project.

Unlike many other compiler frontends, Clang is useful for a number of things
beyond just compiling code: we intend for Clang to be host to a number of
different source-level tools.  One example of this is the Clang Static Analyzer.

If you're interested in more (including how to build Clang) it is best to read
the relevant web sites.  Here are some pointers:

Information on Clang:              http://clang.llvm.org/
Building and using Clang:          http://clang.llvm.org/get_started.html
Clang Static Analyzer:             http://clang-analyzer.llvm.org/
Information on the LLVM project:   http://llvm.org/

If you have questions or comments about Clang, a great place to discuss them is
on the Clang development mailing list:
  http://lists.llvm.org/mailman/listinfo/cfe-dev

If you find a bug in Clang, please file it in the LLVM bug tracker:
  http://llvm.org/bugs/