From owner-freebsd-ports@FreeBSD.ORG Mon Mar 30 19:47:51 2009 Return-Path: Delivered-To: ports@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 4CCC710657A4; Mon, 30 Mar 2009 19:47:51 +0000 (UTC) (envelope-from daniel@roe.ch) Received: from calvin.ustdmz.roe.ch (calvin.ustdmz.roe.ch [IPv6:2001:41e0:ff17:face::26]) by mx1.freebsd.org (Postfix) with ESMTP id 95CE18FC0A; Mon, 30 Mar 2009 19:47:48 +0000 (UTC) (envelope-from daniel@roe.ch) Received: from roe (ssh-from [2001:41e0:ff17:babe::101]) by calvin.ustdmz.roe.ch (envelope-from ) with LOCAL id 1LoNS9-00039l-2C ; Mon, 30 Mar 2009 21:47:25 +0200 Date: Mon, 30 Mar 2009 21:47:25 +0200 From: Daniel Roethlisberger To: Manfred Antar , Peter Pentchev , ports@freebsd.org, rpaulo@FreeBSD.org Message-ID: <20090330194725.GA10713@hobbes.ustdmz.roe.ch> Mail-Followup-To: Manfred Antar , Peter Pentchev , ports@freebsd.org, rpaulo@FreeBSD.org References: <200903300223.n2U2N6mO074911@pozo.com> <20090330072620.GA928@straylight.m.ringlet.net> <20090330113215.GA4768@hobbes.ustdmz.roe.ch> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="qlTNgmc+xy1dBmNv" Content-Disposition: inline In-Reply-To: <20090330113215.GA4768@hobbes.ustdmz.roe.ch> User-Agent: Mutt/1.4.2.3i Cc: Subject: Dangling extern "C" in pcap.h (was: Re: nmap broken on current) X-BeenThere: freebsd-ports@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Porting software to FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 30 Mar 2009 19:47:52 -0000 --qlTNgmc+xy1dBmNv Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Daniel Roethlisberger 2009-03-30: > Peter Pentchev 2009-03-30: > > On Sun, Mar 29, 2009 at 07:23:00PM -0700, Manfred Antar wrote: > > > the nmap port is broken on current: > > > > Shouldn't this be reported to the port's maintainer - Daniel > > Roethlisberger ? :) I've CC'd him on this message... > > Thanks for CC:-ing me, Peter. > > > > c++ -c -I/usr/local/include/lua51 -I/usr/local/include -I/usr/local/include -I/usr/include -Inbase -Insock/include -O2 -pipe -fno-strict-aliasing -Wall -fno-strict-aliasing -DHAVE_CONFIG_H -DNMAP_NAME=\"Nmap\" -DNMAP_URL=\"http://nmap.org\" -DNMAP_PLATFORM=\"i386-portbld-freebsd8.0\" -DNMAPDATADIR=\"/usr/local/share/nmap\" -DNMAPLIBEXECDIR=\"/usr/local/libexec/nmap\" main.cc -o main.o > > > c++ -c -I/usr/local/include/lua51 -I/usr/local/include -I/usr/local/include -I/usr/include -Inbase -Insock/include -O2 -pipe -fno-strict-aliasing -Wall -fno-strict-aliasing -DHAVE_CONFIG_H -DNMAP_NAME=\"Nmap\" -DNMAP_URL=\"http://nmap.org\" -DNMAP_PLATFORM=\"i386-portbld-freebsd8.0\" -DNMAPDATADIR=\"/usr/local/share/nmap\" -DNMAPLIBEXECDIR=\"/usr/local/libexec/nmap\" nmap.cc -o nmap.o > > > In file included from Target.h:115, > > > from traceroute.h:101, > > > from nmap.cc:111: > > > tcpip.h:458: error: declaration of C function 'int resolve(char*, in_addr*)' conflicts with > > > tcpip.h:453: error: previous declaration 'int resolve(char*, sockaddr_storage*, size_t*, int)' here > > > In file included from nmap.cc:121: > > > utils.h:188: error: template with C linkage > > > nmap.h: In function 'int nmap_main(int, char**)': > > > nmap.h:416: error: previous declaration of 'int nmap_main(int, char**)' with 'C++' linkage > > > nmap.cc:503: error: conflicts with new declaration with 'C' linkage > > > nmap.cc: In function 'int nmap_main(int, char**)': > > > nmap.cc:1167: error: cannot convert 'sockaddr_storage*' to 'in_addr*' for argument '2' to 'int resolve(char*, in_addr*)' > > > nmap.cc:1673: error: cannot convert 'sockaddr_storage*' to 'in_addr*' for argument '2' to 'int resolve(char*, in_addr*)' > > > nmap.h: In function 'void nmap_free_mem()': > > > nmap.h:418: error: previous declaration of 'void nmap_free_mem()' with 'C++' linkage > > > nmap.cc:1907: error: conflicts with new declaration with 'C' linkage > > > nmap.h: In function 'int gather_logfile_resumption_state(char*, int*, char***)': > > > nmap.h:438: error: previous declaration of 'int gather_logfile_resumption_state(char*, int*, char***)' with 'C++' linkage > > > nmap.cc:1932: error: conflicts with new declaration with 'C' linkage > > > nmap.h: In function 'void nmap_free_mem()': > > > nmap.h:413: error: previous declaration of 'void init_socket(int)' with 'C++' linkage > > > nmap.cc:2038: error: conflicts with new declaration with 'C' linkage > > > nmap.h:407: error: previous declaration of 'void getpts(const char*, scan_lists*)' with 'C++' linkage > > > nmap.cc:2128: error: conflicts with new declaration with 'C' linkage > > > nmap.h:409: error: previous declaration of 'void getpts_simple(const char*, int, short unsigned int**, int*)' with 'C++' linkage > > > nmap.cc:2191: error: conflicts with new declaration with 'C' linkage > > > nmap.h:410: error: previous declaration of 'void free_scan_lists(scan_lists*)' with 'C++' linkage > > > nmap.cc:2400: error: conflicts with new declaration with 'C' linkage > > > nmap.h:402: error: previous declaration of 'void printinteractiveusage()' with 'C++' linkage > > > nmap.cc:2410: error: conflicts with new declaration with 'C' linkage > > > nmap.h:426: error: previous declaration of 'char* seqreport(seq_info*)' with 'C++' linkage > > > nmap.cc:2432: error: conflicts with new declaration with 'C' linkage > > > nmap.h:434: error: previous declaration of 'const char* seqidx2difficultystr(long unsigned int)' with 'C++' linkage > > > nmap.cc:2441: error: conflicts with new declaration with 'C' linkage > > > nmap.h:429: error: previous declaration of 'const char* ipidclass2ascii(int)' with 'C++' linkage > > > nmap.cc:2445: error: conflicts with new declaration with 'C' linkage > > > nmap.h:430: error: previous declaration of 'const char* tsseqclass2ascii(int)' with 'C++' linkage > > > nmap.cc:2466: error: conflicts with new declaration with 'C' linkage > > > nmap.h:423: error: previous declaration of 'const char* scantype2str(stype)' with 'C++' linkage > > > nmap.cc:2491: error: conflicts with new declaration with 'C' linkage > > > nmap.h:422: error: previous declaration of 'const char* statenum2str(int)' with 'C++' linkage > > > nmap.cc:2523: error: conflicts with new declaration with 'C' linkage > > > nmap.h:404: error: previous declaration of 'int ftp_anon_connect(ftpinfo*)' with 'C++' linkage > > > nmap.cc:2536: error: conflicts with new declaration with 'C' linkage > > > nmap.h:425: error: previous declaration of 'void reaper(int)' with 'C++' linkage > > > nmap.cc:2614: error: conflicts with new declaration with 'C' linkage > > > nmap.h:424: error: previous declaration of 'void sigdie(int)' with 'C++' linkage > > > nmap.cc:2626: error: conflicts with new declaration with 'C' linkage > > > nmap.h: In function 'int nmap_fileexistsandisreadable(const char*)': > > > nmap.h:437: error: previous declaration of 'int nmap_fileexistsandisreadable(const char*)' with 'C++' linkage > > > nmap.cc:2705: error: conflicts with new declaration with 'C' linkage > > > nmap.h: In function 'int nmap_fetchfile(char*, int, const char*)': > > > nmap.h:436: error: previous declaration of 'int nmap_fetchfile(char*, int, const char*)' with 'C++' linkage > > > nmap.cc:2709: error: conflicts with new declaration with 'C' linkage > > > nmap.cc: At global scope: > > > nmap.cc:2837: error: expected `}' at end of input > > > gmake[1]: *** [nmap.o] Error 1 > > > gmake[1]: Leaving directory `/usr/ports/security/nmap/work/nmap-4.76' > > > gmake: *** [all] Error 2 > > > *** Error code 1 > > > > > > Stop in /usr/ports/security/nmap. > > Manfred, can you file a PR and make sure to also include the date > of your -current sources and the content of your /etc/make.conf? Update: This is caused by a dangling extern "C" in /usr/include/pcap.h, which breaks the use of libpcap from C++. The attached patch fixes the issue for me. I'm Cc:-ing rpaulo@ who committed the recent update to libpcap. -- Daniel Roethlisberger http://daniel.roe.ch/ --qlTNgmc+xy1dBmNv Content-Type: text/x-diff; charset=us-ascii Content-Disposition: attachment; filename="libpcap.h-dangling-extern-C.diff" --- contrib/libpcap/pcap.h.orig 2009-03-27 07:27:01.000000000 +0100 +++ contrib/libpcap/pcap.h 2009-03-30 21:42:31.000000000 +0200 @@ -53,10 +53,6 @@ #include -#ifdef __cplusplus -extern "C" { -#endif - #define PCAP_VERSION_MAJOR 2 #define PCAP_VERSION_MINOR 4 --qlTNgmc+xy1dBmNv--