[committed] Fix thousands of testsuite failures for the c6x
Jeff Law
law@redhat.com
Fri Jul 12 15:46:00 GMT 2019
My tester reports ~22000 unexpected failures for the c6x port. The vast
majority are due to a linker warning when the type of the .far section
changes.
It turns out we can emit two declarations for the .far section. One
with @nobits, the other without. And since the .far section is a bss
section the linker complains. Those complaints are picked up by dejagnu
and thus every test that links fails.
This patch clears the SECTION_NOTYPE flag for the .far section in the
path that declares the .far section without the @nobits tag. The net
result is we go from ~22000 failures to just several hundred (note I'm
using a dummy simulator that always signals success -- so it's not
testing code correctness, just that we can compile/link).
Committed to the trunk.
Jeff
-------------- next part --------------
commit 713c53b30d7b74df412c89a11f4714e0ca08ee22
Author: Jeff Law <law@redhat.com>
Date: Fri Jul 12 09:40:16 2019 -0600
* config/c6x/c6x.c (c6x_section_type): Clear SECTION_NOTYPE
for the ".far" section.
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 84fee9e0dd9..4f32256c8d8 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+2019-07-12 Jeff Law <law@redhat.com>
+
+ * config/c6x/c6x.c (c6x_section_type): Clear SECTION_NOTYPE
+ for the ".far" section.
+
2019-07-12 Richard Biener <rguenther@suse.de>
PR tree-optimization/91145
diff --git a/gcc/config/c6x/c6x.c b/gcc/config/c6x/c6x.c
index 93841e4abef..f6c9bbfc674 100644
--- a/gcc/config/c6x/c6x.c
+++ b/gcc/config/c6x/c6x.c
@@ -1083,6 +1083,14 @@ c6x_section_type_flags (tree decl, const char *name, int reloc)
flags |= default_section_type_flags (decl, name, reloc);
+ /* The ".far" section will be declared with @nobits elsewhere.
+ But when declared via this path it will not have the @nobits
+ flag because of SECTION_NOTYPE. This causes linker warnings
+ due to the mismatched attribute. Clearing SECTION_NOTYPE
+ for the ".far" section is sufficient to fix this problem. */
+ if (strcmp (name, ".far") == 0)
+ flags &= ~SECTION_NOTYPE;
+
return flags;
}
More information about the Gcc-patches
mailing list