summaryrefslogtreecommitdiff
path: root/libdynsymlink.c
diff options
context:
space:
mode:
Diffstat (limited to 'libdynsymlink.c')
-rw-r--r--libdynsymlink.c23
1 files changed, 23 insertions, 0 deletions
diff --git a/libdynsymlink.c b/libdynsymlink.c
new file mode 100644
index 0000000..f1c225c
--- /dev/null
+++ b/libdynsymlink.c
@@ -0,0 +1,23 @@
+#define _GNU_SOURCE
+#include <dlfcn.h>
+
+#include <stdio.h>
+
+static int dynsym_initialized = 0;
+static int (*real_printf) (const char *);
+
+void dynsym_init(void)
+{
+ if(!dynsym_initialized) {
+ real_printf = dlsym(RTLD_NEXT, "printf");
+ dynsym_initialized = 1;
+ }
+}
+
+int printf(const char *__restrict __format, ...)
+{
+ dynsym_init();
+ (*real_printf)("This is libdynsymlink printf\n");
+ return (*real_printf)(__format);
+}
+