From: Sebastian Huber <sebastian.huber@embedded-brains.de>
To: Segher Boessenkool <segher@kernel.crashing.org>
Cc: GCC Development <gcc@gcc.gnu.org>
Subject: Re: How to configure a bi-arch PowerPC GCC?
Date: Mon, 23 Jan 2017 08:19:00 -0000 [thread overview]
Message-ID: <5885BC78.8010804@embedded-brains.de> (raw)
In-Reply-To: <20170121004635.GB30284@gate.crashing.org>
[-- Attachment #1: Type: text/plain, Size: 15366 bytes --]
On 21/01/17 01:46, Segher Boessenkool wrote:
> On Fri, Jan 20, 2017 at 08:35:14AM +0100, Sebastian Huber wrote:
>>> so you seem to have 64-bit ABI_V4? I wonder how well tested that is,
>>> you are likely to run into more problems. Either stack_restore_tie or
>>> the above code will need a tweak.
>> thanks for your help. I would had a hard time to figure this out myself.
>>
>> I am flexible in terms of the ABI choice for the 64-bit PowerPC. I guess
>> the ABI_ELFv2 is the way to go?
> It certainly is the most modern ABI. It makes some requirements to what
> Power ISA features are required, which may or may not be a problem for
> your platform. If you want to use BE, that should work with ELFv2 fine
> (and it did in the past at least), but it doesn't get serious testing.
I use now the attached patch and get the following error types (for
several multilibs):
/build/git-build/b-gcc-git-powerpc-rtems4.12/./gcc/xgcc
-B/build/git-build/b-gcc-git-powerpc-rtems4.12/./gcc/ -nostdinc
-B/build/git-build/b-gcc-git-powerpc-rtems4.12/powerpc-rtems4.12/newlib/
-isystem
/build/git-build/b-gcc-git-powerpc-rtems4.12/powerpc-rtems4.12/newlib/targ-include
-isystem /home/EB/sebastian_h/archive/gcc-git/newlib/libc/include
-B/opt/rtems-4.12/powerpc-rtems4.12/bin/
-B/opt/rtems-4.12/powerpc-rtems4.12/lib/ -isystem
/opt/rtems-4.12/powerpc-rtems4.12/include -isystem
/opt/rtems-4.12/powerpc-rtems4.12/sys-include -g -O2 -mcpu=8540 -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 ibm-ldouble.o -MT ibm-ldouble.o -MD -MP -MF ibm-ldouble.dep -c
/home/EB/sebastian_h/archive/gcc-git/libgcc/config/rs6000/ibm-ldouble.c
-fvisibility=hidden -DHIDE_EXPORTS
# the right startup files when linking shared libgcc.
/bin/sh /home/EB/sebastian_h/archive/gcc-git/libgcc/../mkinstalldirs
../../.././gcc/m8540
parts="crtbegin.o crtend.o crtbeginS.o crtendS.o crtbeginT.o ecrti.o
ecrtn.o ncrti.o ncrtn.o"; \
for file in $parts; do \
rm -f ../../.././gcc/m8540/$file; \
/usr/bin/install -c -m 644 $file ../../.././gcc/m8540/; \
case $file in \
*.a) \
/opt/rtems-4.12/powerpc-rtems4.12/bin/ranlib
../../.././gcc/m8540/$file ;; \
esac; \
done
In file included from
/home/EB/sebastian_h/archive/gcc-git/libgcc/config/rs6000/ibm-ldouble.c:374:0:
/home/EB/sebastian_h/archive/gcc-git/libgcc/soft-fp/quad.h:72:1: error:
unable to emulate 'TF'
typedef float TFtype __attribute__ ((mode (TF)));
^~~~~~~
config.status: creating auto-target.h
config.status: auto-target.h is unchanged
config.status: executing default commands
In file included from
/home/EB/sebastian_h/archive/gcc-git/libgcc/soft-fp/soft-fp.h:321:0,
from
/home/EB/sebastian_h/archive/gcc-git/libgcc/config/rs6000/ibm-ldouble.c:372:
/home/EB/sebastian_h/archive/gcc-git/libgcc/config/rs6000/ibm-ldouble.c:
In function 'fmsub':
/home/EB/sebastian_h/archive/gcc-git/libgcc/soft-fp/op-common.h:900:10:
warning: this statement may fall through [-Wimplicit-fallthrough=]
R##_s = X##_s; \
/home/EB/sebastian_h/archive/gcc-git/libgcc/soft-fp/quad.h:182:29: note:
in expansion of macro '_FP_MUL'
# define FP_MUL_Q(R, X, Y) _FP_MUL (Q, 4, R, X, Y)
^~~~~~~
/home/EB/sebastian_h/archive/gcc-git/libgcc/config/rs6000/ibm-ldouble.c:417:5:
note: in expansion of macro 'FP_MUL_Q'
FP_MUL_Q(U,X,Y);
^~~~~~~~
/home/EB/sebastian_h/archive/gcc-git/libgcc/soft-fp/op-common.h:902:2:
note: here
case _FP_CLS_COMBINE (FP_CLS_INF, FP_CLS_INF): \
^
/home/EB/sebastian_h/archive/gcc-git/libgcc/soft-fp/quad.h:182:29: note:
in expansion of macro '_FP_MUL'
# define FP_MUL_Q(R, X, Y) _FP_MUL (Q, 4, R, X, Y)
^~~~~~~
/home/EB/sebastian_h/archive/gcc-git/libgcc/config/rs6000/ibm-ldouble.c:417:5:
note: in expansion of macro 'FP_MUL_Q'
FP_MUL_Q(U,X,Y);
^~~~~~~~
/home/EB/sebastian_h/archive/gcc-git/libgcc/soft-fp/op-common.h:913:10:
warning: this statement may fall through [-Wimplicit-fallthrough=]
R##_s = Y##_s; \
/home/EB/sebastian_h/archive/gcc-git/libgcc/soft-fp/quad.h:182:29: note:
in expansion of macro '_FP_MUL'
# define FP_MUL_Q(R, X, Y) _FP_MUL (Q, 4, R, X, Y)
^~~~~~~
/home/EB/sebastian_h/archive/gcc-git/libgcc/config/rs6000/ibm-ldouble.c:417:5:
note: in expansion of macro 'FP_MUL_Q'
FP_MUL_Q(U,X,Y);
^~~~~~~~
/home/EB/sebastian_h/archive/gcc-git/libgcc/soft-fp/op-common.h:915:2:
note: here
case _FP_CLS_COMBINE (FP_CLS_NORMAL, FP_CLS_INF): \
^
/home/EB/sebastian_h/archive/gcc-git/libgcc/soft-fp/quad.h:182:29: note:
in expansion of macro '_FP_MUL'
# define FP_MUL_Q(R, X, Y) _FP_MUL (Q, 4, R, X, Y)
^~~~~~~
/home/EB/sebastian_h/archive/gcc-git/libgcc/config/rs6000/ibm-ldouble.c:417:5:
note: in expansion of macro 'FP_MUL_Q'
FP_MUL_Q(U,X,Y);
^~~~~~~~
/build/git-build/b-gcc-git-powerpc-rtems4.12/./gcc/xgcc
-B/build/git-build/b-gcc-git-powerpc-rtems4.12/./gcc/ -nostdinc
-B/build/git-build/b-gcc-git-powerpc-rtems4.12/powerpc-rtems4.12/newlib/
-isystem
/build/git-build/b-gcc-git-powerpc-rtems4.12/powerpc-rtems4.12/newlib/targ-include
-isystem /home/EB/sebastian_h/archive/gcc-git/newlib/libc/include
-B/opt/rtems-4.12/powerpc-rtems4.12/bin/
-B/opt/rtems-4.12/powerpc-rtems4.12/lib/ -isystem
/opt/rtems-4.12/powerpc-rtems4.12/include -isystem
/opt/rtems-4.12/powerpc-rtems4.12/sys-include -g -O2 -mcpu=e6500 -m64
-msoft-float -mno-altivec -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 -o
unwind-dw2-fde.o -MT unwind-dw2-fde.o -MD -MP -MF unwind-dw2-fde.dep
-fexceptions -c
/home/EB/sebastian_h/archive/gcc-git/libgcc/unwind-dw2-fde.c
-fvisibility=hidden -DHIDE_EXPORTS
/home/EB/sebastian_h/archive/gcc-git/libgcc/unwind-dw2-fde.c: In
function 'search_object':
/home/EB/sebastian_h/archive/gcc-git/libgcc/unwind-dw2-fde.c:588:25:
internal compiler error: in emit_move_insn, at expr.c:3698
v1->array[i1+i2] = v1->array[i1-1];
~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~
0x6c49bb emit_move_insn(rtx_def*, rtx_def*)
/home/EB/sebastian_h/archive/gcc-git/gcc/expr.c:3697
0x6a5c2b force_reg
/home/EB/sebastian_h/archive/gcc-git/gcc/explow.c:648
0xd61994 rs6000_legitimize_address
/home/EB/sebastian_h/archive/gcc-git/gcc/config/rs6000/rs6000.c:8873
0x6a6a21 memory_address_addr_space(machine_mode, rtx_def*, unsigned char)
/home/EB/sebastian_h/archive/gcc-git/gcc/explow.c:432
0x6bfa0a expand_expr_real_1(tree_node*, rtx_def*, machine_mode,
expand_modifier, rtx_def**, bool)
/home/EB/sebastian_h/archive/gcc-git/gcc/expr.c:10040
0x6cdb8c expand_expr
/home/EB/sebastian_h/archive/gcc-git/gcc/expr.h:276
0x6cdb8c expand_assignment(tree_node*, tree_node*, bool)
/home/EB/sebastian_h/archive/gcc-git/gcc/expr.c:5257
0x5b325c expand_gimple_stmt_1
/home/EB/sebastian_h/archive/gcc-git/gcc/cfgexpand.c:3641
0x5b325c expand_gimple_stmt
/home/EB/sebastian_h/archive/gcc-git/gcc/cfgexpand.c:3737
0x5b50b9 expand_gimple_basic_block
/home/EB/sebastian_h/archive/gcc-git/gcc/cfgexpand.c:5744
0x5bab16 execute
/home/EB/sebastian_h/archive/gcc-git/gcc/cfgexpand.c:6357
Please submit a full bug report,
with preprocessed source if appropriate.
Please include the complete backtrace with any bug report.
See <http://gcc.gnu.org/bugs.html> for instructions.
/build/git-build/b-gcc-git-powerpc-rtems4.12/./gcc/xgcc
-B/build/git-build/b-gcc-git-powerpc-rtems4.12/./gcc/ -nostdinc
-B/build/git-build/b-gcc-git-powerpc-rtems4.12/powerpc-rtems4.12/newlib/
-isystem
/build/git-build/b-gcc-git-powerpc-rtems4.12/powerpc-rtems4.12/newlib/targ-include
-isystem /home/EB/sebastian_h/archive/gcc-git/newlib/libc/include
-B/opt/rtems-4.12/powerpc-rtems4.12/bin/
-B/opt/rtems-4.12/powerpc-rtems4.12/lib/ -isystem
/opt/rtems-4.12/powerpc-rtems4.12/include -isystem
/opt/rtems-4.12/powerpc-rtems4.12/sys-include -g -O2 -mcpu=e6500 -m64
-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 -o emutls.o
-MT emutls.o -MD -MP -MF emutls.dep -fexceptions -c
/home/EB/sebastian_h/archive/gcc-git/libgcc/emutls.c -fvisibility=hidden
-DHIDE_EXPORTS
/home/EB/sebastian_h/archive/gcc-git/libgcc/emutls.c: In function
'__emutls_get_address':
/home/EB/sebastian_h/archive/gcc-git/libgcc/emutls.c:159:13: warning:
implicit declaration of function 'calloc' [-Wimplicit-function-declaration]
arr = calloc (size + 1, sizeof (void *));
^~~~~~
/home/EB/sebastian_h/archive/gcc-git/libgcc/emutls.c:159:13: warning:
incompatible implicit declaration of built-in function 'calloc'
/home/EB/sebastian_h/archive/gcc-git/libgcc/emutls.c:159:13: note:
include '<stdlib.h>' or provide a declaration of 'calloc'
/home/EB/sebastian_h/archive/gcc-git/libgcc/emutls.c:171:13: warning:
implicit declaration of function 'realloc' [-Wimplicit-function-declaration]
arr = realloc (arr, (size + 1) * sizeof (void *));
^~~~~~~
/home/EB/sebastian_h/archive/gcc-git/libgcc/emutls.c:171:13: warning:
incompatible implicit declaration of built-in function 'realloc'
/home/EB/sebastian_h/archive/gcc-git/libgcc/emutls.c:171:13: note:
include '<stdlib.h>' or provide a declaration of 'realloc'
/tmp/ccoZ1J0W.s: Assembler messages:
/tmp/ccoZ1J0W.s:125: Error: can't resolve `.got' {.got section} -
`.LCTOC1' {*UND* section}
/tmp/ccoZ1J0W.s:125: Error: expression too complex
/tmp/ccoZ1J0W.s:133: Error: can't resolve `.got' {.got section} -
`.LCTOC1' {*UND* section}
--
/tmp/ccUIJR3G.s:531: Error: expression too complex
/tmp/ccUIJR3G.s:3339: Error: can't resolve `.got' {.got section} -
`.LCTOC1' {*UND* section}
/tmp/ccUIJR3G.s:3339: Error: expression too complex
/tmp/ccUIJR3G.s:3550: Error: can't resolve `.got' {.got section} -
`.LCTOC1' {*UND* section}
/tmp/ccUIJR3G.s:3550: Error: expression too complex
/tmp/ccUIJR3G.s:4147: Error: can't resolve `.got' {.got section} -
`.LCTOC1' {*UND* section}
/tmp/ccUIJR3G.s:4147: Error: expression too complex
/tmp/ccUIJR3G.s:4249: Error: can't resolve `.got' {.got section} -
`.LCTOC1' {*UND* section}
/tmp/ccUIJR3G.s:4249: Error: expression too complex
/tmp/ccUIJR3G.s:4342: Error: can't resolve `.got' {.got section} -
`.LCTOC1' {*UND* section}
/tmp/ccUIJR3G.s:4342: Error: expression too complex
/tmp/ccUIJR3G.s:4385: Error: can't resolve `.got' {.got section} -
`.LCTOC1' {*UND* section}
/tmp/ccUIJR3G.s:4385: Error: expression too complex
/tmp/ccUIJR3G.s:4556: Error: can't resolve `.got' {.got section} -
`.LCTOC1' {*UND* section}
/tmp/ccUIJR3G.s:4556: Error: expression too complex
/tmp/ccUIJR3G.s:5415: Error: can't resolve `.got' {.got section} -
`.LCTOC1' {*UND* section}
/tmp/ccUIJR3G.s:5415: Error: expression too complex
/tmp/ccUIJR3G.s:5437: Error: can't resolve `.got' {.got section} -
`.LCTOC1' {*UND* section}
/tmp/ccUIJR3G.s:5437: Error: expression too complex
/tmp/ccUIJR3G.s:5656: Error: can't resolve `.got' {.got section} -
`.LCTOC1' {*UND* section}
/tmp/ccUIJR3G.s:5656: Error: expression too complex
/tmp/ccUIJR3G.s:5797: Error: can't resolve `.got' {.got section} -
`.LCTOC1' {*UND* section}
/tmp/ccUIJR3G.s:5797: Error: expression too complex
/tmp/ccUIJR3G.s:5859: Error: can't resolve `.got' {.got section} -
`.LCTOC1' {*UND* section}
/tmp/ccUIJR3G.s:5859: Error: expression too complex
/tmp/ccUIJR3G.s:5918: Error: can't resolve `.got' {.got section} -
`.LCTOC1' {*UND* section}
/tmp/ccUIJR3G.s:5918: Error: expression too complex
/tmp/ccUIJR3G.s:6041: Error: can't resolve `.got' {.got section} -
`.LCTOC1' {*UND* section}
/tmp/ccUIJR3G.s:6041: Error: expression too complex
/tmp/ccUIJR3G.s:6042: Error: can't resolve `.got' {.got section} -
`.LCTOC1' {*UND* section}
/tmp/ccUIJR3G.s:6042: Error: expression too complex
/tmp/ccUIJR3G.s:6050: Error: can't resolve `.got' {.got section} -
`.LCTOC1' {*UND* section}
/tmp/ccUIJR3G.s:6050: Error: expression too complex
/tmp/ccUIJR3G.s:6363: Error: can't resolve `.got' {.got section} -
`.LCTOC1' {*UND* section}
/tmp/ccUIJR3G.s:6363: Error: expression too complex
/tmp/ccUIJR3G.s:6912: Error: can't resolve `.got' {.got section} -
`.LCTOC1' {*UND* section}
/tmp/ccUIJR3G.s:6912: Error: expression too complex
/tmp/ccUIJR3G.s:6957: Error: can't resolve `.got' {.got section} -
`.LCTOC1' {*UND* section}
/tmp/ccUIJR3G.s:6957: Error: expression too complex
/tmp/ccUIJR3G.s:7030: Error: can't resolve `.got' {.got section} -
`.LCTOC1' {*UND* section}
/tmp/ccUIJR3G.s:7030: Error: expression too complex
/tmp/ccUIJR3G.s:7127: Error: can't resolve `.got' {.got section} -
`.LCTOC1' {*UND* section}
/tmp/ccUIJR3G.s:7127: Error: expression too complex
/tmp/ccUIJR3G.s:7254: Error: can't resolve `.got' {.got section} -
`.LCTOC1' {*UND* section}
/tmp/ccUIJR3G.s:7254: Error: expression too complex
/tmp/ccUIJR3G.s:7371: Error: can't resolve `.got' {.got section} -
`.LCTOC1' {*UND* section}
/tmp/ccUIJR3G.s:7371: Error: expression too complex
--
Sebastian Huber, embedded brains GmbH
Address : Dornierstr. 4, D-82178 Puchheim, Germany
Phone : +49 89 189 47 41-16
Fax : +49 89 189 47 41-09
E-Mail : sebastian.huber@embedded-brains.de
PGP : Public key available on request.
Diese Nachricht ist keine geschäftliche Mitteilung im Sinne des EHUG.
[-- Attachment #2: 0001-64-bit-powerpc-for-RTEMS.patch --]
[-- Type: text/x-patch, Size: 4942 bytes --]
From dd242e2ec42d23c87c1f50859f12b63b508bd596 Mon Sep 17 00:00:00 2001
From: Sebastian Huber <sebastian.huber@embedded-brains.de>
Date: Fri, 20 Jan 2017 10:05:52 +0100
Subject: [PATCH] 64-bit powerpc for RTEMS
---
gcc/config.gcc | 2 +-
gcc/config/rs6000/rtems.h | 64 +++++++++++++++++++++++++++++++++++++++--------
gcc/config/rs6000/sysv4.h | 2 +-
gcc/config/rs6000/t-rtems | 5 ++++
4 files changed, 60 insertions(+), 13 deletions(-)
diff --git a/gcc/config.gcc b/gcc/config.gcc
index 90308cd..228f941 100644
--- a/gcc/config.gcc
+++ b/gcc/config.gcc
@@ -2381,7 +2381,7 @@ powerpc-*-eabi*)
use_gcc_stdint=wrap
;;
powerpc-*-rtems*)
- tm_file="${tm_file} dbxelf.h elfos.h freebsd-spec.h newlib-stdint.h rs6000/sysv4.h rs6000/eabi.h rs6000/e500.h rs6000/rtems.h rtems.h"
+ tm_file="rs6000/biarch64.h ${tm_file} dbxelf.h elfos.h freebsd-spec.h newlib-stdint.h rs6000/sysv4.h rs6000/eabi.h rs6000/e500.h rs6000/rtems.h rtems.h"
extra_options="${extra_options} rs6000/sysv4.opt"
tmake_file="${tmake_file} rs6000/t-fprules rs6000/t-rtems rs6000/t-ppccomm"
;;
diff --git a/gcc/config/rs6000/rtems.h b/gcc/config/rs6000/rtems.h
index 54a36de..1278737 100644
--- a/gcc/config/rs6000/rtems.h
+++ b/gcc/config/rs6000/rtems.h
@@ -21,17 +21,29 @@
/* Specify predefined symbols in preprocessor. */
#undef TARGET_OS_CPP_BUILTINS
-#define TARGET_OS_CPP_BUILTINS() \
- do \
- { \
- builtin_define_std ("PPC"); \
- builtin_define ("__rtems__"); \
- builtin_define ("__USE_INIT_FINI__"); \
- builtin_assert ("system=rtems"); \
- builtin_assert ("cpu=powerpc"); \
- builtin_assert ("machine=powerpc"); \
- TARGET_OS_SYSV_CPP_BUILTINS (); \
- } \
+#define TARGET_OS_CPP_BUILTINS() \
+ do \
+ { \
+ builtin_define ("__rtems__"); \
+ builtin_define ("__USE_INIT_FINI__"); \
+ builtin_assert ("system=rtems"); \
+ if (TARGET_64BIT) \
+ { \
+ builtin_define ("__PPC__"); \
+ builtin_define ("__PPC64__"); \
+ builtin_define ("__powerpc64__"); \
+ builtin_assert ("cpu=powerpc64"); \
+ builtin_assert ("machine=powerpc64"); \
+ } \
+ else \
+ { \
+ builtin_define_std ("PPC"); \
+ builtin_define_std ("powerpc"); \
+ builtin_assert ("cpu=powerpc"); \
+ builtin_assert ("machine=powerpc"); \
+ TARGET_OS_SYSV_CPP_BUILTINS (); \
+ } \
+ } \
while (0)
#undef TARGET_LIBGCC_SDATA_SECTION
@@ -58,3 +70,33 @@
#undef SUBSUBTARGET_EXTRA_SPECS
#define SUBSUBTARGET_EXTRA_SPECS \
{ "cpp_os_rtems", CPP_OS_RTEMS_SPEC }
+
+#define INVALID_64BIT "-m%s not supported in this configuration"
+
+#undef SUBSUBTARGET_OVERRIDE_OPTIONS
+#define SUBSUBTARGET_OVERRIDE_OPTIONS \
+ do \
+ { \
+ if (rs6000_isa_flags & OPTION_MASK_64BIT) \
+ { \
+ rs6000_elf_abi = 2; \
+ rs6000_current_abi = ABI_ELFv2; \
+ rs6000_isa_flags &= ~OPTION_MASK_EABI; \
+ if (rs6000_isa_flags & OPTION_MASK_RELOCATABLE) \
+ { \
+ rs6000_isa_flags &= ~OPTION_MASK_RELOCATABLE; \
+ error (INVALID_64BIT, "relocatable"); \
+ } \
+ if (TARGET_PROTOTYPE) \
+ { \
+ target_prototype = 0; \
+ error (INVALID_64BIT, "prototype"); \
+ } \
+ if ((rs6000_isa_flags & OPTION_MASK_POWERPC64) == 0) \
+ { \
+ rs6000_isa_flags |= OPTION_MASK_POWERPC64; \
+ error ("-m64 requires a PowerPC64 cpu"); \
+ } \
+ } \
+ } \
+ while (0)
diff --git a/gcc/config/rs6000/sysv4.h b/gcc/config/rs6000/sysv4.h
index a5abeee..fccb1f0 100644
--- a/gcc/config/rs6000/sysv4.h
+++ b/gcc/config/rs6000/sysv4.h
@@ -533,7 +533,7 @@ extern int fixuplabelno;
#define DEFAULT_ASM_ENDIAN " -mbig"
#undef ASM_SPEC
-#define ASM_SPEC "%(asm_cpu) \
+#define ASM_SPEC "%{!m64:-a32}%{m64:-a64} %(asm_cpu) \
%{,assembler|,assembler-with-cpp: %{mregnames} %{mno-regnames}} \
%{mrelocatable} %{mrelocatable-lib} %{" FPIE_OR_FPIC_SPEC ":-K PIC} \
%{memb|msdata=eabi: -memb}" \
diff --git a/gcc/config/rs6000/t-rtems b/gcc/config/rs6000/t-rtems
index 7c7637d..8ff0656 100644
--- a/gcc/config/rs6000/t-rtems
+++ b/gcc/config/rs6000/t-rtems
@@ -30,6 +30,9 @@ MULTILIB_DIRNAMES += m403 m505 m603e m604 m860 m7400 m8540 me6500
MULTILIB_OPTIONS += m32
MULTILIB_DIRNAMES += m32
+MULTILIB_OPTIONS += m64
+MULTILIB_DIRNAMES += m64
+
MULTILIB_OPTIONS += msoft-float/mfloat-gprs=double
MULTILIB_DIRNAMES += nof gprsdouble
@@ -77,3 +80,5 @@ MULTILIB_REQUIRED += mcpu=8540/mfloat-gprs=double
MULTILIB_REQUIRED += mcpu=860
MULTILIB_REQUIRED += mcpu=e6500/m32
MULTILIB_REQUIRED += mcpu=e6500/m32/msoft-float/mno-altivec
+MULTILIB_REQUIRED += mcpu=e6500/m64
+MULTILIB_REQUIRED += mcpu=e6500/m64/msoft-float/mno-altivec
--
1.8.4.5
next prev parent reply other threads:[~2017-01-23 8:19 UTC|newest]
Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-01-19 12:41 Sebastian Huber
2017-01-20 1:04 ` Segher Boessenkool
2017-01-20 7:35 ` Sebastian Huber
2017-01-21 0:46 ` Segher Boessenkool
2017-01-23 8:19 ` Sebastian Huber [this message]
2017-01-23 17:18 ` Segher Boessenkool
2017-01-25 12:14 ` Sebastian Huber
[not found] ` <58889605.4060501@embedded-brains.de>
2017-01-25 17:55 ` Segher Boessenkool
2017-01-30 10:38 ` Sebastian Huber
2017-01-30 12:13 ` Sebastian Huber
2017-01-31 5:57 ` Segher Boessenkool
2017-01-31 8:16 ` Segher Boessenkool
2017-07-20 22:40 ` Sebastian Huber
2017-07-23 13:16 ` Segher Boessenkool
2017-09-13 13:11 ` Andreas Schwab
2017-09-14 11:50 ` Sebastian Huber
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=5885BC78.8010804@embedded-brains.de \
--to=sebastian.huber@embedded-brains.de \
--cc=gcc@gcc.gnu.org \
--cc=segher@kernel.crashing.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).