ports/115217: Ada florist socket program doesn't compile due to internal error
Douglas Wells
sysmaint at contek.com
Sun Aug 5 14:10:02 UTC 2007
>Number: 115217
>Category: ports
>Synopsis: Ada florist socket program doesn't compile due to internal error
>Confidential: no
>Severity: non-critical
>Priority: low
>Responsible: freebsd-ports-bugs
>State: open
>Quarter:
>Keywords:
>Date-Required:
>Class: sw-bug
>Submitter-Id: current-users
>Arrival-Date: Sun Aug 05 14:10:01 GMT 2007
>Closed-Date:
>Last-Modified:
>Originator: Douglas Wells
>Release: FreeBSD 6.2-RELEASE-p1 i386
>Organization:
>Environment:
System: FreeBSD flame.contek.com 6.2-RELEASE-p1 FreeBSD 6.2-RELEASE-p1 #0: Sun Feb 11 18:14:07 EST 2007 root at flame.contek.com:/other5/src.6.2/sys/i386/compile/FLAME.6.2 i386
GNAT: gnat-3.15p_1 / gnat-gcc-3.4.6_3
florist: florist-3.15p_1
(tools installed via ports compilation)
>Description:
A simple Ada program using devel/florist to access POSIX
sockets encounters the error:
posix-sockets-internet.gpb:660:15: duplication of choice value at line 659
posix-sockets-internet.gpb:674:15: duplication of choice value at line 673
gnatmake: "/usr/local/lib/florist/posix-sockets-internet.adb" compilation error
Note that posix-sockets-internet is internal to florist.
>How-To-Repeat:
Use the command:
gnatmake -I/usr/local/lib/florist px_socket.adb
with this test program:
------------------------- px_socket.adb -------------------
with POSIX.Sockets;
with POSIX.Sockets.Internet;
procedure px_socket is
package PS renames POSIX.Sockets;
package PSI renames POSIX.Sockets.Internet;
sockfamily : PS.Protocol_Family := PSI.Internet_Protocol;
begin
null;
end px_socket;
----------------------- end px_socket.adb -----------------
>Fix:
The problem seems to arise from a case statement that has
duplicate selectors based on the IP type-of-server IPTOS_*
values, each of which has the value 0. This problem in turn
is caused by a questionable tactic in the internal translation
code in c-posix.c, which provides a default value of 0 for
any C define that it is unable to locate.
The problem here is that the translation process does not have
access to the include file <netinet/ip.h>. A workaround is to
patch pconfig.h (after make config) to define near the top:
#define __BSD_VISIBLE 1
and to include near the other netinet includes:
#include <netinet/ip.h>
With this change the test program and several other more
complicated programs compile and execute properly. This
problem may or may not be more cleanly resolved via
appropriate changes to the configure mechanism.
>Release-Note:
>Audit-Trail:
>Unformatted:
More information about the freebsd-ports-bugs
mailing list