From c7996ad62885c79a8d94f98dd03e390c6a2d4551 Mon Sep 17 00:00:00 2001 From: "H.J. Lu" Date: Tue, 29 Apr 2003 01:53:46 +0000 Subject: bfd/ 2003-04-28 H.J. Lu * elfxx-ia64.c (elfNN_ia64_relax_section): Relax ldxmov during the relax finalize pass. * section.c (struct sec): Add need_finalize_relax and remove flag11. (STD_SECTION): Update struct sec initializer. * bfd-in2.h: Regenerated. include/ 2003-04-28 H.J. Lu * bfdlink.h (bfd_link_info): Add relax_finalizing. ld/ 2003-04-28 H.J. Lu * ldlang.c (lang_process): Add the relax finalize pass. * ldmain.c (main): Initialize link_info.relax_finalizing to FALSE. --- ld/ChangeLog | 7 +++++++ ld/ldlang.c | 8 ++++++++ ld/ldmain.c | 1 + 3 files changed, 16 insertions(+) (limited to 'ld') diff --git a/ld/ChangeLog b/ld/ChangeLog index 4f24454..ced3178 100644 --- a/ld/ChangeLog +++ b/ld/ChangeLog @@ -1,3 +1,10 @@ +2003-04-28 H.J. Lu + + * ldlang.c (lang_process): Add the relax finalize pass. + + * ldmain.c (main): Initialize link_info.relax_finalizing to + FALSE. + 2003-04-24 Roland McGrath * ldgram.y (phdr_type): Grok PT_TLS and PT_GNU_EH_FRAME names. diff --git a/ld/ldlang.c b/ld/ldlang.c index 5cca71f..8846917 100644 --- a/ld/ldlang.c +++ b/ld/ldlang.c @@ -4393,6 +4393,14 @@ lang_process () abs_output_section, &statement_list.head, 0, (bfd_vma) 0, &relax_again, FALSE); + + /* If the normal relax is done and the relax finalize pass + is not performed yet, we perform another relax pass. */ + if (!relax_again && !link_info.relax_finalizing) + { + link_info.relax_finalizing = TRUE; + relax_again = TRUE; + } } while (relax_again); diff --git a/ld/ldmain.c b/ld/ldmain.c index d8ee1b2..0b0b038 100644 --- a/ld/ldmain.c +++ b/ld/ldmain.c @@ -329,6 +329,7 @@ main (argc, argv) link_info.spare_dynamic_tags = 5; link_info.flags = (bfd_vma) 0; link_info.flags_1 = (bfd_vma) 0; + link_info.relax_finalizing = FALSE; ldfile_add_arch (""); -- cgit v1.1