+static void
+avr_finish (void)
+{
+ bfd *abfd;
+ bfd_boolean avr_link_relax;
+
+ if (bfd_link_relocatable (&link_info))
+ {
+ avr_link_relax = TRUE;
+ for (abfd = link_info.input_bfds; abfd != NULL; abfd = abfd->link.next)
+ {
+ /* Don't let the linker stubs prevent the final object being
+ marked as link-relax ready. */
+ if ((elf_elfheader (abfd)->e_flags
+ & EF_AVR_LINKRELAX_PREPARED) == 0
+ && abfd != stub_file->the_bfd)
+ {
+ avr_link_relax = FALSE;
+ break;
+ }
+ }
+ }
+ else
+ {
+ avr_link_relax = RELAXATION_ENABLED;
+ }
+
+ abfd = link_info.output_bfd;
+
+ if (bfd_get_flavour (link_info.output_bfd) == bfd_target_elf_flavour)
+ {
+ if (avr_link_relax)
+ elf_elfheader (abfd)->e_flags |= EF_AVR_LINKRELAX_PREPARED;
+ else
+ elf_elfheader (abfd)->e_flags &= ~EF_AVR_LINKRELAX_PREPARED;
+ }
+
+ finish_default ();
+}