The SH lib1funcs.asm contains numerous small functions that save code size for a static link, but still are smaller than the PLT size for all link-compatible subtargets (1). Such functions should never be exported from a shared libgcc.
(1) If, say, there is a function that is large for the SH3, it may make make sense to export it from the SH3 libgcc.so, and if so, it also has to be in an sh4-nofpu libgcc.so. However, that is not a reason to put it into an SH4 libgcc.so, since SH4 libraries use a different ABI. Functions that are used/largish only on SH1 are of no concern, because this processor lacks some instructions usesd for SH PIC code, hence there is no point exporting these functions. Likewise, since the SH2 has no MMU, functions that are only needed/ largish for SH2 stay out of libgcc.so for all OSes that need an MMU. MMU, and hence can't support sh*k-elf shared libraries. -- Summary: shared SH libgcc is exporting too many symbols Product: gcc Version: 4.0.0 Status: UNCONFIRMED Severity: critical Priority: P2 Component: target AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: amylaar at gcc dot gnu dot org CC: gcc-bugs at gcc dot gnu dot org GCC target triplet: sh*-*-linux* http://gcc.gnu.org/bugzilla/show_bug.cgi?id=20616