Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!
Bug 175523 - gcov cannot determine which compiler to use.
Summary: gcov cannot determine which compiler to use.
Status: RESOLVED INVALID
Alias: None
Product: Gentoo Linux
Classification: Unclassified
Component: [OLD] Development (show other bugs)
Hardware: AMD64 Linux
: High normal (vote)
Assignee: Gentoo Toolchain Maintainers
URL:
Whiteboard:
Keywords:
: 176524 (view as bug list)
Depends on:
Blocks:
 
Reported: 2007-04-22 05:27 UTC by OKUMURA N. Shin-ya
Modified: 2007-05-02 19:01 UTC (History)
1 user (show)

See Also:
Package list:
Runtime testing required: ---


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description OKUMURA N. Shin-ya 2007-04-22 05:27:33 UTC
/usr/bin/gcov says, "gcc-config error: gcov wrapper: Could not determine which compiler to use.  Invalid CTARGET or CTARGET has no selected profile."

$(gcc-config -B)/gcov works fine.

Reproducible: Always

Steps to Reproduce:
1. /usr/bin/gcov

Actual Results:  
$ gcov
gcc-config error: gcov wrapper: Could not determine which compiler to use.  Invalid CTARGET or CTARGET has no selected profile.
$

Expected Results:  
$ $(gcc-config -B)/gcov
Usage: gcov [OPTION]... SOURCEFILE

Print code coverage information.

  -h, --help                      Print this help, then exit
  -v, --version                   Print version number, then exit
  -a, --all-blocks                Show information for every basic block
  -b, --branch-probabilities      Include branch probabilities in output
  -c, --branch-counts             Given counts of branches taken
                                    rather than percentages
  -n, --no-output                 Do not create an output file
  -l, --long-file-names           Use long output file names for included
                                    source files
  -f, --function-summaries        Output summaries for each function
  -o, --object-directory DIR|FILE Search for object files in DIR or called FILE
  -p, --preserve-paths            Preserve all pathname components
  -u, --unconditional-branches    Show unconditional branch counts too

For bug reporting instructions, please see:
<URL:http://bugs.gentoo.org/>.
$

$ emerge --info
Portage 2.1.2.4 (default-linux/amd64/2006.1/desktop, gcc-4.1.2, glibc-2.5-r1, 2.6.20-gentoo-r3 x86_64)
=================================================================
System uname: 2.6.20-gentoo-r3 x86_64 AMD Athlon(tm) 64 Processor 3500+
Gentoo Base System release 1.12.10
Timestamp of tree: Fri, 20 Apr 2007 03:01:02 +0000
ccache version 2.4 [disabled]
dev-java/java-config: 1.3.7, 2.0.31-r7
dev-lang/python:     2.3.6, 2.4.4
dev-python/pycrypto: 2.0.1-r5
dev-util/ccache:     2.4-r6
sys-apps/sandbox:    1.2.18.1
sys-devel/autoconf:  2.13, 2.61
sys-devel/automake:  1.4_p6, 1.5, 1.6.3, 1.7.9-r1, 1.8.5-r3, 1.9.6-r2, 1.10
sys-devel/binutils:  2.17
sys-devel/gcc-config: 1.3.16
sys-devel/libtool:   1.5.23b
virtual/os-headers:  2.6.20-r2
ACCEPT_KEYWORDS="amd64 ~amd64"
AUTOCLEAN="yes"
CBUILD="x86_64-pc-linux-gnu"
CFLAGS="-O2 -pipe"
CHOST="x86_64-pc-linux-gnu"
CONFIG_PROTECT="/etc /usr/kde/3.5/env /usr/kde/3.5/share/config /usr/kde/3.5/shutdown /usr/share/X11/xkb /usr/share/config /var/bind"
CONFIG_PROTECT_MASK="/etc/env.d /etc/env.d/java/ /etc/gconf /etc/java-config/vms/ /etc/php/apache1-php5/ext-active/ /etc/php/apache2-php5/ext-active/ /etc/php/cgi-php5/ext-active/ /etc/php/cli-php5/ext-active/ /etc/revdep-rebuild /etc/terminfo /etc/texmf/web2c"
CXXFLAGS="-O2 -pipe"
DISTDIR="/usr/portage/distfiles"
FEATURES="distlocks metadata-transfer sandbox sfperms strict"
GENTOO_MIRRORS="http://gentoo.gg3.net http://mirror.gentoo.gr.jp http://gentoo.mirroed.ca"
LANG="ja_JP.eucJP"
LINGUAS="ja en"
PKGDIR="/usr/portage/packages"
PORTAGE_RSYNC_OPTS="--recursive --links --safe-links --perms --times --compress --force --whole-file --delete --delete-after --stats --timeout=180 --exclude=/distfiles --exclude=/local --exclude=/packages --filter=H_**/files/digest-*"
PORTAGE_TMPDIR="/var/tmp"
PORTDIR="/usr/portage"
PORTDIR_OVERLAY="/usr/local/portage"
SYNC="rsync://rsync.gentoo.org/gentoo-portage"
USE="X acl alsa amd64 apache2 arts audiofile avi berkdb bitmap-fonts bonobo bzlib cairo canna cdparanoia cdr chardet chasen cjk cli cracklib crypt cscope cups dbus doc dri dv dvd dvdr eds emboss emul-linux-x86 encode esd examples fam firefox flash font-server fortran gcj gdbm gif gnome gpm gstreamer gtk gtk2 guile hal iconv ipv6 isdnlog java java5 javamail javascript jpeg jpeg2k kde ldap libg++ libwww m17n-lib mad mbox midi mikmod milter mime mng modplug motif mp3 mpeg mplayer mule ncurses nls nptl nptlonly oav objc ogg oggvorbis opengl oss pam pcre pdf perl php png postgres ppds pppd python qt qt3 qt4 quicktime readline reflection samba sdk sdl session sid slang spell spl ssl svg symlink tcltk tcpd threads tiff timidity truetype truetype-fonts type1-fonts unicode usb vorbis wma wmf xml xml2 xorg xpm xv zlib" ALSA_CARDS="ali5451 als4000 atiixp atiixp-modem bt87x ca0106 cmipci emu10k1x ens1370 ens1371 es1938 es1968 fm801 hda-intel intel8x0 intel8x0m maestro3 trident usb-audio via82xx via82xx-modem ymfpci" ALSA_PCM_PLUGINS="adpcm alaw asym copy dmix dshare dsnoop empty extplug file hooks iec958 ioplug ladspa lfloat linear meter mulaw multi null plug rate route share shm softvol" ELIBC="glibc" INPUT_DEVICES="keyboard mouse evdev" KERNEL="linux" LCD_DEVICES="bayrad cfontz cfontz633 glk hd44780 lb216 lcdm001 mtxorb ncurses text" LINGUAS="ja en" USERLAND="GNU" VIDEO_CARDS="apm ark ati chips cirrus cyrix dummy fbdev glint i128 i810 mga neomagic nv rendition s3 s3virge savage siliconmotion sis sisusb tdfx tga trident tseng v4l vesa vga via vmware voodoo"
Unset:  CTARGET, EMERGE_DEFAULT_OPTS, INSTALL_MASK, LC_ALL, LDFLAGS, MAKEOPTS, PORTAGE_COMPRESS, PORTAGE_COMPRESS_FLAGS, PORTAGE_RSYNC_EXTRA_OPTS

$ gcc-config -l
 [1] x86_64-pc-linux-gnu-3.3.6
 [2] x86_64-pc-linux-gnu-3.3.6-hardened
 [3] x86_64-pc-linux-gnu-3.3.6-hardenednopie
 [4] x86_64-pc-linux-gnu-3.3.6-hardenednopiessp
 [5] x86_64-pc-linux-gnu-3.3.6-hardenednossp
 [6] x86_64-pc-linux-gnu-3.4.6
 [7] x86_64-pc-linux-gnu-3.4.6-hardened
 [8] x86_64-pc-linux-gnu-3.4.6-hardenednopie
 [9] x86_64-pc-linux-gnu-3.4.6-hardenednopiessp
 [10] x86_64-pc-linux-gnu-3.4.6-hardenednossp
 [11] x86_64-pc-linux-gnu-4.0.4
 [12] x86_64-pc-linux-gnu-4.1.2 *
$ gcc-config -B
/usr/x86_64-pc-linux-gnu/gcc-bin/4.1.2
$
Comment 1 Robin Johnson archtester Gentoo Infrastructure gentoo-dev Security 2007-04-22 08:33:40 UTC
Did you have eselect-compiler installed at some point in the past?
Comment 2 OKUMURA N. Shin-ya 2007-04-22 10:03:59 UTC
(In reply to comment #1)
> Did you have eselect-compiler installed at some point in the past?
> 

Probably, yes.
I had installed (and removed) eselect-compiler, as far as I remember.
Does it affect?

...
O.K, now I found /etc/eselect/compiler/select.conf, which says;
-----------
[i686-pc-linux-gnu]
        profile=x86_64-pc-linux-gnu-4.1.1/x86-vanilla

[x86_64-pc-linux-gnu]
        profile=x86_64-pc-linux-gnu-4.1.1/amd64-vanilla
-----------

Modified as s/4.1.1/4.1.2/, then the problem seems be solved.
Which is it a bug or not?
Can I close this issue?
Comment 3 Kevin F. Quinn (RETIRED) gentoo-dev 2007-04-22 15:50:59 UTC
If you removed eselect-compiler, and put back gcc-config, then you probably have some stale wrapper binaries lying around from eselect-compiler.

You need to get rid of these; I posted some instructions somewhere but can't find them now :/  Anyway; try something like:

$ find /usr/bin | \
  xargs grep -l "Could not determine which compiler to use" 2> /dev/null 

to find the stale wrappers, and just remove them.  The list should include 'gcov' but should _not_ include 'gcc' itself - if it does include 'gcc', _don't_ delete anything but report back here first (otherwise you may end up with no compiler!).
Comment 4 OKUMURA N. Shin-ya 2007-04-22 16:31:48 UTC
(In reply to comment #3)
> to find the stale wrappers, and just remove them.  The list should include
> 'gcov' but should _not_ include 'gcc' itself - if it does include 'gcc',
> _don't_ delete anything but report back here first (otherwise you may end up
> with no compiler!).
> 

Thank you for your information.
I did as follows;
----------
$ find /usr/bin -type f -print0 | xargs -0 fgrep -la 'Could not determine which compiler to use' 2>/dev/null
/usr/bin/x86_64-pc-linux-gnu-addr2name.awk
/usr/bin/addr2name.awk
/usr/bin/x86_64-pc-linux-gnu-fastjar
/usr/bin/fastjar
/usr/bin/x86_64-pc-linux-gnu-gccbug
/usr/bin/gccbug
/usr/bin/gcov
/usr/bin/gcj-dbtool
/usr/bin/gij
/usr/bin/x86_64-pc-linux-gnu-gcov
/usr/bin/gjnih
/usr/bin/x86_64-pc-linux-gnu-gcj-dbtool
/usr/bin/grepjar
/usr/bin/x86_64-pc-linux-gnu-gij
/usr/bin/i686-pc-linux-gnu-addr2name.awk
/usr/bin/grmic
/usr/bin/i686-pc-linux-gnu-gccbug
/usr/bin/grmiregistry
/usr/bin/i686-pc-linux-gnu-fastjar
/usr/bin/jcf-dump
/usr/bin/jv-scan
/usr/bin/jv-convert
/usr/bin/i686-pc-linux-gnu-gcov
/usr/bin/protoize
/usr/bin/i686-pc-linux-gnu-gcj-dbtool
/usr/bin/i686-pc-linux-gnu-gij
/usr/bin/i686-pc-linux-gnu-gjnih
/usr/bin/i686-pc-linux-gnu-grepjar
/usr/bin/i686-pc-linux-gnu-grmic
/usr/bin/i686-pc-linux-gnu-grmiregistry
/usr/bin/i686-pc-linux-gnu-jcf-dump
/usr/bin/i686-pc-linux-gnu-c++
/usr/bin/unprotoize
/usr/bin/i686-pc-linux-gnu-rmic
/usr/bin/i686-pc-linux-gnu-rmiregistry
/usr/bin/i686-pc-linux-gnu-jv-convert
/usr/bin/i686-pc-linux-gnu-jv-scan
/usr/bin/i686-pc-linux-gnu-protoize
/usr/bin/i686-pc-linux-gnu-unprotoize
/usr/bin/i686-pc-linux-gnu-cpp
/usr/bin/i686-pc-linux-gnu-g++
/usr/bin/x86_64-pc-linux-gnu-gjnih
/usr/bin/x86_64-pc-linux-gnu-grepjar
/usr/bin/x86_64-pc-linux-gnu-grmic
/usr/bin/x86_64-pc-linux-gnu-grmiregistry
/usr/bin/x86_64-pc-linux-gnu-jcf-dump
/usr/bin/x86_64-pc-linux-gnu-jv-convert
/usr/bin/x86_64-pc-linux-gnu-jv-scan
/usr/bin/x86_64-pc-linux-gnu-rmic
/usr/bin/x86_64-pc-linux-gnu-rmiregistry
/usr/bin/x86_64-pc-linux-gnu-protoize
/usr/bin/x86_64-pc-linux-gnu-unprotoize
/usr/bin/i686-pc-linux-gnu-gcc
/usr/bin/i686-pc-linux-gnu-gcj
/usr/bin/i686-pc-linux-gnu-cc
/usr/bin/i686-pc-linux-gnu-gcjh
/usr/bin/i686-pc-linux-gnu-gfortran
$ 
----------

Well...
I cannot believe that deleting all of them is really safe.
I will try re-emerge sys-devel/gcc and sys-devel/gcc-config, rather than deletion.
Comment 5 Kevin F. Quinn (RETIRED) gentoo-dev 2007-04-22 17:13:57 UTC
Re-emerging those two won't get rid of the extraneous wrappers, although if any of those files should come from gcc and gcc-config, they'll be replaced by emerging - it certainly won't hurt if you have the time and resource to do that.

However gcc-config installs wrappers for:
  {,${CTARGET}-}{cpp,cc,gcc,c++,g++,f77,g77,gcj,gcjh,gfortran,gdc,gdmd}

and none of the files you list match that (note that with gcc-config, on amd64 you just get wrappers for x86_64-pc-linux-gnu and none for i686-pc-linux-gnu), so all the ones you listed are redundant and can be safely removed.  Note that they're just eselect-compiler wrappers, the actual binaries are still present elsewhere and should be set in your path by the gcc-config setup.
Comment 6 OKUMURA N. Shin-ya 2007-04-25 18:05:26 UTC
(In reply to comment #5)

You are right.
After re-emerge, I did;
----------
find /usr/bin -type f -ctime +3 -print0 | xargs -0 fgrep -al 'Could not determine which compiler to use' | xargs rm; gcc-config x86_64-pc-linux-gnu-4.1.2
----------

Any problem has not seen currently.

I am changing the status as "INVALID" for the moment.
If anyone thought that stale binaries should be deleted when uninstall, then please change the status (and severity, probably).
Comment 7 Kevin F. Quinn (RETIRED) gentoo-dev 2007-04-30 18:48:36 UTC
*** Bug 176524 has been marked as a duplicate of this bug. ***
Comment 8 SpanKY gentoo-dev 2007-05-02 19:01:31 UTC
gcc-config also installs a gcov wrapper so as to clobber any eselect stuff left over