Browse Source

ASSERT in empty output section with address

* ldlang.c (lang_do_assignments_1): Correct "dot" inside ignored
	sections.
	* testsuite/ld-scripts/empty-address-4.d,
	* testsuite/ld-scripts/empty-address-4.s,
	* testsuite/ld-scripts/empty-address-4.t: New test.
	* testsuite/ld-scripts/empty-address.exp: Run it.
binutils-2_38-branch
Alan Modra 5 years ago
parent
commit
1cba418d26
  1. 18
      ld/ldlang.c
  2. 6
      ld/testsuite/ld-scripts/empty-address-4.d
  3. 4
      ld/testsuite/ld-scripts/empty-address-4.s
  4. 11
      ld/testsuite/ld-scripts/empty-address-4.t
  5. 1
      ld/testsuite/ld-scripts/empty-address.exp

18
ld/ldlang.c

@ -6481,32 +6481,34 @@ lang_do_assignments_1 (lang_statement_union_type *s,
os = &(s->output_section_statement);
os->after_end = *found_end;
init_opb (os->bfd_section);
if (os->bfd_section != NULL && !os->ignored)
newdot = dot;
if (os->bfd_section != NULL)
{
if ((os->bfd_section->flags & SEC_ALLOC) != 0)
if (!os->ignored && (os->bfd_section->flags & SEC_ALLOC) != 0)
{
current_section = os;
prefer_next_section = false;
}
dot = os->bfd_section->vma;
newdot = os->bfd_section->vma;
}
newdot = lang_do_assignments_1 (os->children.head,
os, os->fill, dot, found_end);
os, os->fill, newdot, found_end);
if (!os->ignored)
{
if (os->bfd_section != NULL)
{
newdot = os->bfd_section->vma;
/* .tbss sections effectively have zero size. */
if (!IS_TBSS (os->bfd_section)
|| bfd_link_relocatable (&link_info))
dot += TO_ADDR (os->bfd_section->size);
newdot += TO_ADDR (os->bfd_section->size);
if (os->update_dot_tree != NULL)
exp_fold_tree (os->update_dot_tree,
bfd_abs_section_ptr, &dot);
bfd_abs_section_ptr, &newdot);
}
else
dot = newdot;
dot = newdot;
}
}
break;

6
ld/testsuite/ld-scripts/empty-address-4.d

@ -0,0 +1,6 @@
#ld: -T empty-address-4.t
#nm: -n
#...
0+0 [AT] _start
#pass

4
ld/testsuite/ld-scripts/empty-address-4.s

@ -0,0 +1,4 @@
.text
.global _start
_start:
.dc.a 0, 0

11
ld/testsuite/ld-scripts/empty-address-4.t

@ -0,0 +1,11 @@
SECTIONS
{
.text 0: { *(.text .pr) }
.data 0x200:
{
*(.data)
ASSERT (. < 0x400, oops);
}
.bss : { *(.bss) }
/DISCARD/ : { *(.*) }
}

1
ld/testsuite/ld-scripts/empty-address.exp

@ -32,5 +32,6 @@ run_dump_test empty-address-2b
run_dump_test empty-address-3a
run_dump_test empty-address-3b
run_dump_test empty-address-3c
run_dump_test empty-address-4
set LDFLAGS $old_LDFLAGS

Loading…
Cancel
Save