Add test for dynamically linked global variables (stdout, etc)
authornorly <ny-git@enpas.org>
Thu, 27 Jun 2013 01:10:40 +0000 (02:10 +0100)
committernorly <ny-git@enpas.org>
Thu, 27 Jun 2013 01:55:57 +0000 (02:55 +0100)
tests/07-dynlink-globalvar.test [new file with mode: 0644]
tests/Makefile
tests/src/putsmainsubglobal.c [new file with mode: 0644]
tests/src/sub_with_global.c [new file with mode: 0644]

diff --git a/tests/07-dynlink-globalvar.test b/tests/07-dynlink-globalvar.test
new file mode 100644 (file)
index 0000000..34970f5
--- /dev/null
@@ -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
index 757ea217eb83bbebec26e6a31a5596d3b319be2d..3bacbde9c53d50950ad190f27ca4ea0c0dbeceb0 100644 (file)
@@ -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 (file)
index 0000000..531320d
--- /dev/null
@@ -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 (file)
index 0000000..bf1fd24
--- /dev/null
@@ -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");
+}