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.
This commit is contained in:
parent
9fc9dbc28b
commit
1cba418d26
18
ld/ldlang.c
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
Normal file
6
ld/testsuite/ld-scripts/empty-address-4.d
Normal file
@ -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
Normal file
4
ld/testsuite/ld-scripts/empty-address-4.s
Normal file
@ -0,0 +1,4 @@
|
||||
.text
|
||||
.global _start
|
||||
_start:
|
||||
.dc.a 0, 0
|
11
ld/testsuite/ld-scripts/empty-address-4.t
Normal file
11
ld/testsuite/ld-scripts/empty-address-4.t
Normal file
@ -0,0 +1,11 @@
|
||||
SECTIONS
|
||||
{
|
||||
.text 0: { *(.text .pr) }
|
||||
.data 0x200:
|
||||
{
|
||||
*(.data)
|
||||
ASSERT (. < 0x400, oops);
|
||||
}
|
||||
.bss : { *(.bss) }
|
||||
/DISCARD/ : { *(.*) }
|
||||
}
|
@ -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…
x
Reference in New Issue
Block a user