/** * @file test_preload.c * @brief Smoke test — call malloc once and print the returned pointer. * * Uses write(2) instead of printf to avoid stdio calling malloc * internally, which would pollute output under LD_PRELOAD. */ #include #include /** @brief Write the hex representation of @p ptr to stdout. */ static void _s_put_ptr (void *ptr) { static const char hex[] = "0123456789abcdef"; char buf[20]; unsigned long v = (unsigned long)ptr; size_t i; if (!ptr) { write (1, "(nil)", 5); return; } i = sizeof (buf); while (v) { buf[--i] = hex[v % 16]; v /= 16; } buf[--i] = 'x'; buf[--i] = '0'; write (1, buf + i, sizeof (buf) - i); } int main (void) { void *p = malloc (42); write (1, "malloc(42) = ", 13); _s_put_ptr (p); write (1, "\n", 1); free (p); return (0); }