* ldlang.c (lang_output_section_statement_lookup_1): Don't cast a
unary & address operator, as that breaks GCC's strict aliasing rules.
This commit is contained in:
parent
bec15d1f6a
commit
8980686623
2 changed files with 12 additions and 1 deletions
|
@ -1,3 +1,9 @@
|
||||||
|
2005-07-28 DJ Delorie <dj@redhat.com>
|
||||||
|
|
||||||
|
* ldlang.c (lang_output_section_statement_lookup_1): Don't cast a
|
||||||
|
unary & address operator, as that breaks GCC's strict aliasing
|
||||||
|
rules.
|
||||||
|
|
||||||
2005-07-25 Jan Hubicka <jh@suse.cz>
|
2005-07-25 Jan Hubicka <jh@suse.cz>
|
||||||
H.J. Lu <hongjiu.lu@intel.com>
|
H.J. Lu <hongjiu.lu@intel.com>
|
||||||
|
|
||||||
|
|
|
@ -1010,6 +1010,7 @@ static lang_output_section_statement_type *
|
||||||
lang_output_section_statement_lookup_1 (const char *const name, int constraint)
|
lang_output_section_statement_lookup_1 (const char *const name, int constraint)
|
||||||
{
|
{
|
||||||
lang_output_section_statement_type *lookup;
|
lang_output_section_statement_type *lookup;
|
||||||
|
lang_output_section_statement_type **nextp;
|
||||||
|
|
||||||
lookup = lang_output_section_find_1 (name, constraint);
|
lookup = lang_output_section_find_1 (name, constraint);
|
||||||
if (lookup == NULL)
|
if (lookup == NULL)
|
||||||
|
@ -1038,9 +1039,13 @@ lang_output_section_statement_lookup_1 (const char *const name, int constraint)
|
||||||
lookup->update_dot_tree = NULL;
|
lookup->update_dot_tree = NULL;
|
||||||
lookup->phdrs = NULL;
|
lookup->phdrs = NULL;
|
||||||
|
|
||||||
|
/* GCC's strict aliasing rules prevent us from just casting the
|
||||||
|
address, so we store the pointer in a variable and cast that
|
||||||
|
instead. */
|
||||||
|
nextp = &lookup->next;
|
||||||
lang_statement_append (&lang_output_section_statement,
|
lang_statement_append (&lang_output_section_statement,
|
||||||
(lang_statement_union_type *) lookup,
|
(lang_statement_union_type *) lookup,
|
||||||
(lang_statement_union_type **) &lookup->next);
|
(lang_statement_union_type **) nextp);
|
||||||
}
|
}
|
||||||
return lookup;
|
return lookup;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue