This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[Bug middle-end/11397] [3.3/3.4 Regression] weak aliases broken on Tru64 UNIX


------- 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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]