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.
diff --git a/tools/compilers/gcc-glibc/gcc-4.9.2-akaros/gcc/config.gcc b/tools/compilers/gcc-glibc/gcc-4.9.2-akaros/gcc/config.gcc
index 7939108..7b8dd4a 100644
--- a/tools/compilers/gcc-glibc/gcc-4.9.2-akaros/gcc/config.gcc
+++ b/tools/compilers/gcc-glibc/gcc-4.9.2-akaros/gcc/config.gcc
@@ -879,6 +879,17 @@
   use_gcc_stdint=wrap
   ;;
 *-*-akaros*)
+  # brho 2015-04-17
+  # We need this for the shared libgcc_s.so
+  tmake_file="t-slibgcc"
+  # Linux has these options (among others that I removed).  I think it's saying
+  # to use the glibc targetcm, which needs glibc-c.o to be built, which needs
+  # the t-glibc makefrag
+  c_target_objs="${c_target_objs} glibc-c.o"
+  cxx_target_objs="${cxx_target_objs} glibc-c.o"
+  tmake_file="${tmake_file} t-glibc"
+  target_has_targetcm=yes
+  # We've had these options for a while, linux also has them (and tgmath=no)
   default_use_cxa_atexit=yes
   use_gcc_stdint=wrap
   gas=yes
@@ -1363,13 +1374,21 @@
     tm_file="${tm_file} i386/unix.h i386/att.h dbxelf.h elfos.h newlib-stdint.h i386/i386elf.h i386/x86-64.h i386/rdos.h i386/rdos64.h"
     tmake_file="i386/t-i386elf t-svr4"
     ;;
+# hasn't been compiled in a long time (2015-04-17)
 i[34567]86-*-akaros*)
+	# i386 linux, plus akaros/h i386/akaros.h
+	# consider adding i386/gnu-user-common.h i386/gnu-user.h etc
 	tm_file="${tm_file} i386/unix.h i386/att.h dbxelf.h elfos.h glibc-stdint.h gnu-user.h akaros.h i386/akaros.h"
+	# linux doesn't use the tmake_file here, but a subset of these is still
+	# needed (probably the FP stuff)
 	tmake_file="${tmake_file} t-slibgcc-elf-ver t-linux i386/t-fprules-softfp soft-fp/t-softfp i386/t-linux"
 	;;
 x86_64-*-akaros*)
-	tm_file="${tm_file} i386/unix.h i386/att.h dbxelf.h elfos.h gnu-user.h akaros.h glibc-stdint.h i386/x86-64.h i386/akaros64.h"
+	# similar to linux, but minus some gnu bits.  gnu-user64 wants an x32 ld
+	tm_file="${tm_file} i386/unix.h i386/att.h dbxelf.h elfos.h gnu-user.h glibc-stdint.h i386/x86-64.h akaros.h i386/akaros64.h"
 	tmake_file="${tmake_file} i386/t-linux64"
+	# linux does not need these tmake files, but we need at least some of them.
+	# without these, compilation failed.
 	tmake_file="${tmake_file} i386/t-fprules-softfp soft-fp/t-softfp i386/t-linux"
 	;;
 riscv*-*-akaros*)
diff --git a/tools/compilers/gcc-glibc/gcc-4.9.2-akaros/libgcc/config.host b/tools/compilers/gcc-glibc/gcc-4.9.2-akaros/libgcc/config.host
index 2595977..a19fc4a 100644
--- a/tools/compilers/gcc-glibc/gcc-4.9.2-akaros/libgcc/config.host
+++ b/tools/compilers/gcc-glibc/gcc-4.9.2-akaros/libgcc/config.host
@@ -226,7 +226,7 @@
       ;;
   esac
   ;;
-*-*-linux* | frv-*-*linux* | *-*-kfreebsd*-gnu | *-*-knetbsd*-gnu | *-*-gnu* | *-*-kopensolaris*-gnu)
+*-*-linux* | frv-*-*linux* | *-*-kfreebsd*-gnu | *-*-knetbsd*-gnu | *-*-gnu* | *-*-kopensolaris*-gnu | *-*-akaros*)
   tmake_file="$tmake_file t-crtstuff-pic t-libgcc-pic t-eh-dw2-dip t-slibgcc t-slibgcc-gld t-slibgcc-elf-ver t-linux"
   extra_parts="crtbegin.o crtbeginS.o crtbeginT.o crtend.o crtendS.o"
   if test x$enable_vtable_verify = xyes; then
@@ -237,9 +237,6 @@
   tmake_file="$tmake_file t-lynx $cpu_type/t-crtstuff t-crtstuff-pic t-libgcc-pic"
   extra_parts="crtbegin.o crtbeginS.o crtend.o crtendS.o"
   ;;
-*-*-akaros*)
-  extra_parts="crtbegin.o crtbeginS.o crtbeginT.o crtend.o crtendS.o"
-  ;;
 *-*-netbsd*)
   tmake_file="$tmake_file t-crtstuff-pic t-libgcc-pic t-slibgcc t-slibgcc-gld t-slibgcc-elf-ver"
   # NetBSD 1.7 and later are set up to use GCC's crtstuff for
@@ -567,21 +564,21 @@
 	;;
 riscv*-*-akaros*)
 	;;
-i[34567]86-*-akaros* | i[34567]86-*-linux*)
+i[34567]86-*-linux*)
 	extra_parts="$extra_parts crtprec32.o crtprec64.o crtprec80.o crtfastmath.o"
 	tmake_file="${tmake_file} i386/t-crtpc i386/t-crtfm i386/t-crtstuff t-dfprules"
 	md_unwind_header=i386/linux-unwind.h
 	;;
-i[34567]86-*-kfreebsd*-gnu | i[34567]86-*-knetbsd*-gnu | i[34567]86-*-gnu* | i[34567]86-*-kopensolaris*-gnu)
+i[34567]86-*-akaros* | i[34567]86-*-kfreebsd*-gnu | i[34567]86-*-knetbsd*-gnu | i[34567]86-*-gnu* | i[34567]86-*-kopensolaris*-gnu)
 	extra_parts="$extra_parts crtprec32.o crtprec64.o crtprec80.o crtfastmath.o"
 	tmake_file="${tmake_file} i386/t-crtpc i386/t-crtfm i386/t-crtstuff t-dfprules"
 	;;
-x86_64-*-akaros* | x86_64-*-linux*)
+x86_64-*-linux*)
 	extra_parts="$extra_parts crtprec32.o crtprec64.o crtprec80.o crtfastmath.o"
 	tmake_file="${tmake_file} i386/t-crtpc i386/t-crtfm i386/t-crtstuff t-dfprules"
 	md_unwind_header=i386/linux-unwind.h
 	;;
-x86_64-*-kfreebsd*-gnu | x86_64-*-knetbsd*-gnu)
+x86_64-*-akaros* | x86_64-*-kfreebsd*-gnu | x86_64-*-knetbsd*-gnu)
 	extra_parts="$extra_parts crtprec32.o crtprec64.o crtprec80.o crtfastmath.o"
 	tmake_file="${tmake_file} i386/t-crtpc i386/t-crtfm i386/t-crtstuff t-dfprules"
 	;;
@@ -1264,7 +1261,7 @@
   i[34567]86-*-kfreebsd*-gnu | x86_64-*-kfreebsd*-gnu | \
   i[34567]86-*-linux* | x86_64-*-linux* | \
   i[34567]86-*-gnu* | \
-  i[34567]86-*-akaros* | \
+  i[34567]86-*-akaros* | x86_64-*-akaros* | \
   i[34567]86-*-solaris2* | x86_64-*-solaris2.1[0-9]* | \
   i[34567]86-*-cygwin* | x86_64-*-cygwin* | \
   i[34567]86-*-mingw* | x86_64-*-mingw* | \