[ARC] General fixes.
bfd/ 2016-02-29 Cupertino Miranda <Cupertino.Miranda@synopsys.com> * elf32-arc.c (arc_elf_final_write_processing): Add condition to the flag change. (elf_arc_relocate_section): Fixes and conditions to support PIE. Assert for code sections dynamic relocs. gas/ 2016-02-29 Claudiu Zissulescu <Claudiu.Zissulescu@synopsys.com> * config/tc-arc.c: Enable code density instructions for ARC EM. ld/ 2016-02-29 Cupertino Miranda <Cupertino.Miranda@synopsys.com> * scripttempl/arclinux.sc: Force .tdata and .tbss to always be generated.
This commit is contained in:
parent
63aef214ab
commit
7e4588997e
6 changed files with 41 additions and 9 deletions
|
@ -1,3 +1,10 @@
|
|||
2016-02-29 Cupertino Miranda <Cupertino.Miranda@synopsys.com>
|
||||
|
||||
* elf32-arc.c (arc_elf_final_write_processing): Add condition to
|
||||
the flag change.
|
||||
(elf_arc_relocate_section): Fixes and conditions to support PIE.
|
||||
Assert for code sections dynamic relocs.
|
||||
|
||||
2016-02-26 Renlin Li <renlin.li@arm.com>
|
||||
|
||||
* elfnn-aarch64.c (elfNN_aarch64_howto_table): Fix signed overflow
|
||||
|
|
|
@ -688,10 +688,11 @@ arc_elf_final_write_processing (bfd * abfd,
|
|||
default:
|
||||
abort ();
|
||||
}
|
||||
if ((elf_elfheader (abfd)->e_flags & EF_ARC_MACH) == EF_ARC_CPU_GENERIC)
|
||||
elf_elfheader (abfd)->e_flags |= val;
|
||||
|
||||
elf_elfheader (abfd)->e_flags &= ~EF_ARC_MACH;
|
||||
elf_elfheader (abfd)->e_flags |= val;
|
||||
elf_elfheader (abfd)->e_machine = emf;
|
||||
|
||||
/* Record whatever is the current syscall ABI version. */
|
||||
elf_elfheader (abfd)->e_flags |= E_ARC_OSABI_CURRENT;
|
||||
}
|
||||
|
@ -1319,14 +1320,24 @@ elf_arc_relocate_section (bfd * output_bfd,
|
|||
}
|
||||
else if (is_reloc_for_PLT (howto))
|
||||
{
|
||||
/* Fail if it is linking for PIE and the symbol is
|
||||
undefined. */
|
||||
if (bfd_link_executable (info)
|
||||
&& !(*info->callbacks->undefined_symbol)
|
||||
(info, h->root.root.string, input_bfd, input_section,
|
||||
rel->r_offset, TRUE))
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
reloc_data.sym_value = h->plt.offset;
|
||||
reloc_data.sym_section = htab->splt;
|
||||
|
||||
reloc_data.should_relocate = TRUE;
|
||||
}
|
||||
else if (!(*info->callbacks->undefined_symbol)
|
||||
else if (!bfd_link_pic (info)
|
||||
&& !(*info->callbacks->undefined_symbol)
|
||||
(info, h->root.root.string, input_bfd, input_section,
|
||||
rel->r_offset,!bfd_link_pic (info)))
|
||||
rel->r_offset, TRUE))
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
|
@ -1443,7 +1454,7 @@ elf_arc_relocate_section (bfd * output_bfd,
|
|||
case R_ARC_32_ME:
|
||||
case R_ARC_PC32:
|
||||
case R_ARC_32_PCREL:
|
||||
if (bfd_link_pic (info)
|
||||
if (bfd_link_pic (info) && !bfd_link_pie (info)
|
||||
&& ((r_type != R_ARC_PC32 && r_type != R_ARC_32_PCREL)
|
||||
|| (h != NULL
|
||||
&& h->dynindx != -1
|
||||
|
@ -1509,6 +1520,11 @@ elf_arc_relocate_section (bfd * output_bfd,
|
|||
else
|
||||
{
|
||||
BFD_ASSERT (h->dynindx != -1);
|
||||
|
||||
/* This type of dynamic relocation cannot be created
|
||||
for code sections. */
|
||||
BFD_ASSERT ((input_section->flags & SEC_CODE) == 0);
|
||||
|
||||
if ((input_section->flags & SEC_ALLOC) != 0)
|
||||
relocate = FALSE;
|
||||
else
|
||||
|
@ -1715,7 +1731,7 @@ elf_arc_check_relocs (bfd * abfd,
|
|||
/* FALLTHROUGH */
|
||||
case R_ARC_PC32:
|
||||
case R_ARC_32_PCREL:
|
||||
if (bfd_link_pic (info)
|
||||
if (bfd_link_pic (info) && !bfd_link_pie (info)
|
||||
&& ((r_type != R_ARC_PC32 && r_type != R_ARC_32_PCREL)
|
||||
|| (h != NULL
|
||||
&& h->dynindx != -1
|
||||
|
|
|
@ -1,3 +1,7 @@
|
|||
2016-02-29 Claudiu Zissulescu <Claudiu.Zissulescu@synopsys.com>
|
||||
|
||||
* config/tc-arc.c: Enable code density instructions for ARC EM.
|
||||
|
||||
2016-02-26 H.J. Lu <hongjiu.lu@intel.com>
|
||||
|
||||
PR ld/19645
|
||||
|
|
|
@ -343,7 +343,7 @@ static const struct cpu_type
|
|||
{ "arc700", ARC_OPCODE_ARC700, bfd_mach_arc_arc700,
|
||||
E_ARC_MACH_ARC700, 0x00},
|
||||
{ "arcem", ARC_OPCODE_ARCv2EM, bfd_mach_arc_arcv2,
|
||||
EF_ARC_CPU_ARCV2EM, 0x00},
|
||||
EF_ARC_CPU_ARCV2EM, ARC_CD},
|
||||
{ "archs", ARC_OPCODE_ARCv2HS, bfd_mach_arc_arcv2,
|
||||
EF_ARC_CPU_ARCV2HS, ARC_CD},
|
||||
{ "all", ARC_OPCODE_BASE, bfd_mach_arc_arcv2,
|
||||
|
|
|
@ -1,3 +1,8 @@
|
|||
2016-02-29 Cupertino Miranda <Cupertino.Miranda@synopsys.com>
|
||||
|
||||
* scripttempl/arclinux.sc: Force .tdata and .tbss to always be
|
||||
generated.
|
||||
|
||||
2016-02-26 Renlin Li <renlin.li@arm.com>
|
||||
|
||||
* testsuite/ld-aarch64/aarch64-elf.exp: Run new testcases.
|
||||
|
|
|
@ -326,8 +326,8 @@ cat <<EOF
|
|||
.data1 ${RELOCATING-0} : { *(.data1) }
|
||||
/* TLS local dynamic uses .tdata as a reference point. */
|
||||
${RELOCATING+${CREATE_SHLIB+PROVIDE_HIDDEN (.tdata = .);}}
|
||||
.tdata ${RELOCATING-0} : { *(.tdata${RELOCATING+ .tdata.* .gnu.linkonce.td.*}) }
|
||||
.tbss ${RELOCATING-0} : { *(.tbss${RELOCATING+ .tbss.* .gnu.linkonce.tb.*})${RELOCATING+ *(.tcommon)} }
|
||||
.tdata ${RELOCATING-0} : { PROVIDE_HIDDEN(.tdata = .); *(.tdata${RELOCATING+ .tdata.* .gnu.linkonce.td.*}) }
|
||||
.tbss ${RELOCATING-0} : { PROVIDE_HIDDEN(.tbss = .); *(.tbss${RELOCATING+ .tbss.* .gnu.linkonce.tb.*})${RELOCATING+ *(.tcommon)} }
|
||||
.eh_frame ${RELOCATING-0} : { KEEP (*(.eh_frame)) }
|
||||
.gcc_except_table ${RELOCATING-0} : { *(.gcc_except_table) }
|
||||
${WRITABLE_RODATA+${RODATA}}
|
||||
|
|
Loading…
Reference in a new issue