PR middle-end/47610
* varasm.c (default_section_type_flags): If decl is NULL,
and name is .data.rel.ro or .data.rel.ro.local, set SECTION_RELRO
bit.
* gcc.dg/pr47610.c: New test.
From-SVN: r169855
+2011-02-05 Jakub Jelinek <jakub@redhat.com>
+
+ PR middle-end/47610
+ * varasm.c (default_section_type_flags): If decl is NULL,
+ and name is .data.rel.ro or .data.rel.ro.local, set SECTION_RELRO
+ bit.
+
2011-02-05 Jie Zhang <jie@codesourcery.com>
PR debug/42631
+2011-02-05 Jakub Jelinek <jakub@redhat.com>
+
+ PR middle-end/47610
+ * gcc.dg/pr47610.c: New test.
+
2011-02-05 Jie Zhang <jie@codesourcery.com>
PR debug/42631
--- /dev/null
+/* PR middle-end/47610 */
+/* { dg-do compile } */
+/* { dg-options "-O2 -fpic" { target fpic } } */
+struct S { const char *s; };
+const struct S s[] = { "s" };
+extern void foo (void (*) (void));
+static void bar (void) {}
+void baz () { foo (bar); }
flags = SECTION_WRITE;
}
else
- flags = SECTION_WRITE;
+ {
+ flags = SECTION_WRITE;
+ if (strcmp (name, ".data.rel.ro") == 0
+ || strcmp (name, ".data.rel.ro.local") == 0)
+ flags |= SECTION_RELRO;
+ }
if (decl && DECL_ONE_ONLY (decl))
flags |= SECTION_LINKONCE;