X-Git-Url: https://git.libre-soc.org/?a=blobdiff_plain;f=ld%2Femultempl%2Fbeos.em;h=2c3e5e5370d039c8ff69e116dd7a134327625908;hb=9b538ba71fc7dbab65371e3e4e5f7e093ff25023;hp=ad4494e2aa0704fa2f799fbcc1cecf637c80ffb1;hpb=df5f2391f7b2e3cab7e677ab7dadd02aef06e269;p=binutils-gdb.git diff --git a/ld/emultempl/beos.em b/ld/emultempl/beos.em index ad4494e2aa0..2c3e5e5370d 100644 --- a/ld/emultempl/beos.em +++ b/ld/emultempl/beos.em @@ -7,7 +7,7 @@ else fi fragment <section; + asection *sb = (*rb)->section; int i, a_sec, b_sec; - i = filename_cmp ((*ra)->input_section.section->owner->my_archive->filename, - (*rb)->input_section.section->owner->my_archive->filename); + i = filename_cmp (sa->owner->my_archive->filename, + sb->owner->my_archive->filename); if (i != 0) return i; - i = filename_cmp ((*ra)->input_section.section->owner->filename, - (*rb)->input_section.section->owner->filename); + i = filename_cmp (sa->owner->filename, sb->owner->filename); if (i != 0) return i; /* the tail idata4/5 are the only ones without relocs to an @@ -412,36 +414,29 @@ sort_by_file_name (const void *a, const void *b) and HNT properly. if no reloc this one is import by ordinal so we have to sort by section contents */ - if ((*ra)->input_section.section->reloc_count - + (*rb)->input_section.section->reloc_count) + if (sa->reloc_count + sb->reloc_count != 0) { - i = ((*ra)->input_section.section->reloc_count - > (*rb)->input_section.section->reloc_count) ? -1 : 0; + i = sa->reloc_count > sb->reloc_count ? -1 : 0; if (i != 0) return i; - return ((*ra)->input_section.section->reloc_count - > (*rb)->input_section.section->reloc_count) ? 0 : 1; + return sa->reloc_count > sb->reloc_count ? 0 : 1; } else { /* don't sort .idata$6 or .idata$7 FIXME dlltool eliminate .idata$7 */ - if ((strcmp ((*ra)->input_section.section->name, ".idata$6") == 0)) + if ((strcmp (sa->name, ".idata$6") == 0)) return 0; - if (!bfd_get_section_contents ((*ra)->input_section.section->owner, - (*ra)->input_section.section, &a_sec, - (file_ptr) 0, - (bfd_size_type) sizeof(a_sec))) + if (!bfd_get_section_contents (sa->owner, sa, &a_sec, (file_ptr) 0, + (bfd_size_type) sizeof (a_sec))) einfo (_("%F%P: %pB: can't read contents of section .idata: %E\n"), - (*ra)->input_section.section->owner); + sa->owner); - if (!bfd_get_section_contents ((*rb)->input_section.section->owner, - (*rb)->input_section.section, &b_sec, - (file_ptr) 0, - (bfd_size_type) sizeof(b_sec))) + if (!bfd_get_section_contents (sb->owner, sb, &b_sec, (file_ptr) 0, + (bfd_size_type) sizeof (b_sec))) einfo (_("%F%P: %pB: can't read contents of section .idata: %E\n"), - (*rb)->input_section.section->owner); + sb->owner); i = a_sec < b_sec ? -1 : 0; if (i != 0) @@ -454,18 +449,19 @@ sort_by_file_name (const void *a, const void *b) static int sort_by_section_name (const void *a, const void *b) { - const lang_statement_union_type *const *ra = a; - const lang_statement_union_type *const *rb = b; + const lang_input_section_type *const *ra = a; + const lang_input_section_type *const *rb = b; + const char *sna = (*ra)->section->name; + const char *snb = (*rb)->section->name; int i; - i = strcmp ((*ra)->input_section.section->name, - (*rb)->input_section.section->name); + i = strcmp (sna, snb); /* This is a hack to make .stab and .stabstr last, so we don't have to fix strip/objcopy for .reloc sections. FIXME stripping images with a .rsrc section still needs to be fixed. */ if (i != 0) { - if ((CONST_STRNEQ ((*ra)->input_section.section->name, ".stab")) - && (! CONST_STRNEQ ((*rb)->input_section.section->name, ".stab"))) + if ((CONST_STRNEQ (sna, ".stab")) + && (!CONST_STRNEQ (snb, ".stab"))) return 1; } return i; @@ -767,6 +763,7 @@ struct ld_emulation_xfer_struct ld_${EMULATION_NAME}_emulation = after_parse_default, gld_${EMULATION_NAME}_after_open, after_check_relocs_default, + before_place_orphans_default, after_allocation_default, set_output_arch_default, ldemul_default_target, @@ -787,6 +784,8 @@ struct ld_emulation_xfer_struct ld_${EMULATION_NAME}_emulation = NULL, /* recognized file */ NULL, /* find_potential_libraries */ NULL, /* new_vers_pattern */ - NULL /* extra_map_file_text */ + NULL, /* extra_map_file_text */ + ${LDEMUL_EMIT_CTF_EARLY-NULL}, + ${LDEMUL_EXAMINE_STRTAB_FOR_CTF-NULL} }; EOF