Avoid locking in sbrk during early SCP (XCC)
authorBarret Rhoden <brho@cs.berkeley.edu>
Mon, 19 Sep 2016 16:39:31 +0000 (12:39 -0400)
committerBarret Rhoden <brho@cs.berkeley.edu>
Mon, 19 Sep 2016 18:45:55 +0000 (14:45 -0400)
commite0ea34747be329d45e5ae62021f48fd601ccc9df
tree6ad7888996d9f665f1f667f0754d93b59860e15f
parent1d309e834521443ba488061b49f59a5a0a72ff9e
Avoid locking in sbrk during early SCP (XCC)

This is related to replacing glibc's LLLs with PDR locks.

If, for whatever reason I don't fully understand, a binary links against
the real PDR locks (and not the internal ones in glibc for ld.so), then it
might try to use them before TLS is initialized.  Then it'll die when
checking in_vcore_context(), since the TLS descriptor is 0.

For future reference, here was the backtrace:

uth_disable_notifs+0x4
spin_pdr_lock+0x11
sbrk+0x3a
__libc_setup_tls+0xa9
__libc_start_main+0x11e
_start+0x29

Perhaps setup_tls doesn't always sbrk?  Or the linkage with parlib caused
the spin_pdr_symbol to be overridden?

Either way, we can ignore locking during early SCP context, so this change
should be safe.

Rebuild glibc.

Signed-off-by: Barret Rhoden <brho@cs.berkeley.edu>
tools/compilers/gcc-glibc/glibc-2.19-akaros/sysdeps/akaros/sbrk.c