WARNING - OLD ARCHIVES

This is an archived copy of the Xen.org mailing list, which we have preserved to ensure that existing links to archives are not broken. The live archive, which contains the latest emails, can be found at http://lists.xen.org/
   
 
 
Xen 
 
Home Products Support Community News
 
   
 

xen-devel

[Xen-devel] Re: [PATCH] tools: do not link against unused libraries

To: "xen-devel@xxxxxxxxxxxxxxxxxxx" <xen-devel@xxxxxxxxxxxxxxxxxxx>
Subject: [Xen-devel] Re: [PATCH] tools: do not link against unused libraries
From: Ian Campbell <Ian.Campbell@xxxxxxxxxxxxx>
Date: Wed, 16 Mar 2011 10:40:46 +0000
Delivery-date: Wed, 16 Mar 2011 03:43:54 -0700
Envelope-to: www-data@xxxxxxxxxxxxxxxxxxx
In-reply-to: <7e326d27d899a3133479.1300271937@xxxxxxxxxxxxxxxxxxxxx>
List-help: <mailto:xen-devel-request@lists.xensource.com?subject=help>
List-id: Xen developer discussion <xen-devel.lists.xensource.com>
List-post: <mailto:xen-devel@lists.xensource.com>
List-subscribe: <http://lists.xensource.com/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=unsubscribe>
Organization: Citrix Systems, Inc.
References: <7e326d27d899a3133479.1300271937@xxxxxxxxxxxxxxxxxxxxx>
Sender: xen-devel-bounces@xxxxxxxxxxxxxxxxxxx
This follows on from my "tools: build system fix indirect library usage
and --as-needed" series from yesterday.

I figure this sort of thing is inevitably going to cause fallout on
various system so it's probably better to get it into 4.2 as early in
the cycle as possible to give plenty of time to squish the warts.

Ian.

On Wed, 2011-03-16 at 10:38 +0000, Ian Campbell wrote:
> # HG changeset patch
> # User Ian Campbell <ian.campbell@xxxxxxxxxx>
> # Date 1300271932 0
> # Node ID 7e326d27d899a3133479c8b7c983f660cdeda48c
> # Parent  f35234b6636a0410a7d5eaa409e98ebe59080e4f
> tools: do not link against unused libraries.
> 
> A fair few things under tools link against libraries which they don't
> even use.
> 
> Most of this appears to come from copy-and-pasting previous Makefile
> snippets and cargo-culting plus the tendency to define global $(LIBS)
> even for Makefiles which build multiple separate utilities or
> libraries.
> 
> Identified by comparing a build with --as-needed to one without by
> looking at the NEEDED header of all ELF objects.
> 
> Signed-off-by: Ian Campbell <ian.campbell@xxxxxxxxxx>
> 
> diff -r f35234b6636a -r 7e326d27d899 tools/blktap2/drivers/Makefile
> --- a/tools/blktap2/drivers/Makefile  Tue Mar 15 16:33:59 2011 +0000
> +++ b/tools/blktap2/drivers/Makefile  Wed Mar 16 10:38:52 2011 +0000
> @@ -23,11 +23,7 @@ CFLAGS            += -fPIC
>  CFLAGS            += -fPIC
>  endif
>  
> -LIBS      += -lrt -lz
> -
> -LBLIBS_img := $(LDLIBS_libxenctrl) $(CRYPT_LIB) -lpthread -lz -lm
> -
> -LIBS += -L$(LIBVHDDIR) -lvhd
> +VHDLIBS    := -L$(LIBVHDDIR) -lvhd
>  
>  REMUS-OBJS  := block-remus.o
>  REMUS-OBJS  += hashtable.o
> @@ -88,26 +84,26 @@ all: $(IBIN) lock-util qcow-util
>  all: $(IBIN) lock-util qcow-util
>  
> 
> -tapdisk2: $(TAP-OBJS-y) $(BLK-OBJS-y) $(MISC-OBJS-y) tapdisk2.c
> -     $(CC) $(CFLAGS) -o $@ $^ $(LDFLAGS) $(LIBS) $(AIOLIBS) $(MEMSHRLIBS) 
> $(LBLIBS_img)
> +tapdisk2: $(TAP-OBJS-y) $(BLK-OBJS-y) $(MISC-OBJS-y) tapdisk2.o
> +     $(CC) -o $@ $^ $(LDFLAGS) -lrt -lz $(VHDLIBS) $(AIOLIBS) $(MEMSHRLIBS) 
> -lm 
>  
>  tapdisk-client: tapdisk-client.o
> -     $(CC) $(CFLAGS) -o $@ $^ $(LDFLAGS) $(LIBS)  $(LBLIBS_img)
> +     $(CC) -o $@ $^ $(LDFLAGS) -lrt
>  
>  tapdisk-stream tapdisk-diff: %: %.o $(TAP-OBJS-y) $(BLK-OBJS-y)
> -     $(CC) $(CFLAGS) -o $@ $^ $(LDFLAGS) $(LIBS) $(AIOLIBS) $(MEMSHRLIBS) 
> $(LBLIBS_img)
> +     $(CC) -o $@ $^ $(LDFLAGS) -lrt -lz $(VHDLIBS) $(AIOLIBS) $(MEMSHRLIBS) 
> -lm
>  
>  td-util: td.o tapdisk-utils.o tapdisk-log.o $(PORTABLE-OBJS-y)
> -     $(CC) $(CFLAGS) -o $@ $^ $(LDFLAGS) $(LIBS)  $(LBLIBS_img)
> +     $(CC) -o $@ $^ $(LDFLAGS) $(VHDLIBS)
>  
>  lock-util: lock.c
> -     $(CC) $(CFLAGS) -DUTIL -o lock-util lock.c $(LDFLAGS) $(LIBS)
> +     $(CC) $(CFLAGS) -DUTIL -o lock-util lock.c $(LDFLAGS)
>  
>  .PHONY: qcow-util
>  qcow-util: img2qcow qcow2raw qcow-create
>  
>  img2qcow qcow2raw qcow-create: %: %.o $(TAP-OBJS-y) $(BLK-OBJS-y)
> -     $(CC) $(CFLAGS) -o $@ $^ $(LDFLAGS) $(LIBS) $(AIOLIBS) $(MEMSHRLIBS) 
> $(LBLIBS_img)
> +     $(CC) -o $@ $^ $(LDFLAGS) -lrt -lz $(VHDLIBS) $(AIOLIBS) $(MEMSHRLIBS) 
> -lm
>  
>  install: all
>       $(INSTALL_DIR) -p $(DESTDIR)$(INST_DIR)
> diff -r f35234b6636a -r 7e326d27d899 tools/console/Makefile
> --- a/tools/console/Makefile  Tue Mar 15 16:33:59 2011 +0000
> +++ b/tools/console/Makefile  Wed Mar 16 10:38:52 2011 +0000
> @@ -1,4 +1,3 @@
> -
>  XEN_ROOT=../..
>  include $(XEN_ROOT)/tools/Rules.mk
>  
> @@ -8,9 +7,10 @@ CFLAGS  += $(CFLAGS_libxenstore)
>  CFLAGS  += $(CFLAGS_libxenstore)
>  LDLIBS += $(LDLIBS_libxenctrl)
>  LDLIBS += $(LDLIBS_libxenstore)
> -LDLIBS += $(UTIL_LIBS)
>  LDLIBS += $(SOCKET_LIBS)
> -LDLIBS += -lrt
> +
> +LDLIBS_xenconsoled += $(UTIL_LIBS)
> +LDLIBS_xenconsoled += -lrt
>  
>  BIN      = xenconsoled xenconsole
>  
> @@ -23,10 +23,10 @@ clean:
>       $(RM) client/*.o daemon/*.o
>  
>  xenconsoled: $(patsubst %.c,%.o,$(wildcard daemon/*.c))
> -     $(CC) $(CFLAGS) $^ -o $@ $(LDFLAGS) $(LDLIBS)
> +     $(CC) $(CFLAGS) $^ -o $@ $(LDFLAGS) $(LDLIBS) $(LDLIBS_xenconsoled)
>  
>  xenconsole: $(patsubst %.c,%.o,$(wildcard client/*.c))
> -     $(CC) $(CFLAGS) $^ -o $@ $(LDFLAGS) $(LDLIBS)
> +     $(CC) $(CFLAGS) $^ -o $@ $(LDFLAGS) $(LDLIBS) $(LDLIBS_xenconsole)
>  
>  .PHONY: install
>  install: $(BIN)
> diff -r f35234b6636a -r 7e326d27d899 tools/misc/Makefile
> --- a/tools/misc/Makefile     Tue Mar 15 16:33:59 2011 +0000
> +++ b/tools/misc/Makefile     Wed Mar 16 10:38:52 2011 +0000
> @@ -14,6 +14,14 @@ TARGETS-$(CONFIG_X86) += xen-detect xen-
>  TARGETS-$(CONFIG_X86) += xen-detect xen-hvmctx xen-hvmcrash
>  TARGETS-$(CONFIG_MIGRATE) += xen-hptool
>  TARGETS := $(TARGETS-y)
> +
> +LDLIBS_xenperf      := $(LDLIBS_libxenctrl)
> +LDLIBS_xenpm        := $(LDLIBS_libxenctrl)
> +LDLIBS_xenlockprof  := $(LDLIBS_libxenctrl)
> +LDLIBS_xenwatchdogd := $(LDLIBS_libxenctrl)
> +LDLIBS_xen-hvmctx   := $(LDLIBS_libxenctrl)
> +LDLIBS_xen-hvmcrash := $(LDLIBS_libxenctrl)
> +LDLIBS_xen-hptool   := $(LDLIBS_libxenctrl) $(LDLIBS_libxenguest) 
> $(LDLIBS_libxenstore)
>  
>  SUBDIRS-$(CONFIG_LOMOUNT) += lomount
>  SUBDIRS-$(CONFIG_MINITERM) += miniterm
> @@ -52,7 +60,7 @@ clean:
>       $(CC) -c $(CFLAGS) -o $@ $<
>  
>  xen-hvmctx xen-hvmcrash xenperf xenpm gtracestat xenlockprof xen-hptool 
> xenwatchdogd: %: %.o Makefile
> -     $(CC) $(CFLAGS) -o $@ $< $(LDFLAGS) $(LDLIBS_libxenctrl) 
> $(LDLIBS_libxenguest) $(LDLIBS_libxenstore)
> +     $(CC) $(CFLAGS) -o $@ $< $(LDFLAGS) $(LDLIBS_$*)
>  
>  gtraceview: %: %.o Makefile
>       $(CC) $(CFLAGS) -o $@ $< $(LDFLAGS) $(CURSES_LIBS)
> diff -r f35234b6636a -r 7e326d27d899 tools/xcutils/Makefile
> --- a/tools/xcutils/Makefile  Tue Mar 15 16:33:59 2011 +0000
> +++ b/tools/xcutils/Makefile  Wed Mar 16 10:38:52 2011 +0000
> @@ -11,12 +11,20 @@ XEN_ROOT  = ../..
>  XEN_ROOT     = ../..
>  include $(XEN_ROOT)/tools/Rules.mk
>  
> -CFLAGS += -Werror
> -CFLAGS += $(CFLAGS_libxenctrl) $(CFLAGS_libxenguest) $(CFLAGS_libxenstore)
>  
>  PROGRAMS = xc_restore xc_save readnotes lsevtchn
>  
> -LDLIBS   = $(LDLIBS_libxenctrl) $(LDLIBS_libxenguest) $(LDLIBS_libxenstore)
> +CFLAGS += -Werror
> +
> +CFLAGS_xc_restore := $(CFLAGS_libxenctrl) $(CFLAGS_libxenguest)
> +CFLAGS_xc_save    := $(CFLAGS_libxenctrl) $(CFLAGS_libxenguest) 
> $(CFLAGS_libxenstore)
> +CFLAGS_readnotes  := $(CFLAGS_libxenctrl) $(CFLAGS_libxenguest)
> +CFLAGS_lsevtchn   := $(CFLAGS_libxenctrl)
> +
> +LDLIBS_xc_restore := $(LDLIBS_libxenctrl) $(LDLIBS_libxenguest)
> +LDLIBS_xc_save    := $(LDLIBS_libxenctrl) $(LDLIBS_libxenguest) 
> $(LDLIBS_libxenstore)
> +LDLIBS_readnotes  := $(LDLIBS_libxenctrl) $(LDLIBS_libxenguest)
> +LDLIBS_lsevtchn   := $(LDLIBS_libxenctrl)
>  
>  .PHONY: all
>  all: build
> @@ -24,8 +32,11 @@ all: build
>  .PHONY: build
>  build: $(PROGRAMS)
>  
> +%.o: %.c
> +     $(CC) $(CFLAGS) $(CFLAGS_$*) -c $^ -o $@
> +
>  $(PROGRAMS): %: %.o
> -     $(CC) $(CFLAGS) $(LDFLAGS) $^ $(LDLIBS) -o $@
> +     $(CC) $(CFLAGS) $(LDFLAGS) $^ $(LDLIBS) $(LDLIBS_$*) -o $@
>  
>  .PHONY: install
>  install: build
> diff -r f35234b6636a -r 7e326d27d899 tools/xcutils/lsevtchn.c
> --- a/tools/xcutils/lsevtchn.c        Tue Mar 15 16:33:59 2011 +0000
> +++ b/tools/xcutils/lsevtchn.c        Wed Mar 16 10:38:52 2011 +0000
> @@ -4,9 +4,7 @@
>  #include <string.h>
>  #include <stdio.h>
>  
> -#include <xs.h>
>  #include <xenctrl.h>
> -#include <xenguest.h>
>  
>  int main(int argc, char **argv)
>  {



_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel