summaryrefslogtreecommitdiff
path: root/bfd/elf32-xtensa.c
diff options
context:
space:
mode:
authorSterling Augustine <sterling@tensilica.com>2009-02-24 22:51:10 +0000
committerSterling Augustine <sterling@tensilica.com>2009-02-24 22:51:10 +0000
commitdd35c7e6552b6ca59187831e941cf8873a56e545 (patch)
tree1375a0aa9fc2e31d63d6fa23fc0c3810512340a6 /bfd/elf32-xtensa.c
parent41decb480ef66d3715f9947121632b1d8c059234 (diff)
downloadbinutils-redhat-dd35c7e6552b6ca59187831e941cf8873a56e545.tar.gz
2009-02-24 Sterling Augustine <sterling@tensilica.com>
* elf32-xtensa.c (text_action_add): Separate test for action type. Break if saved action is ta_widen_insn at same offset.
Diffstat (limited to 'bfd/elf32-xtensa.c')
-rw-r--r--bfd/elf32-xtensa.c18
1 files changed, 13 insertions, 5 deletions
diff --git a/bfd/elf32-xtensa.c b/bfd/elf32-xtensa.c
index dadf42bc42..856d8a91c4 100644
--- a/bfd/elf32-xtensa.c
+++ b/bfd/elf32-xtensa.c
@@ -5478,12 +5478,20 @@ text_action_add (text_action_list *l,
for (m_p = &l->head; *m_p && (*m_p)->offset <= offset; m_p = &(*m_p)->next)
{
text_action *t = *m_p;
- /* When the action is another fill at the same address,
- just increase the size. */
- if (t->offset == offset && t->action == ta_fill && action == ta_fill)
+
+ if (action == ta_fill)
{
- t->removed_bytes += removed;
- return;
+ /* When the action is another fill at the same address,
+ just increase the size. */
+ if (t->offset == offset && t->action == ta_fill)
+ {
+ t->removed_bytes += removed;
+ return;
+ }
+ /* Fills need to happen before widens so that we don't
+ insert fill bytes into the instruction stream. */
+ if (t->offset == offset && t->action == ta_widen_insn)
+ break;
}
}