qsort: syms.c stab sorting

* syms.c (struct indexentry): Add idx field.
	(cmpindexentry): Final sort on idx.
	(_bfd_stab_section_find_nearest_line): Set idx.
This commit is contained in:
Alan Modra 2019-10-14 13:53:40 +10:30
parent 8025b0554c
commit 47f6ff2f9e
2 changed files with 13 additions and 3 deletions

View File

@ -1,3 +1,9 @@
2019-10-14 Alan Modra <amodra@gmail.com>
* syms.c (struct indexentry): Add idx field.
(cmpindexentry): Final sort on idx.
(_bfd_stab_section_find_nearest_line): Set idx.
2019-10-14 Alan Modra <amodra@gmail.com>
* dwarf2.c (struct lookup_funcinfo): Add idx field.

View File

@ -884,6 +884,7 @@ struct indexentry
char *directory_name;
char *file_name;
char *function_name;
int idx;
};
/* Compare two indexentry structures. This is called via qsort. */
@ -896,10 +897,9 @@ cmpindexentry (const void *a, const void *b)
if (contestantA->val < contestantB->val)
return -1;
else if (contestantA->val > contestantB->val)
if (contestantA->val > contestantB->val)
return 1;
else
return 0;
return contestantA->idx - contestantB->idx;
}
/* A pointer to this structure is stored in *pinfo. */
@ -1198,6 +1198,7 @@ _bfd_stab_section_find_nearest_line (bfd *abfd,
info->indextable[i].directory_name = directory_name;
info->indextable[i].file_name = file_name;
info->indextable[i].function_name = NULL;
info->indextable[i].idx = i;
++i;
}
@ -1257,6 +1258,7 @@ _bfd_stab_section_find_nearest_line (bfd *abfd,
info->indextable[i].directory_name = directory_name;
info->indextable[i].file_name = file_name;
info->indextable[i].function_name = function_name;
info->indextable[i].idx = i;
++i;
break;
}
@ -1270,6 +1272,7 @@ _bfd_stab_section_find_nearest_line (bfd *abfd,
info->indextable[i].directory_name = directory_name;
info->indextable[i].file_name = file_name;
info->indextable[i].function_name = NULL;
info->indextable[i].idx = i;
++i;
}
@ -1279,6 +1282,7 @@ _bfd_stab_section_find_nearest_line (bfd *abfd,
info->indextable[i].directory_name = NULL;
info->indextable[i].file_name = NULL;
info->indextable[i].function_name = NULL;
info->indextable[i].idx = i;
++i;
info->indextablesize = i;