[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] RE: [Xen-devel] debian pic-lib.patch (4 of 5)
Hmm. We're having second thoughts about this patch... Why is bulding the .so's PIC important for Debian? In all the libraries I've ever built I can't ever recall seeing one of these .opic files before. PIC code on x86 burns ebx, which causes a measurable slowdown (which we might even care about during save/restore/migrate). Further, I wander if all versions of gcc cope correctly with inline asm that uses ebx??? Why do you need this patch? Thanks, Ian > -----Original Message----- > From: xen-devel-admin@xxxxxxxxxxxxxxxxxxxxx > [mailto:xen-devel-admin@xxxxxxxxxxxxxxxxxxxxx] On Behalf Of Adam Heath > Sent: 05 February 2005 04:24 > To: xen-devel@xxxxxxxxxxxxxxxxxxxxx > Subject: [Xen-devel] debian pic-lib.patch (4 of 5) > > Name: pic-lib.patch > Description: support PIC code generation > Libraries have 2 methods of being compiled; a .so must > contain non-pic > objects, while the .a can contain standard objects. > Signed-off-by: Adam Heath <doogie@xxxxxxxxxxxxx> > DiffStat: > tools/libxc/Makefile | 33 +++++++++++++++++++++------------ > tools/libxutil/Makefile | 12 +++++++++--- > 2 files changed, 30 insertions(+), 15 deletions(-) > > --- xen-2.0.4.orig/tools/libxutil/Makefile > +++ xen-2.0.4/tools/libxutil/Makefile > @@ -24,6 +24,7 @@ > LIB_SRCS += util.c > > LIB_OBJS := $(LIB_SRCS:.c=.o) > +LIB_PIC_OBJS := $(LIB_SRCS:.c=.opic) > > CFLAGS += -Wall -Werror -O3 -fno-strict-aliasing > > @@ -34,6 +35,7 @@ > MAJOR := 2.0 > MINOR := 0 > LIB_NAME := libxutil > +SO_NAME := $(LIB_NAME).so.$(MAJOR) > LIB := $(LIB_NAME).so > LIB += $(LIB_NAME).so.$(MAJOR) > LIB += $(LIB_NAME).so.$(MAJOR).$(MINOR) > @@ -42,14 +44,17 @@ > all: check-for-zlib > $(MAKE) $(LIB) > > +$(LIB_PIC_OBJS): %.opic: %.c > + $(CC) $(CPPFLAGS) -DPIC $(CFLAGS) -fPIC -c -o $@ $< > + > $(LIB_NAME).so: $(LIB_NAME).so.$(MAJOR) > ln -sf $^ $@ > > $(LIB_NAME).so.$(MAJOR): $(LIB_NAME).so.$(MAJOR).$(MINOR) > ln -sf $^ $@ > > -$(LIB_NAME).so.$(MAJOR).$(MINOR): $(LIB_OBJS) > - $(CC) -Wl,-soname -Wl,$(LIB_NAME).so.$(MAJOR) -shared -o $@ $^ > +$(LIB_NAME).so.$(MAJOR).$(MINOR): $(LIB_PIC_OBJS) > + $(CC) -Wl,-soname -Wl,$(SO_NAME) -shared -o $@ $^ > > $(LIB_NAME).a: $(LIB_OBJS) > $(AR) rc $@ $^ > @@ -65,11 +71,12 @@ > install: all > [ -d $(DESTDIR)/usr/lib ] || $(INSTALL_DIR) -p > $(DESTDIR)/usr/lib > $(INSTALL_PROG) $(LIB_NAME).so.$(MAJOR).$(MINOR) > $(DESTDIR)/usr/lib > + $(INSTALL_DATA) $(LIB_NAME).a $(DESTDIR)/usr/lib > ln -sf $(LIB_NAME).so.$(MAJOR).$(MINOR) > $(DESTDIR)/usr/lib/$(LIB_NAME).so.$(MAJOR) > ln -sf $(LIB_NAME).so.$(MAJOR) $(DESTDIR)/usr/lib/$(LIB_NAME).so > > clean: > - $(RM) *.a *.so *.so.* *.o *.rpm > + $(RM) *.a *.so *.so.* *.o *.opic *.rpm > $(RM) *~ > $(RM) $(DEPS) > > --- xen-2.0.4.orig/tools/libxc/Makefile > +++ xen-2.0.4/tools/libxc/Makefile > @@ -5,7 +5,8 @@ > > MAJOR = 2.0 > MINOR = 0 > -SONAME = libxc.so.$(MAJOR) > +LIB_NAME = libxc > +SONAME = $(LIB_NAME).so.$(MAJOR) > > CC = gcc > > @@ -39,9 +40,10 @@ > CFLAGS += -Wp,-MD,.$(@F).d > DEPS = .*.d > > -OBJS = $(patsubst %.c,%.o,$(SRCS)) > +OBJS := $(patsubst %.c,%.o,$(SRCS)) > +PIC_OBJS := $(patsubst %.c,%.opic,$(SRCS)) > > -LIB = libxc.so libxc.so.$(MAJOR) libxc.so.$(MAJOR).$(MINOR) > +LIB := $(LIB_NAME).a $(LIB_NAME).so > $(LIB_NAME).so.$(MAJOR) $(LIB_NAME).so.$(MAJOR).$(MINOR) > > all: check-for-zlib mk-symlinks > $(MAKE) $(LIB) > @@ -68,13 +70,14 @@ > install: all > [ -d $(DESTDIR)/usr/lib ] || $(INSTALL_DIR) $(DESTDIR)/usr/lib > [ -d $(DESTDIR)/usr/include ] || $(INSTALL_DIR) > $(DESTDIR)/usr/include > - $(INSTALL_PROG) libxc.so.$(MAJOR).$(MINOR) $(DESTDIR)/usr/lib > - ln -sf libxc.so.$(MAJOR).$(MINOR) > $(DESTDIR)/usr/lib/libxc.so.$(MAJOR) > - ln -sf libxc.so.$(MAJOR) $(DESTDIR)/usr/lib/libxc.so > + $(INSTALL_PROG) $(LIB_NAME).so.$(MAJOR).$(MINOR) > $(DESTDIR)/usr/lib > + $(INSTALL_DATA) $(LIB_NAME).a $(DESTDIR)/usr/lib > + ln -sf $(LIB_NAME).so.$(MAJOR).$(MINOR) > $(DESTDIR)/usr/lib/$(LIB_NAME).so.$(MAJOR) > + ln -sf $(LIB_NAME).so.$(MAJOR) $(DESTDIR)/usr/lib/$(LIB_NAME).so > $(INSTALL_DATA) xc.h $(DESTDIR)/usr/include > > clean: > - rm -rf *.a *.so *.o *.rpm $(LIB) *~ $(DEPS) xen > + rm -rf *.a *.so *.o *.opic *.rpm $(LIB) *~ $(DEPS) xen > > rpm: all > rm -rf staging > @@ -85,11 +87,17 @@ > mv staging/i386/*.rpm . > rm -rf staging > > -libxc.so: > - ln -sf libxc.so.$(MAJOR) $@ > -libxc.so.$(MAJOR): > - ln -sf libxc.so.$(MAJOR).$(MINOR) $@ > -libxc.so.$(MAJOR).$(MINOR): $(OBJS) > +$(PIC_OBJS): %.opic: %.c > + $(CC) $(CPPFLAGS) -DPIC $(CFLAGS) -fPIC -c -o $@ $< > + > +$(LIB_NAME).a: $(OBJS) > + $(AR) rc $@ $^ > + > +$(LIB_NAME).so: $(LIB_NAME).so.$(MAJOR) > + ln -sf $< $@ > +$(LIB_NAME).so.$(MAJOR): $(LIB_NAME).so.$(MAJOR).$(MINOR) > + ln -sf $< $@ > +$(LIB_NAME).so.$(MAJOR).$(MINOR): $(PIC_OBJS) > $(CC) -Wl,-soname -Wl,$(SONAME) -shared -o $@ $^ > -L../libxutil -lxutil -lz > > -include $(DEPS) > > > > > ------------------------------------------------------- > This SF.Net email is sponsored by: IntelliVIEW -- Interactive > Reporting > Tool for open source databases. Create drag-&-drop reports. Save time > by over 75%! Publish reports on the web. Export to DOC, XLS, RTF, etc. > Download a FREE copy at http://www.intelliview.com/go/osdn_nl > _______________________________________________ > Xen-devel mailing list > Xen-devel@xxxxxxxxxxxxxxxxxxxxx > https://lists.sourceforge.net/lists/listinfo/xen-devel > ------------------------------------------------------- This SF.Net email is sponsored by: IntelliVIEW -- Interactive Reporting Tool for open source databases. Create drag-&-drop reports. Save time by over 75%! Publish reports on the web. Export to DOC, XLS, RTF, etc. Download a FREE copy at http://www.intelliview.com/go/osdn_nl _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxxxxxxxxxx https://lists.sourceforge.net/lists/listinfo/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |