aboutsummaryrefslogtreecommitdiff
path: root/bfd
diff options
context:
space:
mode:
Diffstat (limited to 'bfd')
-rw-r--r--bfd/ChangeLog7
-rw-r--r--bfd/elf32-rx.c19
2 files changed, 25 insertions, 1 deletions
diff --git a/bfd/ChangeLog b/bfd/ChangeLog
index c7050af..f2afc93 100644
--- a/bfd/ChangeLog
+++ b/bfd/ChangeLog
@@ -1,3 +1,10 @@
+2015-04-09 Nick Clifton <nickc@redhat.com>
+
+ * elf32-rx.c (describe_flags): Report the settings of the string
+ insn using bits.
+ (rx_elf_merge_private_bfd_data): Handle merging of the string insn
+ using bits.
+
2015-04-08 H.J. Lu <hongjiu.lu@intel.com>
* compress.c (bfd_compress_section_contents): Work around a GCC
diff --git a/bfd/elf32-rx.c b/bfd/elf32-rx.c
index b8c632e..8d71628 100644
--- a/bfd/elf32-rx.c
+++ b/bfd/elf32-rx.c
@@ -3086,6 +3086,9 @@ describe_flags (flagword flags)
else
strcat (buf, ", GCC ABI");
+ if (flags & E_FLAG_RX_SINSNS_SET)
+ strcat (buf, flags & E_FLAG_RX_SINSNS_YES ? ", uses String instructions" : ", bans String instructions");
+
return buf;
}
@@ -3112,8 +3115,22 @@ rx_elf_merge_private_bfd_data (bfd * ibfd, bfd * obfd)
{
flagword known_flags;
+ if (old_flags & E_FLAG_RX_SINSNS_SET)
+ {
+ if ((new_flags & E_FLAG_RX_SINSNS_SET) == 0)
+ {
+ new_flags &= ~ E_FLAG_RX_SINSNS_MASK;
+ new_flags |= (old_flags & E_FLAG_RX_SINSNS_MASK);
+ }
+ }
+ else if (new_flags & E_FLAG_RX_SINSNS_SET)
+ {
+ old_flags &= ~ E_FLAG_RX_SINSNS_MASK;
+ old_flags |= (new_flags & E_FLAG_RX_SINSNS_MASK);
+ }
+
known_flags = E_FLAG_RX_ABI | E_FLAG_RX_64BIT_DOUBLES
- | E_FLAG_RX_DSP | E_FLAG_RX_PID;
+ | E_FLAG_RX_DSP | E_FLAG_RX_PID | E_FLAG_RX_SINSNS_MASK;
if ((old_flags ^ new_flags) & known_flags)
{