|
|
22033d |
2016-05-04 Alan Modra <amodra@gmail.com>
|
|
|
22033d |
|
|
|
22033d |
* config/rs6000/rs6000.c (rs6000_elf_output_toc_section_asm_op):
|
|
|
22033d |
Align .toc.
|
|
|
22033d |
|
|
|
22033d |
--- gcc/config/rs6000/rs6000.c
|
|
|
22033d |
+++ gcc/config/rs6000/rs6000.c
|
|
|
22033d |
@@ -31339,8 +31339,8 @@ rs6000_elf_output_toc_section_asm_op (const void *data ATTRIBUTE_UNUSED)
|
|
|
22033d |
{
|
|
|
22033d |
if (!toc_initialized)
|
|
|
22033d |
{
|
|
|
22033d |
- toc_initialized = 1;
|
|
|
22033d |
fprintf (asm_out_file, "%s\n", TOC_SECTION_ASM_OP);
|
|
|
22033d |
+ ASM_OUTPUT_ALIGN (asm_out_file, TARGET_64BIT ? 3 : 2);
|
|
|
22033d |
(*targetm.asm_out.internal_label) (asm_out_file, "LCTOC", 0);
|
|
|
22033d |
fprintf (asm_out_file, "\t.tc ");
|
|
|
22033d |
ASM_OUTPUT_INTERNAL_LABEL_PREFIX (asm_out_file, "LCTOC1[TC],");
|
|
|
22033d |
@@ -31348,20 +31348,30 @@ rs6000_elf_output_toc_section_asm_op (const void *data ATTRIBUTE_UNUSED)
|
|
|
22033d |
fprintf (asm_out_file, "\n");
|
|
|
22033d |
|
|
|
22033d |
fprintf (asm_out_file, "%s\n", MINIMAL_TOC_SECTION_ASM_OP);
|
|
|
22033d |
+ ASM_OUTPUT_ALIGN (asm_out_file, TARGET_64BIT ? 3 : 2);
|
|
|
22033d |
ASM_OUTPUT_INTERNAL_LABEL_PREFIX (asm_out_file, "LCTOC1");
|
|
|
22033d |
fprintf (asm_out_file, " = .+32768\n");
|
|
|
22033d |
+ toc_initialized = 1;
|
|
|
22033d |
}
|
|
|
22033d |
else
|
|
|
22033d |
fprintf (asm_out_file, "%s\n", MINIMAL_TOC_SECTION_ASM_OP);
|
|
|
22033d |
}
|
|
|
22033d |
else if ((DEFAULT_ABI == ABI_AIX || DEFAULT_ABI == ABI_ELFv2)
|
|
|
22033d |
&& !TARGET_RELOCATABLE)
|
|
|
22033d |
- fprintf (asm_out_file, "%s\n", TOC_SECTION_ASM_OP);
|
|
|
22033d |
+ {
|
|
|
22033d |
+ fprintf (asm_out_file, "%s\n", TOC_SECTION_ASM_OP);
|
|
|
22033d |
+ if (!toc_initialized)
|
|
|
22033d |
+ {
|
|
|
22033d |
+ ASM_OUTPUT_ALIGN (asm_out_file, TARGET_64BIT ? 3 : 2);
|
|
|
22033d |
+ toc_initialized = 1;
|
|
|
22033d |
+ }
|
|
|
22033d |
+ }
|
|
|
22033d |
else
|
|
|
22033d |
{
|
|
|
22033d |
fprintf (asm_out_file, "%s\n", MINIMAL_TOC_SECTION_ASM_OP);
|
|
|
22033d |
if (!toc_initialized)
|
|
|
22033d |
{
|
|
|
22033d |
+ ASM_OUTPUT_ALIGN (asm_out_file, TARGET_64BIT ? 3 : 2);
|
|
|
22033d |
ASM_OUTPUT_INTERNAL_LABEL_PREFIX (asm_out_file, "LCTOC1");
|
|
|
22033d |
fprintf (asm_out_file, " = .+32768\n");
|
|
|
22033d |
toc_initialized = 1;
|