VxWorks doesn't use the __eabi function (in fact, the ecrti.o and ecrtn.o files are not added to extra_parts). This means that the __SBSS_END__ etc. symbols in eabi.S are always undefined. This is mostly harmless, but it is inconvenient when one wants to create a libgcc runtime module by doing a --whole-archive link of libgcc.a.
Moreover, it turns out that ibm-ldouble.o ends up being empty for powerpc-wrs-vxworks, since only __ppc__ and __PPC__ are TARGET_OS_CPP_BUILTINS, while the entire ibm-ldouble.c is protected by #if (defined (__MACH__) || defined (__powerpc__) || defined (_AIX)) \ && !defined (__rtems__) To avoid the above inconvenience, and make it a little more clear what actually gets built and used for powerpc-wrs-vxworks, create a new t-vxworks which adds tramp.S to LIB2ADD, and use that instead of t-ppccomm. ==changelog== libgcc/ * config.host: Remove rs6000/t-ppccomm from powerpc-wrs-vxworks. * config/rs6000/t-vxworks: New file. --- libgcc/config.host | 2 +- libgcc/config/rs6000/t-vxworks | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) create mode 100644 libgcc/config/rs6000/t-vxworks diff --git a/libgcc/config.host b/libgcc/config.host index 029f6569caf..3e083ec4e34 100644 --- a/libgcc/config.host +++ b/libgcc/config.host @@ -1140,7 +1140,7 @@ powerpc*-*-linux*) md_unwind_header=rs6000/linux-unwind.h ;; powerpc-wrs-vxworks*) - tmake_file="$tmake_file rs6000/t-ppccomm rs6000/t-savresfgpr t-fdpbit" + tmake_file="$tmake_file rs6000/t-vxworks rs6000/t-savresfgpr t-fdpbit" extra_parts="$extra_parts crtbegin.o crtend.o" ;; powerpc-*-lynxos*) diff --git a/libgcc/config/rs6000/t-vxworks b/libgcc/config/rs6000/t-vxworks new file mode 100644 index 00000000000..8c7a56fb446 --- /dev/null +++ b/libgcc/config/rs6000/t-vxworks @@ -0,0 +1 @@ +LIB2ADD += $(srcdir)/config/rs6000/tramp.S -- 2.19.1.3.g1d92a00e68