diff options
| author | Peter Collingbourne <peter@pcc.me.uk> | 2013-08-13 22:15:40 +0000 |
|---|---|---|
| committer | Peter Collingbourne <peter@pcc.me.uk> | 2013-08-13 22:15:40 +0000 |
| commit | 7da504faa497cb04c4fa5682495fa1f1f9da3e6f (patch) | |
| tree | 026aea4f6330774926c719a2f1855ec1fbfe6634 /compiler-rt/lib/dfsan/dfsan.cc | |
| parent | 04632f1f1643b38c32e1c5a9ffb1d8e87201ca3b (diff) | |
| download | bcm5719-llvm-7da504faa497cb04c4fa5682495fa1f1f9da3e6f.tar.gz bcm5719-llvm-7da504faa497cb04c4fa5682495fa1f1f9da3e6f.zip | |
[dfsan] Introduce dfsan_read_label runtime function.
Differential Revision: http://llvm-reviews.chandlerc.com/D1349
llvm-svn: 188319
Diffstat (limited to 'compiler-rt/lib/dfsan/dfsan.cc')
| -rw-r--r-- | compiler-rt/lib/dfsan/dfsan.cc | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/compiler-rt/lib/dfsan/dfsan.cc b/compiler-rt/lib/dfsan/dfsan.cc index c8b0e6851ec..ba8e8b5112e 100644 --- a/compiler-rt/lib/dfsan/dfsan.cc +++ b/compiler-rt/lib/dfsan/dfsan.cc @@ -120,7 +120,7 @@ dfsan_label __dfsan_union(dfsan_label l1, dfsan_label l2) { } extern "C" SANITIZER_INTERFACE_ATTRIBUTE -dfsan_label __dfsan_union_load(dfsan_label *ls, size_t n) { +dfsan_label __dfsan_union_load(const dfsan_label *ls, size_t n) { dfsan_label label = ls[0]; for (size_t i = 1; i != n; ++i) { dfsan_label next_label = ls[i]; @@ -171,6 +171,13 @@ SANITIZER_INTERFACE_ATTRIBUTE dfsan_label dfsan_get_label(long data) { return __dfsan_arg_tls[0]; } +SANITIZER_INTERFACE_ATTRIBUTE dfsan_label +dfsan_read_label(const void *addr, size_t size) { + if (size == 0) + return 0; + return __dfsan_union_load(shadow_for(addr), size); +} + SANITIZER_INTERFACE_ATTRIBUTE const struct dfsan_label_info *dfsan_get_label_info(dfsan_label label) { __dfsan_retval_tls = 0; // Ensures return value is unlabelled in the caller. |

