On Wed, Jun 21, 2006 at 08:23:18AM +0100, Mark Shinwell wrote:
Alan, is this test case ok for you?
Perfect. The thing that is fooling lang_insert_orphan is that *two*
sections are being added to the output bfd. This comes about because
.rodata is given a load_base in the script, and .ARM.extab is supposed
to follow .rodata, so the orphan .ARM.extab is also given a load_base
which consists of an expression referencing .rodata. When adding
.ARM.extab, its load_base expression is traversed to see whether any
other sections are needed, and thus .rodata is added too.
Unfortunately, .rodata is added *after* .ARM.extab, so .rodata is at the
end of the list and thus has a NULL next pointer. Which is where
place->section points.