Improve libfuzz integration (#2916)

- Allow command line tools to build together with libfuzzer driver.
  Compile everything with `-fsanitize=fuzzer-no-link` to prevent
  linking in libfuzzers's `main` symbol in all executables (causing
  duplicate symbol errors in command line tools), and add
  `-fsanitize=fuzzer` to the libfuzzer driver only.

- Make ASan optional when building with libfuzzer to allow the user
  to choose freely from available sanitizers (e.g., UBSan, MSan,
  HWASan).

- Stabilize libfuzzer by resetting PRNG seed at every invocation.

JerryScript-DCO-1.0-Signed-off-by: Akos Kiss akiss@inf.u-szeged.hu
This commit is contained in:
Akos Kiss
2019-06-19 11:34:06 +02:00
committed by Robert Fancsik
parent 3953fee035
commit 8ee8bc2767
4 changed files with 6 additions and 13 deletions
+1 -1
View File
@@ -57,7 +57,7 @@ endmacro()
# Jerry with libfuzzer support
if(JERRY_LIBFUZZER)
jerry_create_executable("jerry-libfuzzer" "libfuzzer.c")
target_link_libraries("jerry-libfuzzer" jerry-port-default)
target_link_libraries("jerry-libfuzzer" jerry-port-default -fsanitize=fuzzer)
endif()
# Jerry standalones
+3
View File
@@ -13,11 +13,14 @@
* limitations under the License.
*/
#include <stdlib.h>
#include "jerryscript.h"
int LLVMFuzzerTestOneInput (const uint8_t *data, size_t size)
{
srand (0);
jerry_init (JERRY_INIT_EMPTY);
if (jerry_is_valid_utf8_string ((jerry_char_t *) data, (jerry_size_t) size))