add shared library compat tests
authorStefan Metzmacher <metze@samba.org>
Tue, 7 Jul 2009 15:32:49 +0000 (17:32 +0200)
committerStefan Metzmacher <metze@samba.org>
Tue, 7 Jul 2009 15:32:49 +0000 (17:32 +0200)
metze

18 files changed:
shared-libs/appa1/Makefile [new file with mode: 0644]
shared-libs/appa1/app.c [new file with mode: 0644]
shared-libs/appa2/Makefile [new file with mode: 0644]
shared-libs/appa2/app.c [new file with mode: 0644]
shared-libs/appa2b1/Makefile [new file with mode: 0644]
shared-libs/appa2b1/app.c [new file with mode: 0644]
shared-libs/liba1/Makefile [new file with mode: 0644]
shared-libs/liba1/liba.c [new file with mode: 0644]
shared-libs/liba1/liba.h [new file with mode: 0644]
shared-libs/liba2-compat1/Makefile [new file with mode: 0644]
shared-libs/liba2-compat1/liba2-compat1.c [new file with mode: 0644]
shared-libs/liba2/Makefile [new file with mode: 0644]
shared-libs/liba2/liba-compat-1.c [new file with mode: 0644]
shared-libs/liba2/liba.c [new file with mode: 0644]
shared-libs/liba2/liba.h [new file with mode: 0644]
shared-libs/libb1/Makefile [new file with mode: 0644]
shared-libs/libb1/libb.c [new file with mode: 0644]
shared-libs/libb1/libb.h [new file with mode: 0644]

diff --git a/shared-libs/appa1/Makefile b/shared-libs/appa1/Makefile
new file mode 100644 (file)
index 0000000..3b0d3b7
--- /dev/null
@@ -0,0 +1,11 @@
+
+default: all
+
+appa1: app.o
+       gcc -o appa1 app.o ../liba1/liba.so
+
+all: appa1
+
+clean:
+       rm -f *.o *.so* appa1
+
diff --git a/shared-libs/appa1/app.c b/shared-libs/appa1/app.c
new file mode 100644 (file)
index 0000000..1e22b22
--- /dev/null
@@ -0,0 +1,15 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include "../liba1/liba.h"
+
+int main(int argc, const char *argv[])
+{
+       int ret;
+
+       printf("appa1: ...\n");
+       ret = libafunc1(1);
+       printf("appa1: ... %d\n", ret);
+
+       return 0;
+}
+
diff --git a/shared-libs/appa2/Makefile b/shared-libs/appa2/Makefile
new file mode 100644 (file)
index 0000000..bbb9a3d
--- /dev/null
@@ -0,0 +1,11 @@
+
+default: all
+
+appa2: app.o
+       gcc -o appa2 app.o ../liba2/liba.so
+
+all: appa2
+
+clean:
+       rm -f *.o *.so* appa2
+
diff --git a/shared-libs/appa2/app.c b/shared-libs/appa2/app.c
new file mode 100644 (file)
index 0000000..912f302
--- /dev/null
@@ -0,0 +1,19 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include "../liba2/liba.h"
+
+int main(int argc, const char *argv[])
+{
+       int ret;
+
+       printf("appa2: ...\n");
+       ret = libafunc1(2);
+       printf("appa2: ... %d\n", ret);
+
+       printf("appa2: ...\n");
+       ret = libafunc2(2);
+       printf("appa2: ... %d\n", ret);
+
+       return 0;
+}
+
diff --git a/shared-libs/appa2b1/Makefile b/shared-libs/appa2b1/Makefile
new file mode 100644 (file)
index 0000000..c6ef07c
--- /dev/null
@@ -0,0 +1,11 @@
+
+default: all
+
+appa2b1: app.o
+       gcc -o appa2b1 app.o ../liba2/liba.so ../libb1/libb.so -Wl,-rpath-link,../liba1/
+
+all: appa2b1
+
+clean:
+       rm -f *.o *.so* appa2b1
+
diff --git a/shared-libs/appa2b1/app.c b/shared-libs/appa2b1/app.c
new file mode 100644 (file)
index 0000000..e56375f
--- /dev/null
@@ -0,0 +1,24 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include "../liba2/liba.h"
+#include "../libb1/libb.h"
+
+int main(int argc, const char *argv[])
+{
+       int ret;
+
+       printf("appa2: ...\n");
+       ret = libafunc1(21);
+       printf("appa2: ... %d\n", ret);
+
+       printf("appa2: ...\n");
+       ret = libafunc2(21);
+       printf("appa2: ... %d\n", ret);
+
+       printf("appa2: ...\n");
+       ret = libbfunc1(21);
+       printf("appa2: ... %d\n", ret);
+
+       return 0;
+}
+
diff --git a/shared-libs/liba1/Makefile b/shared-libs/liba1/Makefile
new file mode 100644 (file)
index 0000000..a1ea1d7
--- /dev/null
@@ -0,0 +1,17 @@
+
+default: all
+
+CFLAGS=-fPIC
+
+liba.so.1: liba.o
+       gcc -shared -o liba.so.1 -Wl,-soname=liba.so.1 liba.o
+
+liba.so: liba.so.1
+       rm -f liba.so
+       ln -s liba.so.1 liba.so
+
+all: liba.so
+
+clean:
+       rm -f *.o *.so*
+
diff --git a/shared-libs/liba1/liba.c b/shared-libs/liba1/liba.c
new file mode 100644 (file)
index 0000000..db7ce29
--- /dev/null
@@ -0,0 +1,11 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include "liba.h"
+
+int libafunc1(int arg)
+{
+       int ret = 0;
+       printf("liba1: libafunc1(%d) = %d\n", arg, ret);
+       return ret;
+}
+
diff --git a/shared-libs/liba1/liba.h b/shared-libs/liba1/liba.h
new file mode 100644 (file)
index 0000000..eb680af
--- /dev/null
@@ -0,0 +1 @@
+int libafunc1(int arg);
diff --git a/shared-libs/liba2-compat1/Makefile b/shared-libs/liba2-compat1/Makefile
new file mode 100644 (file)
index 0000000..6628e6a
--- /dev/null
@@ -0,0 +1,17 @@
+
+default: all
+
+CFLAGS=-fPIC
+
+liba2-compat1.so: liba2-compat1.o
+       gcc -shared -o liba2-compat1.so -Wl,-soname=liba.so.1 liba2-compat1.o ../liba2/liba.so
+
+liba.so.1: liba2-compat1.so
+       rm -f liba.so.1
+       ln -s liba2-compat1.so liba.so.1
+
+all: liba.so.1
+
+clean:
+       rm -f *.o *.so*
+
diff --git a/shared-libs/liba2-compat1/liba2-compat1.c b/shared-libs/liba2-compat1/liba2-compat1.c
new file mode 100644 (file)
index 0000000..7ef377c
--- /dev/null
@@ -0,0 +1,14 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include "../liba2/liba.h"
+
+#undef libafunc1
+int libafunc1(int arg)
+{
+       int ret = 0;
+       int retc;
+       printf("liba2-compat1: libafunc1(%d) ...\n", arg);
+       retc = _libafunc1(arg, "liba2-compat1-location");
+       printf("liba2-compat1: ... %d => %d\n", retc, ret);
+       return ret;
+}
diff --git a/shared-libs/liba2/Makefile b/shared-libs/liba2/Makefile
new file mode 100644 (file)
index 0000000..643976d
--- /dev/null
@@ -0,0 +1,17 @@
+
+default: all
+
+CFLAGS=-fPIC
+
+liba.so.2: liba.o
+       gcc -shared -o liba.so.2 -Wl,-soname=liba.so.2 liba.o
+
+liba.so: liba.so.2
+       rm -f liba.so
+       ln -s liba.so.2 liba.so
+
+all: liba.so
+
+clean:
+       rm -f *.o *.so*
+
diff --git a/shared-libs/liba2/liba-compat-1.c b/shared-libs/liba2/liba-compat-1.c
new file mode 100644 (file)
index 0000000..8c384a2
--- /dev/null
@@ -0,0 +1,14 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include "liba.h"
+
+#undef libafunc1
+int libafunc1(int arg)
+{
+       int ret = 0;
+       int retc;
+       printf("liba2-compat1: libafunc1(%d) ...\n", arg);
+       retc = _libafunc1(arg, "liba2-compat1-location");
+       printf("liba2-compat1: ... %d => %d\n", retc, ret);
+       return ret;
+}
diff --git a/shared-libs/liba2/liba.c b/shared-libs/liba2/liba.c
new file mode 100644 (file)
index 0000000..b6c76e3
--- /dev/null
@@ -0,0 +1,18 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include "liba.h"
+
+int _libafunc1(int arg, const char *location)
+{
+       int ret = -1;
+       printf("liba2: _libafunc1(%d, %s) = %d\n", arg, location, ret);
+       return ret;
+}
+
+int libafunc2(int arg)
+{
+       int ret = 0;
+       printf("liba2: libafunc2(%d) = %d\n", arg, ret);
+       return ret;
+}
+
diff --git a/shared-libs/liba2/liba.h b/shared-libs/liba2/liba.h
new file mode 100644 (file)
index 0000000..458d1b4
--- /dev/null
@@ -0,0 +1,22 @@
+
+#ifndef __STRING
+#define __STRING(x)    #x
+#endif
+
+#ifndef __STRINGSTRING
+#define __STRINGSTRING(x) __STRING(x)
+#endif
+
+#ifndef __LINESTR__
+#define __LINESTR__ __STRINGSTRING(__LINE__)
+#endif
+
+#ifndef __location__
+#define __location__ __FILE__ ":" __LINESTR__
+#endif
+
+#define libafunc1(arg) _libafunc1(arg, __location__)
+
+int _libafunc1(int arg, const char *location);
+int libafunc2(int arg);
+
diff --git a/shared-libs/libb1/Makefile b/shared-libs/libb1/Makefile
new file mode 100644 (file)
index 0000000..48561a5
--- /dev/null
@@ -0,0 +1,17 @@
+
+default: all
+
+CFLAGS=-fPIC
+
+libb.so.1: libb.o
+       gcc -shared -o libb.so.1 -Wl,-soname=libb.so.1 libb.o ../liba1/liba.so
+
+libb.so: libb.so.1
+       rm -f libb.so
+       ln -s libb.so.1 libb.so
+
+all: libb.so
+
+clean:
+       rm -f *.o *.so*
+
diff --git a/shared-libs/libb1/libb.c b/shared-libs/libb1/libb.c
new file mode 100644 (file)
index 0000000..85f26be
--- /dev/null
@@ -0,0 +1,14 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include "libb.h"
+#include "../liba1/liba.h"
+
+int libbfunc1(int arg)
+{
+       int ret = 0;
+       printf("libb1: libbfunc1(%d) ...\n", arg);
+       ret = libafunc1(arg);
+       printf("libb1: ... %d\n", ret);
+       return ret;
+}
+
diff --git a/shared-libs/libb1/libb.h b/shared-libs/libb1/libb.h
new file mode 100644 (file)
index 0000000..c5ae6af
--- /dev/null
@@ -0,0 +1 @@
+int libbfunc1(int arg);