Since kbuild now enforces the use of the linker script on the vmlinux build,
UML can't use its old two-stage link, where
	vmlinux is a normal relocatable object file
	which is linked into the linux binary with the linker script
So, in order to fold those into one stage and produce an ELF binary, I need
the vmlinux "linker" to actually be gcc.  This implies I need a 
"-Wl,-T,arch/$(ARCH)/vmlinux.lds.s" instead of the usual 
"-T arch/$(ARCH)/vmlinux.lds.s".
This is done without breaking the other arches by changing the final link
command to $(LD_vmlinux) which is defaulted to $(LD) if the arch doesn't
define it.
The "-Wl,..." is done similarly by using $(LDFLAGS_vmlinux_default) if
the linker command is anything but gcc and $(LDFLAGS_vmlinux_gcc) if it is
gcc.
The one caveat is that I removed $(LDFLAGS) from the link line - you might
want to add it back.
You can pull bk://jdike.stearns.org/kbuild-2.5.  The patch is also appended.
				Jeff
# This is a BitKeeper generated patch for the following project:
# Project Name: Linux kernel tree
# This patch format is intended for GNU patch command version 2.5 or higher.
# This patch includes the following deltas:
#	           ChangeSet	1.600   -> 1.602  
#	            Makefile	1.305   -> 1.307  
#
# The following is the BitKeeper ChangeSet Log
# --------------------------------------------
# 02/09/23	jdike@uml.karaya.com	1.601
# Fixes to allow UML to build with the new vmlinux rules.
# --------------------------------------------
# 02/09/23	jdike@uml.karaya.com	1.602
# Made the UML Makefile changes work for the other arches.
# --------------------------------------------
#
diff -Nru a/Makefile b/Makefile
--- a/Makefile	Mon Sep 23 19:50:33 2002
+++ b/Makefile	Mon Sep 23 19:50:33 2002
@@ -288,10 +288,12 @@
 #       we cannot yet know if we will need to relink vmlinux.
 #	So we descend into init/ inside the rule for vmlinux again.
 
+LD_vmlinux := $(if $(LD_vmlinux),$(LD_vmlinux),$(LD))
+
 vmlinux-objs := $(HEAD) $(INIT) $(CORE_FILES) $(LIBS) $(DRIVERS) $(NETWORKS)
 
 quiet_cmd_link_vmlinux = LD      $@
-cmd_link_vmlinux = $(LD) $(LDFLAGS) $(LDFLAGS_$(@F)) $(HEAD) $(INIT) \
+cmd_link_vmlinux = $(LD_vmlinux) $(LDFLAGS_$(@F)) $(HEAD) $(INIT) \
 		--start-group \
 		$(CORE_FILES) \
 		$(LIBS) \
@@ -313,7 +315,11 @@
 	$(NM) vmlinux | grep -v '\(compiled\)\|\(\.o$$\)\|\( [aUw] \)\|\(\.\.ng$$\)\|\(LASH[RL]DI\)' | sort > System.map
 endef
 
-LDFLAGS_vmlinux += -T arch/$(ARCH)/vmlinux.lds.s
+LDFLAGS_vmlinux_default = -T arch/$(ARCH)/vmlinux.lds.s
+LDFLAGS_vmlinux_gcc = -Wl,-T,arch/$(ARCH)/vmlinux.lds.s
+
+vmlinux_base = $(basename $(notdir $(LD_vmlinux)))
+LDFLAGS_vmlinux += $(if $(LDFLAGS_vmlinux_$(vmlinux_base)),$(LDFLAGS_vmlinux_$(vmlinux_base)),$(LDFLAGS_vmlinux_default))
 
 vmlinux: $(vmlinux-objs) arch/$(ARCH)/vmlinux.lds.s FORCE
 	$(call if_changed_rule,link_vmlinux)
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/