From: Rich Felker Date: Mon, 21 Feb 2011 03:24:28 +0000 (-0500) Subject: avoid referencing address of extern function from vdprintf X-Git-Url: http://nsz.repo.hu/git/?p=musl;a=commitdiff_plain;h=4ee039f3545976f9e3e25a7e5d7b58f1f2316dc3;hp=ba68efc921578438db5ab263edd2e9c4654bb412 avoid referencing address of extern function from vdprintf this change is in preparation for upcoming PIC/shared library support. the intent is to avoid going through the GOT, mainly so that dprintf is operable immediately, prior to processing of relocations. having dprintf accessible from the dynamic linker will make writing and debugging the dynamic linker much easier. --- diff --git a/src/stdio/vdprintf.c b/src/stdio/vdprintf.c index bfb1b0a9..35ed6e0b 100644 --- a/src/stdio/vdprintf.c +++ b/src/stdio/vdprintf.c @@ -1,11 +1,16 @@ #include "stdio_impl.h" +static size_t wrap_write(FILE *f, const unsigned char *buf, size_t len) +{ + return __stdio_write(f, buf, len); +} + int vdprintf(int fd, const char *fmt, va_list ap) { int r; char buf[BUFSIZ]; FILE f = { - .fd = fd, .lbf = EOF, .write = __stdio_write, + .fd = fd, .lbf = EOF, .write = wrap_write, .buf = buf+UNGET, .buf_size = sizeof buf - UNGET }; r = vfprintf(&f, fmt, ap);