Adam Sulmicki <[EMAIL PROTECTED]> writes:

>       In spirit making OSS better, I took the extra effor to report
>       findings back to both lists. In reward I got flamed on both list.

You got flamed on the gcc list?  I don't see any flames there.  All I
told you was to use the gcc-help mailing list, which was correct.  We
have different mailing lists for a reason.  Sending e-mail to the
wrong list simply wastes people's time.

I also did my best to answer your question.  In your original message
you didn't mention that there was an mcount variable in your program,
so it's not surprising that I wasn't able to identify the problem.


>       * Rename mcount in mplayer/libmenu/menu.c to something else.
> 
>       * document mcount in gcc man page
> 
>       * gcc prints warning.
> 
>       * do nothing.
> 
> I can immagine that gcc developers might have intentionally left
> mcount() visible to user space so that user can replace gcc's mcount()
> with their own implementation.

gcc does not provide the function which in this case is called
mcount().  That function comes from the C library.

The C library used on GNU/Linux systems, glibc, actually provides the
function _mcount, with a weak alias named mcount.  So this seems to be
a bug in gcc: it should be calling _mcount.

In fact, by default, gcc for the i386 targets will call _mcount.  gcc
for i386 GNU/Linux targets was changed to call mcount instead of
_mcount with this patch:

Thu Mar 30 06:20:36 1995  H.J. Lu   ([EMAIL PROTECTED])

        * configure (i[345]86-*-linux*): Set xmake_file=x-linux,
        tm_file=i386/linux.h, and don't set extra_parts.
        (i[345]86-*-linux*aout*): New configuration.
        (i[345]86-*-linuxelf): Deleted.
        * config/linux{,-aout}.h, config/x-linux, config/xm-linux.h: New files.
        * config/i386/linux-aout.h: New file.
        * config/i386/linux.h: Extensive modifications to use ELF format
        as default.
        (LIB_SPEC): Don't use libc_p.a for -p. don't use libg.a
        unless for -ggdb.
        (LINUX_DEFAULT_ELF): Defined.
        * config/i386/linuxelf.h,config/i386/x-linux: Files deleted.
        * config/i386/xm-linux.h: Just include xm-i386.h and xm-linux.h.

I believe that was during the time H.J. was maintaining a separate
branch of glibc for GNU/Linux systems.  Presumably his version
provided mcount but not _mcount.  I haven't tried to investigate
further.

In any case clearly gcc for i386 GNU/Linux systems today should call
_mcount rather than mcount.  I will make that change.

Thanks for pursuing this.

Ian

Reply via email to