From 5e1a28da4b386d5ce5da2c9d03b8e4b637f4ee28 Mon Sep 17 00:00:00 2001 From: bdemsky Date: Fri, 15 Nov 2019 00:22:51 -0800 Subject: [PATCH] Add pipe support --- Makefile | 2 +- pipe.cc | 22 ++++++++++++++++++++++ 2 files changed, 23 insertions(+), 1 deletion(-) create mode 100644 pipe.cc diff --git a/Makefile b/Makefile index 4329fc46..d74c3a3d 100644 --- a/Makefile +++ b/Makefile @@ -6,7 +6,7 @@ OBJECTS := libthreads.o schedule.o model.o threads.o librace.o action.o \ snapshot.o malloc.o mymemory.o common.o mutex.o conditionvariable.o \ context.o execution.o libannotate.o plugins.o pthread.o futex.o fuzzer.o \ sleeps.o history.o funcnode.o funcinst.o predicate.o printf.o newfuzzer.o \ - concretepredicate.o waitobj.o hashfunction.o + concretepredicate.o waitobj.o hashfunction.o pipe.o CPPFLAGS += -Iinclude -I. LDFLAGS := -ldl -lrt -rdynamic -lpthread diff --git a/pipe.cc b/pipe.cc new file mode 100644 index 00000000..37bb0dc6 --- /dev/null +++ b/pipe.cc @@ -0,0 +1,22 @@ +#include "common.h" +#include +#include "model.h" +#include + +static int (*pipe_init_p)(int filep[2]) = NULL; + +int pipe(int fildes[2]) { + if (!model) { + snapshot_system_init(10000, 1024, 1024, 40000); + model = new ModelChecker(); + model->startChecker(); + } + if (!pipe_init_p) { + pipe_init_p = (int (*)(int file[2])) dlsym(RTLD_NEXT, "pipe"); + if ((error = dlerror()) != NULL) { + fputs(error, stderr); + exit(EXIT_FAILURE); + } + } + pipe_init_p(filedes); +} -- 2.34.1