To enable inter-module call tracing, set the following environment variables:
TRAMPOLINE_INFO=/path/to/info(optional, gives a more useful output)
Trampolines are currently not reentrant and will crash if the same function is called at the same time from different threads. (Or if the wrapped function is recursive.)
This file contains function declarations that help Darling identify function argument counts and types and the return value type. The file contains one line per function. The structure is as follows:
Where types is a list of types, the first type being the return value type.
For a function declared as
char* strcpy(char* dest, const char* src) the trampoline info should be:
void* realloc(void* p, size_t size)
g_strdup(?) strlen(0x7fff380c4327 "/bin/bash") -> 9 malloc(10) -> 0x0x14aa9e0 memcpy(0x14aa9e0, 0x7fff380c4327, 10) -> 0x0x14aa9e0 -> ?
If a method declaration is missing,
? is displayed. For nested calls, indentation is made.
The following declarations are used in the example output:
strlen:us malloc:pu memcpy:pppu
Setting an environment variable
DYLD_DEBUG=1 will enable lots of debugging output.
Missing functions can be automatically replaced with a stub by using
DYLD_IGN_MISSING_SYMS=1. A warning message will be printed whenever such a function is called.