Hello,
I am sorry to come back to this thread after such a long time. I
recently noticed that one of RTEMS multilibs is broken (for whatever
reason it didn't show up in my regular build):
/build/git-build/b-gcc-git-powerpc-rtems5/powerpc-rtems5/m8540/nof/libgcc
(master) > make
# If this is the top-level multilib, build all the other
# multilibs.
/build/git-build/b-gcc-git-powerpc-rtems5/./gcc/xgcc
-B/build/git-build/b-gcc-git-powerpc-rtems5/./gcc/ -nostdinc
-B/build/git-build/b-gcc-git-powerpc-rtems5/powerpc-rtems5/m8540/nof/newlib/
-isystem
/build/git-build/b-gcc-git-powerpc-rtems5/powerpc-rtems5/m8540/nof/newlib/targ-include
-isystem /home/EB/sebastian_h/archive/gcc-git/newlib/libc/include
-B/opt/rtems/5/powerpc-rtems5/bin/ -B/opt/rtems/5/powerpc-rtems5/lib/
-isystem /opt/rtems/5/powerpc-rtems5/include -isystem
/opt/rtems/5/powerpc-rtems5/sys-include -mcpu=8540 -msoft-float -g -O2
-O2
-I/home/EB/sebastian_h/archive/gcc-git/libgcc/../newlib/libc/sys/rtems/include
-g -O2 -DIN_GCC -DCROSS_DIRECTORY_STRUCTURE -W -Wall -Wno-narrowing
-Wwrite-strings -Wcast-qual -Wstrict-prototypes -Wmissing-prototypes
-Wold-style-definition -isystem ./include -g -DIN_LIBGCC2
-fbuilding-libgcc -fno-stack-protector -Dinhibit_libc -I. -I.
-I../../../.././gcc -I/home/EB/sebastian_h/archive/gcc-git/libgcc
-I/home/EB/sebastian_h/archive/gcc-git/libgcc/.
-I/home/EB/sebastian_h/archive/gcc-git/libgcc/../gcc
-I/home/EB/sebastian_h/archive/gcc-git/libgcc/../include -DHAVE_CC_TLS
-o crtsavfpr_s.o -MT crtsavfpr_s.o -MD -MP -MF crtsavfpr_s.dep -DSHARED
-c -xassembler-with-cpp
/home/EB/sebastian_h/archive/gcc-git/libgcc/config/rs6000/crtsavfpr.S
/home/EB/sebastian_h/archive/gcc-git/libgcc/config/rs6000/crtsavfpr.S:
Assembler messages:
/home/EB/sebastian_h/archive/gcc-git/libgcc/config/rs6000/crtsavfpr.S:41:
Error: unrecognized opcode: `stfd'
/home/EB/sebastian_h/archive/gcc-git/libgcc/config/rs6000/crtsavfpr.S:42:
Error: unrecognized opcode: `stfd'
/home/EB/sebastian_h/archive/gcc-git/libgcc/config/rs6000/crtsavfpr.S:43:
Error: unrecognized opcode: `stfd'
/home/EB/sebastian_h/archive/gcc-git/libgcc/config/rs6000/crtsavfpr.S:44:
Error: unrecognized opcode: `stfd'
/home/EB/sebastian_h/archive/gcc-git/libgcc/config/rs6000/crtsavfpr.S:45:
Error: unrecognized opcode: `stfd'
/home/EB/sebastian_h/archive/gcc-git/libgcc/config/rs6000/crtsavfpr.S:46:
Error: unrecognized opcode: `stfd'
/home/EB/sebastian_h/archive/gcc-git/libgcc/config/rs6000/crtsavfpr.S:47:
Error: unrecognized opcode: `stfd'
/home/EB/sebastian_h/archive/gcc-git/libgcc/config/rs6000/crtsavfpr.S:48:
Error: unrecognized opcode: `stfd'
/home/EB/sebastian_h/archive/gcc-git/libgcc/config/rs6000/crtsavfpr.S:49:
Error: unrecognized opcode: `stfd'
/home/EB/sebastian_h/archive/gcc-git/libgcc/config/rs6000/crtsavfpr.S:50:
Error: unrecognized opcode: `stfd'
/home/EB/sebastian_h/archive/gcc-git/libgcc/config/rs6000/crtsavfpr.S:51:
Error: unrecognized opcode: `stfd'
/home/EB/sebastian_h/archive/gcc-git/libgcc/config/rs6000/crtsavfpr.S:52:
Error: unrecognized opcode: `stfd'
/home/EB/sebastian_h/archive/gcc-git/libgcc/config/rs6000/crtsavfpr.S:53:
Error: unrecognized opcode: `stfd'
/home/EB/sebastian_h/archive/gcc-git/libgcc/config/rs6000/crtsavfpr.S:54:
Error: unrecognized opcode: `stfd'
/home/EB/sebastian_h/archive/gcc-git/libgcc/config/rs6000/crtsavfpr.S:55:
Error: unrecognized opcode: `stfd'
/home/EB/sebastian_h/archive/gcc-git/libgcc/config/rs6000/crtsavfpr.S:56:
Error: unrecognized opcode: `stfd'
/home/EB/sebastian_h/archive/gcc-git/libgcc/config/rs6000/crtsavfpr.S:57:
Error: unrecognized opcode: `stfd'
/home/EB/sebastian_h/archive/gcc-git/libgcc/config/rs6000/crtsavfpr.S:58:
Error: unrecognized opcode: `stfd'
The assembler is called via:
/build/git-build/b-gcc-git-powerpc-rtems5/./gcc/as --gdwarf2 -I
/home/EB/sebastian_h/archive/gcc-git/libgcc/../newlib/libc/sys/rtems/include
-I . -I . -I ../../../.././gcc -I
/home/EB/sebastian_h/archive/gcc-git/libgcc -I
/home/EB/sebastian_h/archive/gcc-git/libgcc/. -I
/home/EB/sebastian_h/archive/gcc-git/libgcc/../gcc -I
/home/EB/sebastian_h/archive/gcc-git/libgcc/../include -a32 -me500 -mbig
-o crtsavfpr_s.o /tmp/cc6Fy8nn.s
The e500 has no standard FPU. For this reason the multilib flags are:
-mcpu=8540 -msoft-float
What do you think about the attached patch?
>From 7329c85c0e7bcda52ab0a55092747512731e38cd Mon Sep 17 00:00:00 2001
From: Sebastian Huber <sebastian.hu...@embedded-brains.de>
Date: Mon, 6 Apr 2020 22:30:21 +0200
Subject: [PATCH] RS6000: Disable some CRT functions
libgcc/
* config/rs6000/crtresfpr.S: Disable all functions if
_SOFT_DOUBLE is defined.
* config/rs6000/crtresxfpr.S: Likewise.
* config/rs6000/crtsavfpr.S: Likewise.
---
libgcc/config/rs6000/crtresfpr.S | 5 +++--
libgcc/config/rs6000/crtresxfpr.S | 5 +++--
libgcc/config/rs6000/crtsavfpr.S | 5 +++--
3 files changed, 9 insertions(+), 6 deletions(-)
diff --git a/libgcc/config/rs6000/crtresfpr.S b/libgcc/config/rs6000/crtresfpr.S
index 6c0d01bf9c1..ffcd30182cd 100644
--- a/libgcc/config/rs6000/crtresfpr.S
+++ b/libgcc/config/rs6000/crtresfpr.S
@@ -30,8 +30,9 @@
.section ".text"
#include "ppc-asm.h"
-/* On PowerPC64 Linux, these functions are provided by the linker. */
-#ifndef __powerpc64__
+/* On PowerPC64 Linux, these functions are provided by the linker. Soft-double
+ * configurations do not need these functions. */
+#if !defined(__powerpc64__) && !defined(_SOFT_DOUBLE)
/* Routines for restoring floating point registers, called by the compiler. */
/* Called with r11 pointing to the stack header word of the caller of the */
diff --git a/libgcc/config/rs6000/crtresxfpr.S b/libgcc/config/rs6000/crtresxfpr.S
index 9f01fa5094b..2e1ac2bc017 100644
--- a/libgcc/config/rs6000/crtresxfpr.S
+++ b/libgcc/config/rs6000/crtresxfpr.S
@@ -30,8 +30,9 @@
.section ".text"
#include "ppc-asm.h"
-/* On PowerPC64 Linux, these functions are provided by the linker. */
-#ifndef __powerpc64__
+/* On PowerPC64 Linux, these functions are provided by the linker. Soft-double
+ * configurations do not need these functions. */
+#if !defined(__powerpc64__) && !defined(_SOFT_DOUBLE)
/* Routines for restoring floating point registers, called by the compiler. */
/* Called with r11 pointing to the stack header word of the caller of the */
diff --git a/libgcc/config/rs6000/crtsavfpr.S b/libgcc/config/rs6000/crtsavfpr.S
index fa043ddd078..4f93f9c4892 100644
--- a/libgcc/config/rs6000/crtsavfpr.S
+++ b/libgcc/config/rs6000/crtsavfpr.S
@@ -30,8 +30,9 @@
.section ".text"
#include "ppc-asm.h"
-/* On PowerPC64 Linux, these functions are provided by the linker. */
-#ifndef __powerpc64__
+/* On PowerPC64 Linux, these functions are provided by the linker. Soft-double
+ * configurations do not need these functions. */
+#if !defined(__powerpc64__) && !defined(_SOFT_DOUBLE)
/* Routines for saving floating point registers, called by the compiler. */
/* Called with r11 pointing to the stack header word of the caller of the */
--
2.16.4