check_segment[2];
int silence_segment_error = !(info->shared || info->pie);
unsigned long insn;
+ static bfd_boolean ef_frv_pic_flag_set = FALSE;
+ if (! ef_frv_pic_flag_set && IS_FDPIC (output_bfd))
+ {
+ elf_elfheader (output_bfd)->e_flags |= EF_FRV_PIC;
+ ef_frv_pic_flag_set = TRUE;
+ }
+
symtab_hdr = & elf_tdata (input_bfd)->symtab_hdr;
sym_hashes = elf_sym_hashes (input_bfd);
relend = relocs + input_section->reloc_count;
}
if (!silence_segment_error && (info->shared || info->pie))
return FALSE;
- elf_elfheader (output_bfd)->e_flags |= EF_FRV_PIC;
+ /* PR 6446: EF_FRV_PIC should be cleared if
+ there are any inter-segment relocations. */
+ elf_elfheader (output_bfd)->e_flags &= ~ EF_FRV_PIC;
}
switch (r_type)