llvm-project/clang/unittests
Bruno Cardoso Lopes d878e28e67 Reapply [2] [VFS] Add 'overlay-relative' field to YAML files
This reapplies r261552 and r263748. Fixed testcase to reapply.

The VFS overlay mapping between virtual paths and real paths is done through
the 'external-contents' entries in YAML files, which contains hardcoded paths
to the real files.

When a module compilation crashes, headers are dumped into <name>.cache/vfs
directory and are mapped via the <name>.cache/vfs/vfs.yaml. The script
generated for reproduction uses -ivfsoverlay pointing to file to gather the
mapping between virtual paths and files inside <name>.cache/vfs. Currently, we
are only capable of reproducing such crashes in the same machine as they
happen, because of the hardcoded paths in 'external-contents'.

To be able to reproduce a crash in another machine, this patch introduces a new
option in the VFS yaml file called 'overlay-relative'. When it's equal to
'true' it means that the provided path to the YAML file through the
-ivfsoverlay option should also be used to prefix the final path for every
'external-contents'.

Example, given the invocation snippet "... -ivfsoverlay
<name>.cache/vfs/vfs.yaml" and the following entry in the yaml file:

"overlay-relative": "true",
"roots": [
...
  "type": "directory",
  "name": "/usr/include",
  "contents": [
    {
      "type": "file",
      "name": "stdio.h",
      "external-contents": "/usr/include/stdio.h"
    },
...

Here, a file manager request for virtual "/usr/include/stdio.h", that will map
into real path "/<absolute_path_to>/<name>.cache/vfs/usr/include/stdio.h.

This is a useful feature for debugging module crashes in machines other than
the one where the error happened.

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

rdar://problem/24499339

llvm-svn: 263893
2016-03-20 02:08:48 +00:00
..
AST Adding new AST matchers for: addrLabelExpr, atomicExpr, binaryConditionalOperator, designatedInitExpr, designatorCountIs, hasSyntacticForm, implicitValueInitExpr, labelDecl, opaqueValueExpr, parenListExpr, predefinedExpr, requiresZeroInitialization, and stmtExpr. 2016-03-09 17:11:51 +00:00
ASTMatchers Use an explicit instantiation to work around delayed template parsing for MSVC-built bots. 2016-03-09 18:07:17 +00:00
Basic Reapply [2] [VFS] Add 'overlay-relative' field to YAML files 2016-03-20 02:08:48 +00:00
CodeGen Remove autoconf support 2016-01-26 21:30:40 +00:00
Driver Remove autoconf support 2016-01-26 21:30:40 +00:00
Format clang-format: [JS] Make requoting of JavaScript string literals only 2016-03-17 13:03:41 +00:00
Frontend Use Backend_EmitMCNull for null codegen unit tests. 2016-02-18 20:27:16 +00:00
Lex Make TargetInfo store an actual DataLayout instead of a string. 2016-03-04 19:00:41 +00:00
Rewrite Remove autoconf support 2016-01-26 21:30:40 +00:00
Sema Remove autoconf support 2016-01-26 21:30:40 +00:00
StaticAnalyzer Remove autoconf support 2016-01-26 21:30:40 +00:00
Tooling Turning on the /bigobj flag for two more files that will not link with MSVC 2015 Win64 Debug due to the section limit. 2016-03-08 16:34:37 +00:00
libclang tests: Add explicit -stdlib=libstdc++ to tests that require it 2016-02-12 07:48:28 +00:00
CMakeLists.txt [CMake] Don't build the libclang tests unless you're building libclang 2015-12-04 23:12:19 +00:00