From af6767d9b60f29222e8e266ad4a2f8064a11fd99 Mon Sep 17 00:00:00 2001 From: Thomas Schwinge Date: Sun, 7 Apr 2013 19:09:27 +0200 Subject: community/gsoc/project_ideas/gcc_asan -> open_issues/_san. --- open_issues/_san.mdwn | 64 ++++++++++++++++++++++++++++++++++++++++++ open_issues/code_analysis.mdwn | 16 ++--------- 2 files changed, 66 insertions(+), 14 deletions(-) create mode 100644 open_issues/_san.mdwn (limited to 'open_issues') diff --git a/open_issues/_san.mdwn b/open_issues/_san.mdwn new file mode 100644 index 00000000..fad53727 --- /dev/null +++ b/open_issues/_san.mdwn @@ -0,0 +1,64 @@ +[[!meta copyright="Copyright © 2012, 2013 Free Software Foundation, Inc."]] + +[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable +id="license" text="Permission is granted to copy, distribute and/or modify this +document under the terms of the GNU Free Documentation License, Version 1.2 or +any later version published by the Free Software Foundation; with no Invariant +Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license +is included in the section entitled [[GNU Free Documentation +License|/fdl]]."]]"""]] + +[[!meta title="Port the GCC and LLVM/clang Sanitizers (*san) to the Hurd"]] + +[[!tag open_issue_gcc]] + +GCC and LLVM/clang provide several *sanitizers*, +, such +as: + + * Address Sanitizer, a memory error detector (ASan; `-fsanitize=address`) + + [Finding races and memory errors with GCC instrumentation + (AddressSanitizer)](http://gcc.gnu.org/wiki/cauldron2012#Finding_races_and_memory_errors_with_GCC_instrumentation_.28AddressSanitizer.29), + GNU Tools Cauldron 2012. . + + * Memory Sanitizer, an detector of uninitialized reads (MSan; + `-fsanitize=memory) + + + + * Thread Sanitizer, a data race detector (TSan; `-fsanitize=thread`) + + + + * Undefined Behavior Sanitizer (UBsan; `-fsanitize=undefined`) + +Porting these to the Hurd is not a trivial task, for they have intimate +knowledge about the operating system kernel they're running on, and from a +first look they reimplement a lot of [[/glibc]] by directly using +[[system_call]]s -- which is basically a no-go on GNU Hurd. + + +# IRC, OFTC, #gcc, 2012-12-11 + + hmm, is libtsan not multi-libbed? + richi: it only works on x86_64 right now + ugh + richi: so, it is multilibbed, but only built on multilibs and + targets which are supported + richi: as it often needs lots of RAM, it is probably not going to + be supported on 32-bit targets at all + richi: no reason not to support it on say ppc64 or sparc64 or s390x + I guess, just needs work + jakub: where is asan supported? everywhere? + richi: but then, I haven't even read what exactly libtsan does, + only looked at the atomics in there, and did the GCC side from what I + knew should be instrumented + richi: asan is right now supported on x86_64/i686, ppc/ppc64, + perhaps partially x86 darwin (don't care) and in theory arm (nobody + tested) + richi: porting isn't that hard, but the library isn't as clean as + it would be desirable portability wise + richi: that said, I don't want to spend as much time as I've done + so far on it, and in the time I'll allocate for it optimizing the code it + generates is higher on the todo list than ports to other targets diff --git a/open_issues/code_analysis.mdwn b/open_issues/code_analysis.mdwn index 138f3d6c..5219b015 100644 --- a/open_issues/code_analysis.mdwn +++ b/open_issues/code_analysis.mdwn @@ -157,20 +157,8 @@ There is a [[!FF_project 276]][[!tag bounty]] on some of these tasks. ah, no, the libthreads code properly sets the guard, just for grow-up stacks - * GCC's AddressSanitizer, a memory error detector (ASan; - `-fsanitize=address`) - - [Finding races and memory errors with GCC instrumentation - (AddressSanitizer)](http://gcc.gnu.org/wiki/cauldron2012#Finding_races_and_memory_errors_with_GCC_instrumentation_.28AddressSanitizer.29), - GNU Tools Cauldron 2012. . - - Not yet [[ported to the Hurd|community/gsoc/project_ideas/gcc_asan]]. - - * GCC's ThreadSanitizer, a data race detector (TSan; `-fsanitize=thread`) - - - - Not yet [[ported to the Hurd|community/gsoc/project_ideas/gcc_asan]]. + * GCC, LLVM/clang: [[Address Sanitizer (asan), Memory Sanitizer (msan), + Thread Sanitizer (tasn), Undefined Behavor Sanitizer (ubsan), ...|_san]] * [GCC plugins](http://gcc.gnu.org/wiki/plugins) -- cgit v1.2.3