* elf32-arm.c (find_arm_elf_section_entry): New function.
(get_arm_elf_section_data): Use it. (unrecord_section_with_arm_elf_section_data): Use it.
This commit is contained in:
parent
cd0c2720e9
commit
44444f50d6
|
@ -1,3 +1,9 @@
|
||||||
|
2005-10-19 Paul Brook <paul@codesourcery.com>
|
||||||
|
|
||||||
|
* elf32-arm.c (find_arm_elf_section_entry): New function.
|
||||||
|
(get_arm_elf_section_data): Use it.
|
||||||
|
(unrecord_section_with_arm_elf_section_data): Use it.
|
||||||
|
|
||||||
2005-10-15 H.J. Lu <hongjiu.lu@intel.com>
|
2005-10-15 H.J. Lu <hongjiu.lu@intel.com>
|
||||||
|
|
||||||
* coff-rs6000.c (rs6000coff_vec): Initialize
|
* coff-rs6000.c (rs6000coff_vec): Initialize
|
||||||
|
|
|
@ -7311,8 +7311,8 @@ record_section_with_arm_elf_section_data (asection * sec)
|
||||||
sections_with_arm_elf_section_data = entry;
|
sections_with_arm_elf_section_data = entry;
|
||||||
}
|
}
|
||||||
|
|
||||||
static _arm_elf_section_data *
|
static struct section_list *
|
||||||
get_arm_elf_section_data (asection * sec)
|
find_arm_elf_section_entry (asection * sec)
|
||||||
{
|
{
|
||||||
struct section_list * entry;
|
struct section_list * entry;
|
||||||
static struct section_list * last_entry = NULL;
|
static struct section_list * last_entry = NULL;
|
||||||
|
@ -7321,26 +7321,40 @@ get_arm_elf_section_data (asection * sec)
|
||||||
to the sections_with_arm_elf_section_data list in forward order and
|
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
|
then looked up here in backwards order. This makes a real difference
|
||||||
to the ld-srec/sec64k.exp linker test. */
|
to the ld-srec/sec64k.exp linker test. */
|
||||||
|
entry = sections_with_arm_elf_section_data;
|
||||||
if (last_entry != NULL)
|
if (last_entry != NULL)
|
||||||
{
|
{
|
||||||
if (last_entry->sec == sec)
|
if (last_entry->sec == sec)
|
||||||
return elf32_arm_section_data (sec);
|
entry = last_entry;
|
||||||
|
else if (last_entry->next != NULL
|
||||||
if (last_entry->prev != NULL
|
&& last_entry->next->sec == sec)
|
||||||
&& last_entry->prev->sec == sec)
|
entry = last_entry->next;
|
||||||
{
|
|
||||||
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; entry = entry->next)
|
||||||
if (entry->sec == sec)
|
if (entry->sec == sec)
|
||||||
{
|
break;
|
||||||
last_entry = entry;
|
|
||||||
return elf32_arm_section_data (sec);
|
if (entry)
|
||||||
|
/* Record the entry prior to this one - it is the entry we are most
|
||||||
|
likely to want to locate next time. Also this way if we have been
|
||||||
|
called from unrecord_section_with_arm_elf_section_data() we will not
|
||||||
|
be caching a pointer that is about to be freed. */
|
||||||
|
last_entry = entry->prev;
|
||||||
|
|
||||||
|
return entry;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static _arm_elf_section_data *
|
||||||
|
get_arm_elf_section_data (asection * sec)
|
||||||
|
{
|
||||||
|
struct section_list * entry;
|
||||||
|
|
||||||
|
entry = find_arm_elf_section_entry (sec);
|
||||||
|
|
||||||
|
if (entry)
|
||||||
|
return elf32_arm_section_data (entry->sec);
|
||||||
|
else
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -7349,8 +7363,9 @@ unrecord_section_with_arm_elf_section_data (asection * sec)
|
||||||
{
|
{
|
||||||
struct section_list * entry;
|
struct section_list * entry;
|
||||||
|
|
||||||
for (entry = sections_with_arm_elf_section_data; entry; entry = entry->next)
|
entry = find_arm_elf_section_entry (sec);
|
||||||
if (entry->sec == sec)
|
|
||||||
|
if (entry)
|
||||||
{
|
{
|
||||||
if (entry->prev != NULL)
|
if (entry->prev != NULL)
|
||||||
entry->prev->next = entry->next;
|
entry->prev->next = entry->next;
|
||||||
|
@ -7359,7 +7374,6 @@ unrecord_section_with_arm_elf_section_data (asection * sec)
|
||||||
if (entry == sections_with_arm_elf_section_data)
|
if (entry == sections_with_arm_elf_section_data)
|
||||||
sections_with_arm_elf_section_data = entry->next;
|
sections_with_arm_elf_section_data = entry->next;
|
||||||
free (entry);
|
free (entry);
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue