aboutsummaryrefslogtreecommitdiff
path: root/gas/write.c
diff options
context:
space:
mode:
authorSpencer E. Olson <olsonse@umich.edu>2020-11-09 12:41:09 +0000
committerNick Clifton <nickc@redhat.com>2020-11-09 12:41:09 +0000
commit9372689d72f902c8bae90536acc4747fb0a4b1e1 (patch)
treeb6ec12b88ad28b41ba92f290df2cb10531ad7614 /gas/write.c
parent4a3e3e228280ebbd6320743c1bc2f1401e70300c (diff)
downloadbinutils-9372689d72f902c8bae90536acc4747fb0a4b1e1.zip
binutils-9372689d72f902c8bae90536acc4747fb0a4b1e1.tar.gz
binutils-9372689d72f902c8bae90536acc4747fb0a4b1e1.tar.bz2
Add support for the LMBD (left-most bit detect) instruction to the PRU assembler.
include * opcode/pru.h: Add LMBD (left-most bit detect) opcode index opcodes * pru-opc.c: Add opcode description for LMBD (left-most bit detect) gas * testsuite/gas/pru/misc.s: Add tests for lmbd (left-most bit detect) * testsuite/gas/pru/misc.d: Add tests for lmbd (left-most bit
Diffstat (limited to 'gas/write.c')
-rw-r--r--gas/write.c24
1 files changed, 24 insertions, 0 deletions
diff --git a/gas/write.c b/gas/write.c
index 054f279..36fc404 100644
--- a/gas/write.c
+++ b/gas/write.c
@@ -771,6 +771,22 @@ resolve_reloc_expr_symbols (void)
}
}
+static bfd_boolean
+is_dwo_section (asection *sec)
+{
+ const char *name;
+ int len;
+
+ if (sec == NULL || (name = bfd_section_name (sec)) == NULL)
+ return FALSE;
+
+ len = strlen (name);
+ if (len < 5)
+ return FALSE;
+
+ return strncmp (name + len - 4, ".dwo", 4) == 0;
+}
+
/* This pass over fixups decides whether symbols can be replaced with
section symbols. */
@@ -899,6 +915,14 @@ adjust_reloc_syms (bfd *abfd ATTRIBUTE_UNUSED,
#endif
}
+ /* PR 26841: DWO sections are not supposed to have relocations. */
+ if (is_dwo_section (sec) && seginfo->fix_root != NULL)
+ {
+ as_bad (_("DWO section '%s' contains unresolved expressions - this is not allowed"),
+ bfd_section_name (sec));
+ seginfo->fix_root = NULL; /* FIXME: Memory leak ? */
+ }
+
dump_section_relocs (abfd, sec, stderr);
}