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

Reply via email to