This is the mail archive of the gcc@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]

Re: gcc, mplayer and profile (mcount)


Adam Sulmicki <adam@cfar.umd.edu> 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   (hjl@nynexst.com)

	* 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


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