Article View: gnu.gcc.bug
Article #6127#include not working right?
From: Matt Stainforth
Date: Thu, 05 Dec 1996 00:00
Date: Thu, 05 Dec 1996 00:00
86 lines
3632 bytes
3632 bytes
Does anyone know why this is happening?
# gcc -c ping.c -o ping.o
# gcc ping.o -o ping -L../lib -linet6 -lresolv
ping.o: In function `main':
ping.o(.text+0x7c0): undefined reference to `clear_bit'
ping.o(.text+0x7d1): undefined reference to `clear_bit'
ping.o(.text+0x7e2): undefined reference to `clear_bit'
ping.o(.text+0x7f3): undefined reference to `clear_bit'
ping.o(.text+0x807): undefined reference to `clear_bit'
This is clear_bit which is defined in <asm/bitops.h>, which is included:
extern __inline__ int clear_bit(int nr, void * addr)
{
int oldbit;
__asm__ __volatile__(""
"btrl %2,%1\n\tsbbl %0,%0"
:"=r" (oldbit),"=m" ((*(struct __dummy *) addr) )
:"ir" (nr));
return oldbit;
}
So, I figure, I'll take the long way around to see where I'm losing clear_bit.
# rm -f ping.o
# gcc -E ping.c > pingnew.c
# grep clear_bit pingnew.c
extern __inline__ int clear_bit(int nr, void * addr)
clear_bit( 1 & 0x1f, &(( &filter )->data[ 1 >> 5])) ;
clear_bit( 2 & 0x1f, &(( &filter )->data[ 2 >> 5])) ;
clear_bit( 3 & 0x1f, &(( &filter )->data[ 3 >> 5])) ;
clear_bit( 4 & 0x1f, &(( &filter )->data[ 4 >> 5])) ;
clear_bit( 129 & 0x1f, &(( &filter )->data[ 129 >> 5])) ;
ok...there it is. clear_bit is in there, and there are the 5 calls to
the function. But watch this:
# /usr/lib/gcc-lib/i486-linux/2.7.2.1/cc1 pingnew.c
ustat cmsg_nxthdr __ntohl __ntohs set_bit clear_bit change_bit test_bit find_first_zero_bit find_next_zero_bit ffz main catcher pinger pr_pack pr_icmph tvsub finish pr_addr fill usage
time in parse: 0.800000
time in integration: 0.000000
time in jump: 0.000000
time in cse: 0.000000
time in loop: 0.000000
time in cse2: 0.000000
time in flow: 0.090000
time in combine: 0.000000
time in sched: 0.000000
time in local-alloc: 0.000000
time in global-alloc: 0.510000
time in sched2: 0.000000
time in dbranch: 0.000000
time in shorten-branch: 0.000000
time in stack-reg: 0.010000
time in final: 0.150000
time in varconst: 0.030000
time in symout: 0.000000
time in dump: 0.000000
# grep clear_bit pingnew.s
call clear_bit
call clear_bit
call clear_bit
call clear_bit
call clear_bit
#
So where did clear_bit go?
Needless to say, when I try to as the pingnew.s file, it fails with the
error message above (ping.o(.text+0x7c0): undefined reference to `clear_bit')
five times.
Why is gcc dropping that definition. For that matter, why is cc1 dropping
it?
--
Matt...
______________________________________________________________________________
Matthew Stainforth
Information Systems Analyst require "disclaim.pl";
NBCC - Moncton Campus &Disclaim($opinions)||die "drop dead $!";
Phone: (506) 856-2616
Email: mbs@gov.nb.ca _/\o_
______________________________________________________________________________
Technical Details
Message-ID:
<58777c$g66@agate.nbnet.nb.ca>Path:
arc1-ca.pugleaf.net!unknown!not-for-mailShow Full Headers
Complete Article Headers
X-Google-Language: ENGLISH,ASCII-7-bit X-Google-Thread: 113d02,bda5bcd29824021b,start X-Google-Attributes: gid113d02,public From: mbs@paladine.moncton.nbcc.nb.ca (Matt Stainforth) Subject: #include not working right? Date: 1996/12/05 Message-ID: <58777c$g66@agate.nbnet.nb.ca> X-Deja-AN: 202543828 sender: bug-gcc-request@prep.ai.mit.edu content-type: text/plain; charset=us-ascii organization: NBNet.nb.ca x-gateway: relay2.UU.NET from bug-gcc to gnu.gcc.bug; Thu, 5 Dec 1996 14:19:58 EST mime-version: 1.0 newsgroups: gnu.gcc.bug