Thursday, July 27, 2017

clang/amd64 fallout: net/argus

net/argus fails to build with clang on amd64:

cc -O2 -pipe -I. -I./../include -DHAVE_CONFIG_H -DSYSCONFDIR=\"/etc\" -o ../bin/argus argus.o ArgusModeler.o ArgusSource.o ArgusUtil.o ArgusOutput.o ArgusUdp.o ArgusTcp.o ArgusIcmp.o ArgusIgmp.o ArgusEsp.o ArgusArp.o ArgusFrag.o ArgusUdt.o ArgusLcp.o ArgusIsis.o ArgusAuth.o Argus802.11.o ArgusApp.o ArgusEvents.o ArgusNetflow.o ArgusSflow.o -lpcap -lm -lz ../lib/argus_common.a -lm
argus.o: In function `ArgusComplete':
argus.c:(.text+0x2d1e): warning: warning: sprintf() is often misused, please use snprintf()
/usr/bin/ld: ../lib/argus_common.a(argus_filter.o): relocation R_X86_64_PC32 against `blocks' can not be used when making a shared object; recompile with -fPIC
/usr/bin/ld: final link failed: Bad value
cc: error: linker command failed with exit code 1 (use -v to see invocation)

argus embeds a copy of pcap code for some purpose, but also links
against libpcap. Both code bases use the same global symbols
(`blocks', `edges', etc.).

Wait, that's the error kettenis@'s fixed in binutils. What's going
on here? The problem is the linking order. The shared library
needs to come later. Patch below. This builds, but I have no idea
if it works. On the other hand, I don't see why it shouldn't.

Testers? ok?

Index: Makefile
===================================================================
RCS file: /cvs/ports/net/argus/Makefile,v
retrieving revision 1.21
diff -u -p -r1.21 Makefile
--- Makefile 12 Aug 2016 21:38:52 -0000 1.21
+++ Makefile 27 Jul 2017 20:43:40 -0000
@@ -3,6 +3,7 @@
COMMENT = Audit Record Generation and Utilization System

DISTNAME = argus-3.0.8.2
+REVISION = 0
CATEGORIES = net

HOMEPAGE = http://qosient.com/argus/
Index: patches/patch-argus_Makefile_in
===================================================================
RCS file: /cvs/ports/net/argus/patches/patch-argus_Makefile_in,v
retrieving revision 1.2
diff -u -p -r1.2 patch-argus_Makefile_in
--- patches/patch-argus_Makefile_in 8 Jul 2012 19:20:58 -0000 1.2
+++ patches/patch-argus_Makefile_in 27 Jul 2017 20:43:40 -0000
@@ -1,6 +1,7 @@
$OpenBSD: patch-argus_Makefile_in,v 1.2 2012/07/08 19:20:58 steven Exp $
---- argus/Makefile.in.orig Wed Jan 4 01:15:19 2012
-+++ argus/Makefile.in Wed Jun 27 22:27:06 2012
+Index: argus/Makefile.in
+--- argus/Makefile.in.orig
++++ argus/Makefile.in
@@ -19,6 +19,7 @@
prefix = @prefix@
exec_prefix = @exec_prefix@
@@ -18,3 +19,12 @@ $OpenBSD: patch-argus_Makefile_in,v 1.2
#DEFS = -DARGUSPERFMETRICS=1 @DEFS@


+@@ -84,7 +85,7 @@ PROG = @INSTALL_BIN@/argus
+
+ OBJ = $(SRC:.c=.o)
+
+-LIB = @LIBS@ @V_THREADS@ $(WRAPLIBS) $(SASLLIBS) $(COMPATLIB) ../lib/argus_common.a -lm
++LIB = ../lib/argus_common.a @LIBS@ @V_THREADS@ $(WRAPLIBS) $(SASLLIBS) $(COMPATLIB) -lm
+
+ HDR = pcap.h pcap-int.h pcap-namedb.h pcap-nit.h pcap-pf.h \
+ ethertype.h gencode.h gnuc.h
--
Christian "naddy" Weisgerber naddy@mips.inka.de

No comments:

Post a Comment