* config/tc-ppc.c (toc_reloc_types): New variable.

(md_assemble): Set it.
	(ppc_frob_file_before_adjust): Don't warn about toc section size
	if we have large toc relocs and no small toc relocs.
This commit is contained in:
Alan Modra
2010-07-01 04:50:21 +00:00
parent bddc25c9ca
commit 01efc3af7b
2 changed files with 33 additions and 0 deletions
+12
View File
@@ -1,3 +1,15 @@
2010-07-01 Alan Modra <amodra@gmail.com>
* config/tc-ppc.c (toc_reloc_types): New variable.
(md_assemble): Set it.
(ppc_frob_file_before_adjust): Don't warn about toc section size
if we have large toc relocs and no small toc relocs.
2010-06-29 Alan Modra <amodra@gmail.com>
* config/tc-moxie.c (md_apply_fix): Delete set but otherwise
unused variable.
2010-06-29 Alan Modra <amodra@gmail.com>
* config/tc-maxq.h: Delete file.
+21
View File
@@ -183,6 +183,12 @@ int ppc_cie_data_alignment;
/* The type of processor we are assembling for. This is one or more
of the PPC_OPCODE flags defined in opcode/ppc.h. */
ppc_cpu_t ppc_cpu = 0;
/* Flags set on encountering toc relocs. */
enum {
has_large_toc_reloc = 1,
has_small_toc_reloc = 2
} toc_reloc_types;
/* The target specific pseudo-ops which we support. */
@@ -2168,6 +2174,7 @@ ppc_frob_file_before_adjust (void)
toc = bfd_get_section_by_name (stdoutput, ".toc");
if (toc != NULL
&& toc_reloc_types != has_large_toc_reloc
&& bfd_section_size (stdoutput, toc) > 0x10000)
as_warn (_("TOC section size exceeds 64k"));
@@ -2783,6 +2790,20 @@ md_assemble (char *str)
}
}
switch (reloc)
{
case BFD_RELOC_PPC_TOC16:
toc_reloc_types |= has_small_toc_reloc;
break;
case BFD_RELOC_PPC64_TOC16_LO:
case BFD_RELOC_PPC64_TOC16_HI:
case BFD_RELOC_PPC64_TOC16_HA:
toc_reloc_types |= has_large_toc_reloc;
break;
default:
break;
}
if (ppc_obj64
&& (operand->flags & (PPC_OPERAND_DS | PPC_OPERAND_DQ)) != 0)
{