From 271685c3f3a15eca33ad563c1b051bdb32ca2726 Mon Sep 17 00:00:00 2001 From: norly Date: Thu, 27 Jun 2013 02:10:40 +0100 Subject: [PATCH] Add test for dynamically linked global variables (stdout, etc) --- tests/07-dynlink-globalvar.test | 11 +++++++++++ tests/Makefile | 8 ++------ tests/src/putsmainsubglobal.c | 13 +++++++++++++ tests/src/sub_with_global.c | 7 +++++++ 4 files changed, 33 insertions(+), 6 deletions(-) create mode 100644 tests/07-dynlink-globalvar.test create mode 100644 tests/src/putsmainsubglobal.c create mode 100644 tests/src/sub_with_global.c 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 + +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 + +void sub_with_global() +{ + fprintf(stdout, "sub_with_global() has been reached.\n"); + fprintf(stdout, "sub_with_global() is returning.\n"); +} -- 2.30.2