2019-08-29 Jakub Jelinek Backported from mainline 2019-06-12 Jakub Jelinek PR c/90760 * symtab.c (symtab_node::set_section): Allow being called on aliases as long as they aren't analyzed yet. * gcc.dg/pr90760.c: New test. --- gcc/symtab.c (revision 272799) +++ gcc/symtab.c (revision 272800) @@ -1553,7 +1553,7 @@ symtab_node::set_section (symtab_node *n void symtab_node::set_section (const char *section) { - gcc_assert (!this->alias); + gcc_assert (!this->alias || !this->analyzed); call_for_symbol_and_aliases (symtab_node::set_section, const_cast(section), true); } --- gcc/testsuite/gcc.dg/pr90760.c (nonexistent) +++ gcc/testsuite/gcc.dg/pr90760.c (revision 272800) @@ -0,0 +1,8 @@ +/* PR c/90760 */ +/* { dg-do compile } */ +/* { dg-require-named-sections "" } */ + +void bar (void) {} +void foo (void) __attribute__ ((alias ("bar"))); /* { dg-error "section of alias 'foo' must match section of its target" } */ +void foo (void) __attribute__ ((section ("baz"))); +void qux (void) __attribute__ ((alias ("bar"), section ("baz"))); /* { dg-error "section of alias 'qux' must match section of its target" } */