This is an archive of the discontinued LLVM Phabricator instance.

[VFS] Add 'overlay-relative' field to YAML files
ClosedPublic

Authored by bruno on Feb 19 2016, 10:45 AM.

Details

Summary

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.

This patch depends on http://reviews.llvm.org/D17104.

Diff Detail

Event Timeline

bruno updated this revision to Diff 48515.Feb 19 2016, 10:45 AM
bruno retitled this revision from to [VFS] Add 'overlay-relative' field to YAML files.
bruno updated this object.
bruno added reviewers: benlangmuir, bogner.
bruno added subscribers: cfe-commits, dexonsmith.
bruno added a subscriber: aprantl.
benlangmuir accepted this revision.Feb 19 2016, 6:14 PM
benlangmuir edited edge metadata.

LGTM!

This revision is now accepted and ready to land.Feb 19 2016, 6:14 PM
bruno closed this revision.Feb 22 2016, 11:12 AM

Committed r261552 / r261556