Skip to content
Snippets Groups Projects
Commit 33afe495 authored by whh8b's avatar whh8b
Browse files

Add some tests for zipr shared objects.

parent 53837963
No related branches found
No related tags found
No related merge requests found
......@@ -27,6 +27,11 @@ src/zipr_options.cpp -text
src/zipr_stats.cpp -text
test/Makefile.in -text
test/MemorySpace.cpp -text
test/dylib/Makefile -text
test/dylib/dylib.c -text
test/dylib/dylib.h -text
test/dylib/dylib_test.c -text
test/dylib/math_test.c -text
third_party/ELFIO/elfio-2.2/AUTHORS -text
third_party/ELFIO/elfio-2.2/COPYING -text
third_party/ELFIO/elfio-2.2/ChangeLog -text
......
all: dylib dylib_test math_test
dylib: dylib.c dylib.h Makefile
gcc -shared -fpic dylib.c -olibdylib.so
dylib_test: dylib dylib_test.c Makefile
gcc -L. -o dylib_test dylib_test.c -ldylib
math_test: math_test.c Makefile
gcc -o math_test math_test.c -lm
libs/libdylib.so:
mkdir -p libs/
$$PEASOUP_HOME/tools/ps_analyze.sh libdylib.so libs/libdylib.so --backend zipr
libs/libm.so.6:
mkdir -p libs/
$$PEASOUP_HOME/tools/ps_analyze.sh /lib/x86_64-linux-gnu/libm.so.6 libs/libm.so.6 --backend zipr
test: dylib_test libs/libdylib.so libs/libm.so.6 math_test
LD_LIBRARY_PATH=libs/ ldd ./dylib_test
LD_LIBRARY_PATH=libs/ ./dylib_test > dylib_test.protected.out
ldd ./dylib_test
./dylib_test > dylib_test.out
diff dylib_test.protected.out dylib_test.out
rm -rf dylib_test*.out
LD_LIBRARY_PATH=libs/ ldd ./math_test
LD_LIBRARY_PATH=libs/ ./math_test > math_test.protected.out
ldd ./math_test
./math_test > math_test.out
diff math_test.protected.out math_test.out
rm -rf math_test*.out
clean:
rm -rf libs dylib dylib_test math_test libdylib.so
rm -rf peasoup_executable_directory*
#include <stdio.h>
#include <stdarg.h>
int dynamic_function_a(void) {
printf("This is dynamic function a.\n");
return 1;
}
int dynamic_function_b(char *b, int n, ...) {
int i = 0;
va_list ap;
printf("This is dynamic function %s\n", b);
va_start(ap, n);
for (i; i<n; i++)
{
char *t = NULL;
t = va_arg(ap, char *);
printf("%d: %s\n", i+1, t);
}
va_end(ap);
return n-i;
}
#ifndef _DYLIB_H
#define _DYLIB_H
int dynamic_function_a(void);
int dynamic_function_b(char *b, int n, ...);
#endif // _DYLIB_H
#include <stdio.h>
#include "dylib.h"
int main() {
return dynamic_function_b("b", 2, "a", "b");
}
#include <stdio.h>
#define _GNU_SOURCE
#include <math.h>
float f1 = 0.5f;
float f2 = 1.0f;
float f3 = 1.5f;
#define FLOAT f1
#define FLOAT2 f2
#define FLOAT3 f3
int i1 = 1;
int pi1 = 1;
long int li1 = 1;
#define INT i1
#define PINT &pi1
#define LINT li1
double d1 = 0.5;
double pd1 = 2.0f;
long double ld1 = 2.0f;
#define DOUBLE d1
#define PDOUBLE &pd1
#define LDOUBLE ld1
char *a = "a";
#define PCHAR a
#define ARG1(N, ...) N
#define ARG2(_1, N, ...) N
#define ARG3(_1, _2, N, ...) N
#define ARG4(_1, _2, _3, N, ...) N
#define ARGC(...) ARGC_(__VA_ARGS__, 5, 4, 3, 2, 1)
#define ARGC_(_1, _2, _3, _4, _5, N, ...) N
#define CONCAT(X, Y) _CONCAT(X,Y)
#define _CONCAT(X, Y) X ## Y
#define CALL(Y, ...) _CALL(Y, __VA_ARGS__)
#define _CALL(Y, ...) Y(__VA_ARGS__)
#define STR(X) XSTR(X)
#define XSTR(X) #X
#define TEST(...) \
CALL(CONCAT(TEST, ARGC(__VA_ARGS__)), __VA_ARGS__)
#define TEST3(...) \
STR(ARG1(__VA_ARGS__)), ARG1(__VA_ARGS__)(ARG2(__VA_ARGS__))
#define TEST4(...) \
STR(ARG1(__VA_ARGS__)), ARG1(__VA_ARGS__)(ARG2(__VA_ARGS__), ARG3(__VA_ARGS__))
#define TEST5(...) \
STR(ARG1(__VA_ARGS__)), ARG1(__VA_ARGS__)(ARG2(__VA_ARGS__), ARG3(__VA_ARGS__), ARG4(__VA_ARGS__))
int main() {
printf("%s: %f\n", TEST(acos,FLOAT,EXPECTED));
printf("%s: %f\n", TEST(atan2,FLOAT,FLOAT2,EXPECTED));
printf("%s: %f\n", TEST(asin,FLOAT,EXPECTED));
printf("%s: %f\n", TEST(atan,FLOAT,EXPECTED));
printf("%s: %f\n", TEST(atan2,FLOAT,FLOAT2,EXPECTED));
printf("%s: %f\n", TEST(cos,FLOAT,EXPECTED));
printf("%s: %f\n", TEST(sin,FLOAT,EXPECTED));
printf("%s: %f\n", TEST(tan,FLOAT,EXPECTED));
printf("%s: %f\n", TEST(cosh,FLOAT,EXPECTED));
printf("%s: %f\n", TEST(sinh,FLOAT,EXPECTED));
printf("%s: %f\n", TEST(tanh,FLOAT,EXPECTED));
printf("%s: %f\n", TEST(acosh,FLOAT,EXPECTED));
printf("%s: %f\n", TEST(asinh,FLOAT,EXPECTED));
printf("%s: %f\n", TEST(atanh,FLOAT,EXPECTED));
printf("%s: %f\n", TEST(exp,FLOAT,EXPECTED));
printf("%s: %f\n", TEST(frexp,FLOAT,PINT,EXPECTED));
printf("%s: %f\n", TEST(ldexp,FLOAT,INT,EXPECTED));
printf("%s: %f\n", TEST(log,FLOAT,EXPECTED));
printf("%s: %f\n", TEST(log10,FLOAT,EXPECTED));
printf("%s: %f\n", TEST(modf,FLOAT,PDOUBLE,EXPECTED));
//printf("%s: %f\n", TEST(exp10,DOUBLE,EXPECTED));
//printf("%s: %f\n", TEST(pow10,DOUBLE,EXPECTED));
printf("%s: %f\n", TEST(expm1,FLOAT,EXPECTED));
printf("%s: %f\n", TEST(log1p,FLOAT,EXPECTED));
printf("%s: %f\n", TEST(logb,FLOAT,EXPECTED));
printf("%s: %f\n", TEST(exp2,FLOAT,EXPECTED));
printf("%s: %f\n", TEST(log2,FLOAT,EXPECTED));
printf("%s: %f\n", TEST(pow,FLOAT,FLOAT2,EXPECTED));
printf("%s: %f\n", TEST(sqrt,FLOAT,EXPECTED));
printf("%s: %f\n", TEST(hypot,FLOAT,FLOAT2,EXPECTED));
printf("%s: %f\n", TEST(cbrt,FLOAT,EXPECTED));
printf("%s: %f\n", TEST(ceil,FLOAT,EXPECTED));
printf("%s: %f\n", TEST(fabs,FLOAT,EXPECTED));
printf("%s: %f\n", TEST(floor,FLOAT,EXPECTED));
printf("%s: %f\n", TEST(fmod,FLOAT,FLOAT2,EXPECTED));
printf("%s: %f\n", TEST(drem,FLOAT,FLOAT2,EXPECTED));
printf("%s: %f\n", TEST(significand,FLOAT,EXPECTED));
printf("%s: %f\n", TEST(copysign,FLOAT,FLOAT2,EXPECTED));
printf("%s: %f\n", TEST(nan,PCHAR,EXPECTED));
printf("%s: %f\n", TEST(j0,FLOAT,EXPECTED));
printf("%s: %f\n", TEST(j1,FLOAT,EXPECTED));
printf("%s: %f\n", TEST(jn,INT,FLOAT,EXPECTED));
printf("%s: %f\n", TEST(y0,FLOAT,EXPECTED));
printf("%s: %f\n", TEST(y1,FLOAT,EXPECTED));
printf("%s: %f\n", TEST(yn,INT,FLOAT,EXPECTED));
printf("%s: %f\n", TEST(erf,FLOAT,EXPECTED));
printf("%s: %f\n", TEST(erfc,FLOAT,EXPECTED));
printf("%s: %f\n", TEST(lgamma,FLOAT,EXPECTED));
printf("%s: %f\n", TEST(tgamma,FLOAT,EXPECTED));
printf("%s: %f\n", TEST(gamma,FLOAT,EXPECTED));
printf("%s: %f\n", TEST(lgamma_r,FLOAT,PINT,EXPECTED));
printf("%s: %f\n", TEST(rint,FLOAT,EXPECTED));
printf("%s: %f\n", TEST(nextafter,FLOAT,FLOAT2,EXPECTED));
printf("%s: %f\n", TEST(nexttoward,FLOAT,LDOUBLE, EXPECTED));
printf("%s: %f\n", TEST(remainder,FLOAT,FLOAT2,EXPECTED));
printf("%s: %f\n", TEST(scalbn,FLOAT,INT,EXPECTED));
printf("%s: %f\n", TEST(scalbln,FLOAT,LINT,EXPECTED));
printf("%s: %f\n", TEST(nearbyint,FLOAT,EXPECTED));
printf("%s: %f\n", TEST(round,FLOAT,EXPECTED));
printf("%s: %f\n", TEST(trunc,FLOAT,EXPECTED));
printf("%s: %f\n", TEST(remquo,FLOAT,FLOAT2,PINT,EXPECTED));
printf("%s: %f\n", TEST(fdim,FLOAT,FLOAT2,EXPECTED));
printf("%s: %f\n", TEST(fmax,FLOAT,FLOAT2,EXPECTED));
printf("%s: %f\n", TEST(fmin,FLOAT,FLOAT2,EXPECTED));
printf("%s: %f\n", TEST(fma,FLOAT,FLOAT2,FLOAT3,EXPECTED));
printf("%s: %f\n", TEST(scalb,FLOAT,FLOAT2,EXPECTED));
return 0;
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment