* elf32-arm.c (get_arm_elf_section_data): Cache the last pointer matched so
that the typical case of scanning for the previous section to last one can be handled quickly.
This commit is contained in:
parent
7b96829ccc
commit
bd4aae00cc
2 changed files with 29 additions and 1 deletions
|
@ -1,3 +1,9 @@
|
||||||
|
2005-10-04 Nick Clifton <nickc@redhat.com>
|
||||||
|
|
||||||
|
* elf32-arm.c (get_arm_elf_section_data): Cache the last pointer
|
||||||
|
matched so that the typical case of scanning for the previous
|
||||||
|
section to last one can be handled quickly.
|
||||||
|
|
||||||
2005-10-03 David Heine <dlheine@tensilica.com>
|
2005-10-03 David Heine <dlheine@tensilica.com>
|
||||||
|
|
||||||
* elf32-xtensa.c (relocations_reach): Skip range check for
|
* elf32-xtensa.c (relocations_reach): Skip range check for
|
||||||
|
|
|
@ -6563,10 +6563,32 @@ static _arm_elf_section_data *
|
||||||
get_arm_elf_section_data (asection * sec)
|
get_arm_elf_section_data (asection * sec)
|
||||||
{
|
{
|
||||||
struct section_list * entry;
|
struct section_list * entry;
|
||||||
|
static struct section_list * last_entry = NULL;
|
||||||
|
|
||||||
|
/* This is a short cut for the typical case where the sections are added
|
||||||
|
to the sections_with_arm_elf_section_data list in forward order and
|
||||||
|
then looked up here in backwards order. This makes a real difference
|
||||||
|
to the ld-srec/sec64k.exp linker test. */
|
||||||
|
if (last_entry != NULL)
|
||||||
|
{
|
||||||
|
if (last_entry->sec == sec)
|
||||||
|
return elf32_arm_section_data (sec);
|
||||||
|
|
||||||
|
if (last_entry->prev != NULL
|
||||||
|
&& last_entry->prev->sec == sec)
|
||||||
|
{
|
||||||
|
last_entry = last_entry->prev;
|
||||||
|
return elf32_arm_section_data (sec);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
for (entry = sections_with_arm_elf_section_data; entry; entry = entry->next)
|
for (entry = sections_with_arm_elf_section_data; entry; entry = entry->next)
|
||||||
if (entry->sec == sec)
|
if (entry->sec == sec)
|
||||||
return elf32_arm_section_data (sec);
|
{
|
||||||
|
last_entry = entry;
|
||||||
|
return elf32_arm_section_data (sec);
|
||||||
|
}
|
||||||
|
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue