Build gcc with USE_PT_GNU_EH_FRAME (XCC)
authorBarret Rhoden <brho@cs.berkeley.edu>
Fri, 19 Aug 2016 17:40:52 +0000 (13:40 -0400)
committerBarret Rhoden <brho@cs.berkeley.edu>
Fri, 19 Aug 2016 18:33:56 +0000 (14:33 -0400)
commitf644f50aae5edf82145e311810a085c691aca4fb
tree340bdf0a7b3fc7ecae96913e238d5e209631f78d
parent84d462594c01dc7bdad921e557d4f4c23d160958
Build gcc with USE_PT_GNU_EH_FRAME (XCC)

If we don't build with PT_GNU_EN_FRAME set, our shared libraries (e.g.
libm.so) will have a dependency on unwinding, which can get erronously
linked with libgcc_eh.a's hidden __register_frame_info.

Those references would come from frame_dummy(), called from _init.  On
Linux, this doesn't happen, and we attempt to be as similar to Linux as
possible, at least regarding the toolchain.

Note that USE_PT_GNU_EH_FRAME is not set when CRTSTUFFT_0 is set.  That is
explicitly set when building with -static.  That makes some sense, since
static apps will link against libgcc_eh.a (and not libgcc_s.so), and the
dynamic apps will use the PT_GNU_EH_FRAME.

There's some info on this stuff here:

http://www.airs.com/blog/archives/166

Rebuild your toolchain.

Signed-off-by: Barret Rhoden <brho@cs.berkeley.edu>
tools/compilers/gcc-glibc/gcc-4.9.2-akaros/libgcc/crtstuff.c [new file with mode: 0644]