Fixes shared library linking (XCC)
authorBarret Rhoden <brho@cs.berkeley.edu>
Fri, 17 Apr 2015 20:49:58 +0000 (16:49 -0400)
committerBarret Rhoden <brho@cs.berkeley.edu>
Fri, 17 Apr 2015 20:49:58 +0000 (16:49 -0400)
commit345daa13c55969dce7ef314a97ec37304be4d49c
tree16b3a8ac0b01ffdac5f668c8456627d4bade0cf3
parentd94143d58256fb14f0c05b91703edf857e3ce2df
Fixes shared library linking (XCC)

If you try to make a hello-world c++ library:

$ x86_64-ucb-akaros-gcc -fPIC -o lib.o -c lib.cc
$ x86_64-ucb-akaros-gcc -shared -o lib.so lib.o

You'll get the error:

... 4.9.2/crtendS.o(.eh_frame); no .eh_frame_hdr table will be created.

Some sites suggested a problem with config.gcc, such as
http://forum.osdev.org/viewtopic.php?t=25489 , though the problem was
n't crtstuff.  Or at least that didn't help me.  Though it did make me
look at the config.gcc, and I attempted to make ours more like Linux's.

The main change was   tmake_file="t-slibgcc"  , which is needed to make
a shared version of libgcc_s.so.  That in turn needed some fixups in
config.host, the most important being the softfloat business where we
didn't include x86_64 akaros.

Rebuild your toolchain.
tools/compilers/gcc-glibc/gcc-4.9.2-akaros/gcc/config.gcc
tools/compilers/gcc-glibc/gcc-4.9.2-akaros/libgcc/config.host