Reduce mmaps from vfprintf (XCC)
authorBarret Rhoden <brho@cs.berkeley.edu>
Mon, 31 Jul 2017 21:20:00 +0000 (17:20 -0400)
committerBarret Rhoden <brho@cs.berkeley.edu>
Mon, 14 Aug 2017 21:02:19 +0000 (17:02 -0400)
commite1985140c2018ff474aa089ed6782e4031fa3142
tree894e2659a38935b1055702607d2d9220b2e1a481
parentccef4025fd754e4bca84eac99f89e82ec12ada2f
Reduce mmaps from vfprintf (XCC)

It turns out that the do_positional case, which was supposed to be uncommon
and only used for positional arguments, is always used.  That's due to our
use of custom printf functions, which we use for every program.

This change wraps all of the mmaps in a helper function - both the ones for
the specs and for the buffered prints.  The important thing is that we
don't do large allocations from vcore context, so we can just check for it
and branch.  The allocas from an always_inline function seem safe, and the
assembly looks OK.

Rebuild glibc.

Signed-off-by: Barret Rhoden <brho@cs.berkeley.edu>
tools/compilers/gcc-glibc/glibc-2.19-existing.patch