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

Reply via email to