summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
Diffstat (limited to 'tests')
-rw-r--r--tests/07-dynlink-globalvar.test11
-rw-r--r--tests/Makefile8
-rw-r--r--tests/src/putsmainsubglobal.c13
-rw-r--r--tests/src/sub_with_global.c7
4 files changed, 33 insertions, 6 deletions
diff --git a/tests/07-dynlink-globalvar.test b/tests/07-dynlink-globalvar.test
new file mode 100644
index 0000000..34970f5
--- /dev/null
+++ b/tests/07-dynlink-globalvar.test
@@ -0,0 +1,11 @@
+#!/bin/sh
+source ./boilerplate.sh
+
+elfucli --input $BUILDDIR/putsmainsubglobal \
+ --reladd $BUILDDIR/sub_with_global.o \
+ --detour sub,sub_with_global \
+ --output $BUILDDIR/putsmainsubglobal-with-sub-with-global-detour
+test_check_retval
+
+$BUILDDIR/putsmainsubglobal-with-sub-with-global-detour | grep -q "sub_with_global() is returning."
+test_check_retval
diff --git a/tests/Makefile b/tests/Makefile
index 757ea21..3bacbde 100644
--- a/tests/Makefile
+++ b/tests/Makefile
@@ -3,7 +3,7 @@ SRCDIR = src
SOURCES = $(shell find $(SRCDIR)/ -iname "*.c")
OBJS = $(patsubst $(SRCDIR)/%.c, $(BUILDDIR)/%.o, $(SOURCES))
-EXENAMES = putsmain putsmainsub
+EXENAMES = putsmain putsmainsub putsmainsubglobal
EXES = $(patsubst %, $(BUILDDIR)/%, $(EXENAMES))
CFLAGS = -Wall -pedantic
@@ -19,11 +19,7 @@ check: testbase
./runtests.sh
-$(BUILDDIR)/putsmain: $(SRCDIR)/putsmain.c
- @if [ ! -d $(dir $@) ] ; then mkdir -p $(dir $@) ; fi
- gcc $(CFLAGS) -o $@ $^
-
-$(BUILDDIR)/putsmainsub: $(SRCDIR)/putsmainsub.c
+$(BUILDDIR)/%: $(SRCDIR)/%.c
@if [ ! -d $(dir $@) ] ; then mkdir -p $(dir $@) ; fi
gcc $(CFLAGS) -o $@ $^
diff --git a/tests/src/putsmainsubglobal.c b/tests/src/putsmainsubglobal.c
new file mode 100644
index 0000000..531320d
--- /dev/null
+++ b/tests/src/putsmainsubglobal.c
@@ -0,0 +1,13 @@
+#include <stdio.h>
+
+void sub()
+{
+ fprintf(stdout, "sub() called.\n");
+}
+
+int main()
+{
+ sub();
+
+ return 0;
+}
diff --git a/tests/src/sub_with_global.c b/tests/src/sub_with_global.c
new file mode 100644
index 0000000..bf1fd24
--- /dev/null
+++ b/tests/src/sub_with_global.c
@@ -0,0 +1,7 @@
+#include <stdio.h>
+
+void sub_with_global()
+{
+ fprintf(stdout, "sub_with_global() has been reached.\n");
+ fprintf(stdout, "sub_with_global() is returning.\n");
+}