From fcef3abdc5b8ff77404e1cab97570a8431bcde5d Mon Sep 17 00:00:00 2001 From: Joseph Myers Date: Thu, 28 Sep 2017 14:08:28 +0100 Subject: [PATCH] Avoid assembler warnings from AArch64 constructor/destructor priorities. Many GCC tests fail for AArch64 with current binutils because of assembler warnings of the form "Warning: ignoring incorrect section type for .init_array.00100". The same issue was fixed for ARM in r247015 by using SECTION_NOTYPE when creating those sections; this patch applies the same fix to AArch64. Tested with no regressions with cross to aarch64-linux-gnu. * config/aarch64/aarch64.c (aarch64_elf_asm_constructor) (aarch64_elf_asm_destructor): Pass SECTION_NOTYPE to get_section when creating .init_array and .fini_array sections with priority specified. From-SVN: r253252 --- gcc/ChangeLog | 7 +++++++ gcc/config/aarch64/aarch64.c | 4 ++-- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 71b1408496a..718f0426368 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,10 @@ +2017-09-28 Joseph Myers + + * config/aarch64/aarch64.c (aarch64_elf_asm_constructor) + (aarch64_elf_asm_destructor): Pass SECTION_NOTYPE to get_section + when creating .init_array and .fini_array sections with priority + specified. + 2017-09-27 Christophe Lyon PR target/71727 diff --git a/gcc/config/aarch64/aarch64.c b/gcc/config/aarch64/aarch64.c index 4c411df12ce..23f5afff95a 100644 --- a/gcc/config/aarch64/aarch64.c +++ b/gcc/config/aarch64/aarch64.c @@ -6095,7 +6095,7 @@ aarch64_elf_asm_constructor (rtx symbol, int priority) -Wformat-truncation false positive, use a larger size. */ char buf[23]; snprintf (buf, sizeof (buf), ".init_array.%.5u", priority); - s = get_section (buf, SECTION_WRITE, NULL); + s = get_section (buf, SECTION_WRITE | SECTION_NOTYPE, NULL); switch_to_section (s); assemble_align (POINTER_SIZE); assemble_aligned_integer (POINTER_BYTES, symbol); @@ -6115,7 +6115,7 @@ aarch64_elf_asm_destructor (rtx symbol, int priority) -Wformat-truncation false positive, use a larger size. */ char buf[23]; snprintf (buf, sizeof (buf), ".fini_array.%.5u", priority); - s = get_section (buf, SECTION_WRITE, NULL); + s = get_section (buf, SECTION_WRITE | SECTION_NOTYPE, NULL); switch_to_section (s); assemble_align (POINTER_SIZE); assemble_aligned_integer (POINTER_BYTES, symbol); -- 2.30.2