return FALSE;
}
+ track_dependency_files (name);
+
/* Linker needs to decompress sections. */
abfd->flags |= BFD_DECOMPRESS;
get_elf_backend_data (link_info.output_bfd)->setup_gnu_properties (&link_info);
+ /* Do not allow executable files to be used as inputs to the link. */
+ for (abfd = link_info.input_bfds; abfd; abfd = abfd->link.next)
+ {
+ if (abfd->xvec->flavour == bfd_target_elf_flavour
+ && !bfd_input_just_syms (abfd)
+ && elf_tdata (abfd) != NULL
+ && elf_tdata (abfd)->elf_header != NULL
+ /* FIXME: Maybe check for other non-supportable types as well ? */
+ && elf_tdata (abfd)->elf_header->e_type == ET_EXEC)
+ einfo (_("%F%P: cannot use executable file '%pB' as input to a link\n"),
+ abfd);
+ }
+
if (bfd_link_relocatable (&link_info))
{
if (link_info.execstack == !link_info.noexecstack)
{
int type = 0;
- if (bfd_link_executable (& link_info)
- && elf_tdata (abfd)->elf_header->e_type == ET_EXEC)
- {
- einfo (_("%F%P: cannot use executable file '%pB' as input to a link\n"),
- abfd);
- }
-
if (bfd_input_just_syms (abfd))
continue;
(char *) &ehdr_start->u + sizeof ehdr_start->u.def.next,
sizeof ehdr_start_save_u);
ehdr_start->type = bfd_link_hash_defined;
+ /* It will be converted to section-relative later. */
+ ehdr_start->rel_from_abs = 1;
ehdr_start->u.def.section = bfd_abs_section_ptr;
ehdr_start->u.def.value = 0;
}
if (discarded_section (linked_to_sec))
{
isec->output_section = bfd_abs_section_ptr;
+ isec->flags |= SEC_EXCLUDE;
break;
}
}