This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug middle-end/11397] [3.3/3.4 Regression] weak aliases broken on Tru64 UNIX
- From: "roger at eyesopen dot com" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: 7 Dec 2003 03:04:57 -0000
- Subject: [Bug middle-end/11397] [3.3/3.4 Regression] weak aliases broken on Tru64 UNIX
- References: <20030701204841.11397.ro@techfak.uni-bielefeld.de>
- Reply-to: gcc-bugzilla at gcc dot gnu dot org
------- Additional Comments From roger at eyesopen dot com 2003-12-07 03:04 -------
The sequence of events appears to be that we call declare_weak with the
function decl of "a", which then gets added to the weak_decls list.
Next we call assemble_alias with the same decl for "a", which calls
make_decl_rtl which sets the DECL's assember name to "a" and it is this
function, not globalize_decl which generates the ".weakext a __a".
At this point, from what I can see a's decl doesn't mention __a!
Next we call globalize_decl on the decl for __a, which doesn't have the
DECL_WEAK flag set! Even if it did its' assembler name is "__a" and
the only entry on the weak_decls list has an assembler name of "a", so
they don't match. Either way the decl for "a" is left on the weak_decls
list.
Finally, we call weak_finish, which discovers that the weak_decls list
contains a single decl, "a", which it writes out without alias information.
Hence the second ".weakent a" which screws things up.
I have absolutely no idea what the intended sequence of events and data
structure invariants is supposed to be, but I'm happy to provide
alphaev67-dec-osf5.1 feedback to anyone who does!
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=11397