This is the mail archive of the
gcc-prs@gcc.gnu.org
mailing list for the GCC project.
c/7853: gcc reports multiple symbol definitions on the wrong line
- From: Matthias Klose <doko at klose dot in-berlin dot de>
- To: gcc-gnats at gcc dot gnu dot org, debian-gcc at lists dot debian dot org
- Cc: chris at debian dot org
- Date: Sun, 08 Sep 2002 08:50:47 +0200
- Subject: c/7853: gcc reports multiple symbol definitions on the wrong line
- Reply-to: 159838 at bugs dot debian dot org
>Number: 7853
>Category: c
>Synopsis: gcc reports multiple symbol definitions on the wrong line
>Confidential: no
>Severity: non-critical
>Priority: medium
>Responsible: unassigned
>State: open
>Class: sw-bug
>Submitter-Id: net
>Arrival-Date: Sun Sep 08 00:06:00 PDT 2002
>Closed-Date:
>Last-Modified:
>Originator: Andrew Suffield <aps100@doc.ic.ac.uk>
>Release: 3.2.1 CVS (Debian) (Debian unstable)
>Organization:
The Debian Project
>Environment:
System: Debian GNU/Linux (unstable)
Architecture: i686
>Description:
[ Reported to the Debian BTS as report #159838.
Please CC 159838@bugs.debian.org on replies.
Log of report can be found at http://bugs.debian.org/159838 ]
Andrew Suffield writes:
(I am not sure whether this is a bug in gcc or binutils)
aps100@cyclone:~/tmp$ cat foo.c
int x = 0;
aps100@cyclone:~/tmp$ cat bar.c
int x = 0;
void foo(void) {}
aps100@cyclone:~/tmp$ gcc -shared -g -o foo.so foo.c bar.c
/tmp/cc0wTF8S.o: In function `foo':
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/home/aps100/tmp/bar.c:3: multiple definition of `x'
^
/tmp/ccpK9pwb.o(.data+0x0):/home/aps100/tmp/foo.c: first defined here
collect2: ld returned 1 exit status
aps100@cyclone:~/tmp$ gcc-3.2 -shared -g -o foo.so foo.c bar.c
/tmp/ccBwlA8f.o: In function `foo':
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/home/aps100/tmp/bar.c:3: multiple definition of `x'
^
/tmp/cckwx9Kb.o(.data+0x0): first defined here
collect2: ld returned 1 exit status
Note the indicated parts. Function 'foo' has got nothing to do with
the problem, and that's the wrong place to be highlighting the error.
More generally, it appears that symbol conflicts in the global scope
will always be reported as being in the first function in the
compilation unit (not thoroughly tested, but that's what I
noticed). This means the error message might not even be pointing at
the correct file, let alone the right line.
(Needless to say, this is quite irritating).
>How-To-Repeat:
>Fix:
>Release-Note:
>Audit-Trail:
>Unformatted: