[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Xen-changelog] [xen-unstable] Clean up linker flag definitions.



# HG changeset patch
# User kfraser@xxxxxxxxxxxxxxxxxxxxx
# Node ID 307e5ed9657e3efa81dd337c7722ea877c5e5ba9
# Parent  05bf8693c7354d224867f62adeda698140919095
Clean up linker flag definitions.

 1. GNU ld does not understand -m{32,64}. It must be cooked for it by
    the GCC driver program.
 2. Where GNU ld is directly called we must use -melf_{i386,x86_64}.
 3. We cannot avoid calling GNU ld directly in some cases (e.g., when
    specifying GNU-specific linker scripts) as on some host
    architectures the GCC driver is configured to call the host
    linker.
 4. We cannot add -melf_{i386,x86_64} to LDFLAGS as the option is
    not recognised by GCC.

Hence we define new LDFLAGS_DIRECT, to be added to the command line
only when invoking GNU ld directly.

Signed-off-by: Keir Fraser <keir@xxxxxxxxxxxxx>
---
 config/x86_32.mk                  |    4 +++-
 config/x86_64.mk                  |    4 +++-
 tools/firmware/hvmloader/Makefile |    4 ++--
 tools/firmware/vmxassist/Makefile |    3 +--
 xen/Rules.mk                      |    3 +++
 xen/arch/x86/Rules.mk             |    2 --
 6 files changed, 12 insertions(+), 8 deletions(-)

diff -r 05bf8693c735 -r 307e5ed9657e config/x86_32.mk
--- a/config/x86_32.mk  Wed Oct 18 16:08:58 2006 +0100
+++ b/config/x86_32.mk  Wed Oct 18 16:56:27 2006 +0100
@@ -7,5 +7,7 @@ CONFIG_IOEMU := y
 CONFIG_IOEMU := y
 
 CFLAGS += -m32 -march=i686
-LDFLAGS += -m32
 LIBDIR := lib
+
+# Use only if calling $(LD) directly.
+LDFLAGS_DIRECT += -melf_i386
diff -r 05bf8693c735 -r 307e5ed9657e config/x86_64.mk
--- a/config/x86_64.mk  Wed Oct 18 16:08:58 2006 +0100
+++ b/config/x86_64.mk  Wed Oct 18 16:56:27 2006 +0100
@@ -7,5 +7,7 @@ CONFIG_IOEMU := y
 CONFIG_IOEMU := y
 
 CFLAGS += -m64
-LDFLAGS += -m64
 LIBDIR = $(LIB64DIR)
+
+# Use only if calling $(LD) directly.
+LDFLAGS_DIRECT += -melf_x86_64
diff -r 05bf8693c735 -r 307e5ed9657e tools/firmware/hvmloader/Makefile
--- a/tools/firmware/hvmloader/Makefile Wed Oct 18 16:08:58 2006 +0100
+++ b/tools/firmware/hvmloader/Makefile Wed Oct 18 16:56:27 2006 +0100
@@ -38,7 +38,7 @@ CFLAGS  += $(call test-gcc-flag,$(CC),-f
 
 OBJCOPY  = objcopy
 CFLAGS  += $(DEFINES) -I. $(XENINC) -fno-builtin -O2 -msoft-float
-LDFLAGS  = -m32 -nostdlib -Wl,-N -Wl,-Ttext -Wl,$(LOADADDR)
+LDFLAGS  = -nostdlib -Wl,-N -Wl,-Ttext -Wl,$(LOADADDR)
 
 SRCS = hvmloader.c acpi_madt.c mp_tables.c util.c smbios.c
 OBJS = $(patsubst %.c,%.o,$(SRCS))
@@ -48,7 +48,7 @@ all: hvmloader
 
 hvmloader: roms.h $(SRCS)
        $(CC) $(CFLAGS) -c $(SRCS)
-       $(CC) $(LDFLAGS) -o hvmloader.tmp $(OBJS)
+       $(CC) $(CFLAGS) $(LDFLAGS) -o hvmloader.tmp $(OBJS)
        $(OBJCOPY) hvmloader.tmp hvmloader
        rm -f hvmloader.tmp
 
diff -r 05bf8693c735 -r 307e5ed9657e tools/firmware/vmxassist/Makefile
--- a/tools/firmware/vmxassist/Makefile Wed Oct 18 16:08:58 2006 +0100
+++ b/tools/firmware/vmxassist/Makefile Wed Oct 18 16:56:27 2006 +0100
@@ -39,7 +39,6 @@ CPP      = cpp -P
 CPP      = cpp -P
 OBJCOPY  = objcopy -p -O binary -R .note -R .comment -R .bss -S --gap-fill=0
 CFLAGS  += $(DEFINES) -I. $(XENINC) -fno-builtin -O2 -msoft-float
-LDFLAGS  = -m elf_i386
 
 OBJECTS = head.o trap.o vm86.o setup.o util.o
 
@@ -48,7 +47,7 @@ all: vmxassist.bin
 
 vmxassist.bin: vmxassist.ld $(OBJECTS)
        $(CPP) $(DEFINES) vmxassist.ld > vmxassist.tmp
-       $(LD) -o vmxassist $(LDFLAGS) -nostdlib --fatal-warnings -N -T 
vmxassist.tmp $(OBJECTS)
+       $(LD) -o vmxassist $(LDFLAGS_DIRECT) -nostdlib --fatal-warnings -N -T 
vmxassist.tmp $(OBJECTS)
        nm -n vmxassist > vmxassist.sym
        $(OBJCOPY) vmxassist vmxassist.tmp
        dd if=vmxassist.tmp of=vmxassist.bin ibs=512 conv=sync
diff -r 05bf8693c735 -r 307e5ed9657e xen/Rules.mk
--- a/xen/Rules.mk      Wed Oct 18 16:08:58 2006 +0100
+++ b/xen/Rules.mk      Wed Oct 18 16:56:27 2006 +0100
@@ -71,6 +71,9 @@ AFLAGS   := $(strip $(AFLAGS) $(AFLAGS-y
 AFLAGS   := $(strip $(AFLAGS) $(AFLAGS-y))
 AFLAGS   += $(patsubst -std=gnu%,,$(CFLAGS))
 
+# LDFLAGS are only passed directly to $(LD)
+LDFLAGS  += $(LDFLAGS_DIRECT)
+
 include Makefile
 
 # Ensure each subdirectory has exactly one trailing slash.
diff -r 05bf8693c735 -r 307e5ed9657e xen/arch/x86/Rules.mk
--- a/xen/arch/x86/Rules.mk     Wed Oct 18 16:08:58 2006 +0100
+++ b/xen/arch/x86/Rules.mk     Wed Oct 18 16:56:27 2006 +0100
@@ -34,7 +34,6 @@ endif
 endif
 
 ifeq ($(XEN_TARGET_ARCH),x86_32)
-LDFLAGS += -m elf_i386
 x86_32 := y
 x86_64 := n
 endif
@@ -45,7 +44,6 @@ CFLAGS  += -fno-asynchronous-unwind-tabl
 # -fvisibility=hidden reduces -fpic cost, if it's available
 CFLAGS  += $(shell $(CC) -v --help 2>&1 | grep " -fvisibility=" | \
              grep -q hidden && echo "-DGCC_HAS_VISIBILITY_ATTRIBUTE")
-LDFLAGS += -m elf_x86_64
 x86_32 := n
 x86_64 := y
 endif

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


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.