summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authornorly <ny-git@enpas.org>2013-06-27 02:10:40 +0100
committernorly <ny-git@enpas.org>2013-06-27 02:55:57 +0100
commit271685c3f3a15eca33ad563c1b051bdb32ca2726 (patch)
treea2090a6a5c8fde9eee62cfaaebb1b1d00acdc650
parent6004cb3888eaac4995025fdba5f71b7fd861d81a (diff)
Add test for dynamically linked global variables (stdout, etc)
-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");
+}