aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlan Modra <amodra@gmail.com>2020-09-09 22:10:47 +0930
committerAlan Modra <amodra@gmail.com>2020-09-09 22:51:07 +0930
commit15a32af52fdc010801396cbcf62f33d88435ac1a (patch)
treee92e7f2beca3fa020a341a55d2246075457c3c94
parent6a1ed9106f4f937eddc194915d6e3ec4ecc79f20 (diff)
downloadgdb-15a32af52fdc010801396cbcf62f33d88435ac1a.zip
gdb-15a32af52fdc010801396cbcf62f33d88435ac1a.tar.gz
gdb-15a32af52fdc010801396cbcf62f33d88435ac1a.tar.bz2
power10 on ppc32
We don't support power10 on ppc32, mainly because some instructions have 34-bit fields for which we don't have relocations on ppc32. If you try to assemble typical code, you'll see errors saying "reloc ... not supported by object file format". Also, on 32-bit hosts with binutils configured without a 64-bit bfd, you'll see errors saying "bignum invalid" when using large offsets. But let's not kill output of prefix insns entirely on 32-bit hosts. * config/tc-ppc.c (md_assemble): Emit prefix insn by parts when valueT is smaller than 64 bits.
-rw-r--r--gas/ChangeLog5
-rw-r--r--gas/config/tc-ppc.c3
2 files changed, 7 insertions, 1 deletions
diff --git a/gas/ChangeLog b/gas/ChangeLog
index 94c3bbb..122d27f 100644
--- a/gas/ChangeLog
+++ b/gas/ChangeLog
@@ -1,3 +1,8 @@
+2020-09-09 Alan Modra <amodra@gmail.com>
+
+ * config/tc-ppc.c (md_assemble): Emit prefix insn by parts when
+ valueT is smaller than 64 bits.
+
2020-09-07 Cooper Qu <cooper.qu@linux.alibaba.com>
* config/tc-csky.c (CSKYV2_ISA_DSP): CSKY_ISA_DSPE60.
diff --git a/gas/config/tc-ppc.c b/gas/config/tc-ppc.c
index 1ff1cd9..4418182 100644
--- a/gas/config/tc-ppc.c
+++ b/gas/config/tc-ppc.c
@@ -3882,7 +3882,8 @@ md_assemble (char *str)
/* The prefix part of an 8-byte instruction always occupies the lower
addressed word in a doubleword, regardless of endianness. */
- if (!target_big_endian && insn_length == 8)
+ if (insn_length == 8
+ && (sizeof (insn) > sizeof (valueT) || !target_big_endian))
{
md_number_to_chars (f, PPC_GET_PREFIX (insn), 4);
md_number_to_chars (f + 4, PPC_GET_SUFFIX (insn), 4);