Unify the various copies of libgcc into lib

From: Palmer Dabbelt
Date: Tue May 23 2017 - 18:06:51 EST


I'm in the process of submitting the RISC-V Linux port, and someone noticed
that we were adding copies of some libgcc emulation routines that were the same
as some of the other ports. This prompted me to go through and check all the
ports for libgcc.h and to merge the versions that were functionally identical.

The only difference in libgcc.h was that there was a #define for little vs big
endian. The differences in the emulation routines were all just whitespace.

This patch set comes in two parts:

* Patch 1 adds new copies of all the C files copied from libgcc, as well as
moving libgcc.h to include/lib (that's a new folder, which probably means
it's the wrong place to put it, but I couldn't find anything better). There
are Kconfig entries for each of these library functions so architectures can
select them one at a time.

* The rest of the patches convert each architecture over to the new system.

Unless I screwed something up, this patch set shouldn't actually change any
functionality. Unfortunately I don't actually have all these cross compilers
setup so I can't actually test any of this, but I did convert the RISC-V port
over to using this system and it appears to be OK there so at least this isn't
completely broken.