This utilizes the kdump utrace decoding in a dirty way. A libkdump or
something may be warranted.
Output:
Unknown:
utrace({ 24: 50 ec d4 01 08 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 }) = 0 (0x0)
Malloc with MALLOC_CONF=utrace:true
utrace({ 0x801a18040 = malloc(26) }) = 0 (0x0) utrace({ 0x801a18060 = malloc(24) }) = 0 (0x0) utrace({ free(0x801a18040) }) = 0 (0x0)
RTLD with LD_UTRACE=1:
utrace({ RTLD: loaded 0x8007ef400 @ 0x8009ed000 - 0x800ca5fff (/usr/lib/libc++.so.1) }) = 0 (0x0) utrace({ RTLD: loaded 0x8007ef800 @ 0x800ca6000 - 0x800ec2fff (/lib/libcxxrt.so.1) }) = 0 (0x0) utrace({ RTLD: loaded 0x8007efc00 @ 0x800ec3000 - 0x8010ecfff (/lib/libm.so.5) }) = 0 (0x0) utrace({ RTLD: loaded 0x8007f8000 @ 0x8010ed000 - 0x8012fafff (/lib/libgcc_s.so.1) }) = 0 (0x0) utrace({ RTLD: loaded 0x8007f8400 @ 0x8012fb000 - 0x80169dfff (/lib/libc.so.7) }) = 0 (0x0) utrace({ RTLD: init 0x801333018 for 0x8007f8400 (/lib/libc.so.7) }) = 0 (0x0) utrace({ RTLD: init 0x8010eefa0 for 0x8007f8000 (/lib/libgcc_s.so.1) }) = 0 (0x0) utrace({ RTLD: init 0x800ec7610 for 0x8007efc00 (/lib/libm.so.5) }) = 0 (0x0) utrace({ RTLD: init 0x800cadc58 for 0x8007ef800 (/lib/libcxxrt.so.1) }) = 0 (0x0) utrace({ RTLD: init 0x800a26268 for 0x8007ef400 (/usr/lib/libc++.so.1) }) = 0 (0x0) utrace({ RTLD: init 0x4032b0 for 0x8007ef000 (/usr/home/bryan/git/netplay/netplay) }) = 0 (0x0) utrace({ dlopen(libcrypto.so.7, RTLD_LAZY | RTLD_GLOBAL) }) = 0 (0x0) utrace({ RTLD: loaded 0x8007f8800 @ 0x801c00000 - 0x801ff6fff (/lib/libcrypto.so.7) }) = 0 (0x0)
PR: 43819 [inspired by]