From: H.J. Lu Date: Wed, 9 Mar 2016 16:27:03 +0000 (-0800) Subject: Workaround a C++ bug in GCC 4.2 in gold test X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=fd91f0024caec4cbca0c53a175cfaa9bc2c5dc5a;p=binutils-gdb.git Workaround a C++ bug in GCC 4.2 in gold test G++ in GCC 4.2 silently ignores --- __attribute__ ((section(".rodata.v1_a2"))) const short rodata_item1 = 101; --- which leads to plugin_layout_with_alignment test failure with Expected 12 sections, found 8 sections since 4 .rodata sections are missing. As a workaround, this patch changes plugin_layout_with_alignment test from C++ to C. * testsuite/plugin_layout_with_alignment.cc: Renamed to .. * testsuite/plugin_layout_with_alignment.c: This. * testsuite/Makefile.am (plugin_layout_with_alignment.o): Updated. (plugin_layout_with_alignment): Likewise. * testsuite/Makefile.in: Regenerated. --- diff --git a/gold/ChangeLog b/gold/ChangeLog index e1748b18971..d2b64338436 100644 --- a/gold/ChangeLog +++ b/gold/ChangeLog @@ -1,3 +1,11 @@ +2016-03-09 H.J. Lu + + * testsuite/plugin_layout_with_alignment.cc: Renamed to .. + * testsuite/plugin_layout_with_alignment.c: This. + * testsuite/Makefile.am (plugin_layout_with_alignment.o): Updated. + (plugin_layout_with_alignment): Likewise. + * testsuite/Makefile.in: Regenerated. + 2016-03-08 Cary Coutant PR 19751 diff --git a/gold/testsuite/Makefile.am b/gold/testsuite/Makefile.am index 2920587bac7..f5528d12a07 100644 --- a/gold/testsuite/Makefile.am +++ b/gold/testsuite/Makefile.am @@ -2110,10 +2110,10 @@ plugin_section_order.o: plugin_section_order.c check_SCRIPTS += plugin_layout_with_alignment.sh check_DATA += plugin_layout_with_alignment.stdout MOSTLYCLEANFILES += plugin_layout_with_alignment -plugin_layout_with_alignment.o: plugin_layout_with_alignment.cc - $(CXXCOMPILE) -O0 -c -ffunction-sections -fdata-sections -g -o $@ $< +plugin_layout_with_alignment.o: plugin_layout_with_alignment.c + $(COMPILE) -O0 -c -ffunction-sections -fdata-sections -g -o $@ $< plugin_layout_with_alignment: plugin_layout_with_alignment.o plugin_section_alignment.so gcctestdir/ld - $(CXXLINK) -Bgcctestdir/ -Wl,--plugin,"./plugin_section_alignment.so" plugin_layout_with_alignment.o + $(LINK) -Bgcctestdir/ -Wl,--plugin,"./plugin_section_alignment.so" plugin_layout_with_alignment.o plugin_layout_with_alignment.stdout: plugin_layout_with_alignment $(TEST_NM) -n --synthetic plugin_layout_with_alignment > plugin_layout_with_alignment.stdout diff --git a/gold/testsuite/Makefile.in b/gold/testsuite/Makefile.in index 4eafa543d0b..988d6f7c36f 100644 --- a/gold/testsuite/Makefile.in +++ b/gold/testsuite/Makefile.in @@ -6146,10 +6146,10 @@ uninstall-am: @GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@ $(LINK) -Bgcctestdir/ -shared plugin_section_order.o @GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@plugin_section_order.o: plugin_section_order.c @GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@ $(COMPILE) -O0 -c -fpic -o $@ $< -@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@plugin_layout_with_alignment.o: plugin_layout_with_alignment.cc -@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@ $(CXXCOMPILE) -O0 -c -ffunction-sections -fdata-sections -g -o $@ $< +@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@plugin_layout_with_alignment.o: plugin_layout_with_alignment.c +@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@ $(COMPILE) -O0 -c -ffunction-sections -fdata-sections -g -o $@ $< @GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@plugin_layout_with_alignment: plugin_layout_with_alignment.o plugin_section_alignment.so gcctestdir/ld -@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@ $(CXXLINK) -Bgcctestdir/ -Wl,--plugin,"./plugin_section_alignment.so" plugin_layout_with_alignment.o +@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@ $(LINK) -Bgcctestdir/ -Wl,--plugin,"./plugin_section_alignment.so" plugin_layout_with_alignment.o @GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@plugin_layout_with_alignment.stdout: plugin_layout_with_alignment @GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@ $(TEST_NM) -n --synthetic plugin_layout_with_alignment > plugin_layout_with_alignment.stdout diff --git a/gold/testsuite/plugin_layout_with_alignment.c b/gold/testsuite/plugin_layout_with_alignment.c new file mode 100644 index 00000000000..5d6ff1f7e2d --- /dev/null +++ b/gold/testsuite/plugin_layout_with_alignment.c @@ -0,0 +1,72 @@ +// plugin_layout_with_alignment.cc -- a test case for gold + +// Copyright (C) 2016 Free Software Foundation, Inc. +// Written by Than McIntosh . + +// This file is part of gold. + +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 3 of the License, or +// (at your option) any later version. + +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, +// MA 02110-1301, USA. + +// Verify that plugin interfaces for section size and alignment work +// correctly, and that section ordering via plugins is working +// for .bss/.rodata/.data sections. + +// --- Initialized .rodata items + +__attribute__ ((section(".rodata.v1_a2"))) +const short rodata_item1 = 101; + +__attribute__ ((section(".rodata.v2_a1"))) +const char rodata_item2 = 'a'; + +__attribute__ ((section(".rodata.v3_a8"))) +const double rodata_item3 = 777.777; + +__attribute__ ((section(".rodata.v4_a1"))) +const char rodata_item4[7] = {'1', '2', '3', '4', '5', '6', '7'}; + +// --- Initialized .data items + +__attribute__ ((section(".data.v1_a2"))) +short rwdata_item1 = 101; + +__attribute__ ((section(".data.v2_a1"))) +char rwdata_item2 = 'a'; + +__attribute__ ((section(".data.v3_a8"))) +double rwdata_item3 = 'b'; + +__attribute__ ((section(".data.v4_a1"))) +char rwdata_item4[3] = {'a', 'b', 'c'}; + +// --- Uninitialized .data items + +__attribute__ ((section(".bss.v1_a2"))) +short bss_item1; + +__attribute__ ((section(".bss.v2_a1"))) +char bss_item2; + +__attribute__ ((section(".bss.v3_a8"))) +struct blah { union { double d; char c; } u; } bss_item3; + +__attribute__ ((section(".bss.v4_a1"))) +char bss_item4[3]; + +int main (void) +{ + return 0; +} diff --git a/gold/testsuite/plugin_layout_with_alignment.cc b/gold/testsuite/plugin_layout_with_alignment.cc deleted file mode 100644 index 0824d74a912..00000000000 --- a/gold/testsuite/plugin_layout_with_alignment.cc +++ /dev/null @@ -1,72 +0,0 @@ -// plugin_layout_with_alignment.cc -- a test case for gold - -// Copyright (C) 2016 Free Software Foundation, Inc. -// Written by Than McIntosh . - -// This file is part of gold. - -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation; either version 3 of the License, or -// (at your option) any later version. - -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, -// MA 02110-1301, USA. - -// Verify that plugin interfaces for section size and alignment work -// correctly, and that section ordering via plugins is working -// for .bss/.rodata/.data sections. - -// --- Initialized .rodata items - -__attribute__ ((section(".rodata.v1_a2"))) -const short rodata_item1 = 101; - -__attribute__ ((section(".rodata.v2_a1"))) -const char rodata_item2 = 'a'; - -__attribute__ ((section(".rodata.v3_a8"))) -const double rodata_item3 = 777.777; - -__attribute__ ((section(".rodata.v4_a1"))) -const char rodata_item4[7] = {'1', '2', '3', '4', '5', '6', '7'}; - -// --- Initialized .data items - -__attribute__ ((section(".data.v1_a2"))) -short rwdata_item1 = 101; - -__attribute__ ((section(".data.v2_a1"))) -char rwdata_item2 = 'a'; - -__attribute__ ((section(".data.v3_a8"))) -double rwdata_item3 = 'b'; - -__attribute__ ((section(".data.v4_a1"))) -char rwdata_item4[3] = {'a', 'b', 'c'}; - -// --- Uninitialized .data items - -__attribute__ ((section(".bss.v1_a2"))) -short bss_item1; - -__attribute__ ((section(".bss.v2_a1"))) -char bss_item2; - -__attribute__ ((section(".bss.v3_a8"))) -struct blah { union { double d; char c; } u; } bss_item3; - -__attribute__ ((section(".bss.v4_a1"))) -char bss_item4[3]; - -int main () -{ - return 0; -}