loader based trace using musl
[ldtrace] / loader / w / stub.h
diff --git a/loader/w/stub.h b/loader/w/stub.h
new file mode 100644 (file)
index 0000000..5d20a7d
--- /dev/null
@@ -0,0 +1,25 @@
+__asm__(
+#define T(i,f) "\n" \
+".global " #f "\n" \
+".type " #f ",@function\n" \
+#f ":\n" \
+"      pushl %esp\n" \
+"      pushl $" #i "\n" \
+"      call enter\n" \
+"      pop %eax\n" \
+"      pop %eax\n" \
+"      jmp __real_" #f "\n"
+
+#include "tab.h"
+#undef T
+"\n"
+"after:\n"
+"      push %eax\n"
+"      push %edx\n"
+"      call leave\n"
+"      mov %eax,%ecx\n"
+"      pop %edx\n"
+"      pop %eax\n"
+"      push %ecx\n"
+"      ret\n"
+);