diff options
| author | Linus Torvalds <torvalds@penguin.transmeta.com> | 2002-12-03 22:08:48 -0800 |
|---|---|---|
| committer | Linus Torvalds <torvalds@penguin.transmeta.com> | 2002-12-03 22:08:48 -0800 |
| commit | 2becf2fd04bdad4a7d0acb94fef355a0b3febfdb (patch) | |
| tree | e6b22859c6c9ac2dfe8315bb0be028fd50871147 | |
| parent | 7b66a268acb1e7e7e1a367e3b07aa657cb198b2d (diff) | |
| parent | 260b4179e57d412d7ed71cb5350775bf650ef7c6 (diff) | |
Merge http://linux-isdn.bkbits.net/linux-2.5.make
into penguin.transmeta.com:/home/penguin/torvalds/repositories/kernel/linux
| -rw-r--r-- | Makefile | 43 | ||||
| -rw-r--r-- | arch/i386/Makefile | 12 | ||||
| -rw-r--r-- | arch/i386/boot/Makefile | 12 | ||||
| -rw-r--r-- | arch/i386/boot/compressed/Makefile | 1 | ||||
| -rw-r--r-- | drivers/misc/Makefile | 2 | ||||
| -rw-r--r-- | kernel/kallsyms.c | 13 | ||||
| -rw-r--r-- | scripts/Makefile | 28 | ||||
| -rw-r--r-- | scripts/Makefile.build | 49 | ||||
| -rw-r--r-- | scripts/Makefile.lib | 13 | ||||
| -rw-r--r-- | scripts/Makefile.modinst | 6 | ||||
| -rw-r--r-- | scripts/kallsyms | 40 | ||||
| -rw-r--r-- | scripts/kallsyms.c | 148 | ||||
| -rw-r--r-- | scripts/lxdialog/Makefile | 8 |
13 files changed, 234 insertions, 141 deletions
@@ -162,22 +162,21 @@ PERL = perl MODFLAGS = -DMODULE CFLAGS_MODULE = $(MODFLAGS) AFLAGS_MODULE = $(MODFLAGS) +LDFLAGS_MODULE = -r CFLAGS_KERNEL = AFLAGS_KERNEL = + NOSTDINC_FLAGS = -nostdinc -iwithprefix include CPPFLAGS := -D__KERNEL__ -Iinclude CFLAGS := $(CPPFLAGS) -Wall -Wstrict-prototypes -Wno-trigraphs -O2 \ -fno-strict-aliasing -fno-common -ifndef CONFIG_FRAME_POINTER -CFLAGS += -fomit-frame-pointer -endif AFLAGS := -D__ASSEMBLY__ $(CPPFLAGS) export VERSION PATCHLEVEL SUBLEVEL EXTRAVERSION KERNELRELEASE ARCH \ CONFIG_SHELL TOPDIR HOSTCC HOSTCFLAGS CROSS_COMPILE AS LD CC \ CPP AR NM STRIP OBJCOPY OBJDUMP MAKE AWK GENKSYMS PERL UTS_MACHINE \ - HOSTCXX HOSTCXXFLAGS LDFLAGS_BLOB + HOSTCXX HOSTCXXFLAGS LDFLAGS_BLOB LDFLAGS_MODULE export CPPFLAGS NOSTDINC_FLAGS OBJCOPYFLAGS LDFLAGS export CFLAGS CFLAGS_KERNEL CFLAGS_MODULE @@ -203,7 +202,7 @@ scripts/docproc scripts/fixdep scripts/split-include : scripts ; .PHONY: scripts scripts: - +@$(Q)$(MAKE) -f scripts/Makefile.build obj=scripts + $(Q)$(MAKE) -f scripts/Makefile.build obj=scripts # Objects we will link into vmlinux / subdirs we need to visit # --------------------------------------------------------------------------- @@ -260,6 +259,10 @@ ifdef CONFIG_MODULES export EXPORT_FLAGS := -DEXPORT_SYMTAB endif +ifndef CONFIG_FRAME_POINTER +CFLAGS += -fomit-frame-pointer +endif + # # INSTALL_PATH specifies where to place the updated kernel and system map # images. Uncomment if you want to place them anywhere other than root. @@ -351,12 +354,12 @@ ifdef CONFIG_KALLSYMS kallsyms.o := .tmp_kallsyms2.o quiet_cmd_kallsyms = KSYM $@ -cmd_kallsyms = sh $(KALLSYMS) $< $@ +cmd_kallsyms = $(NM) -n $< | scripts/kallsyms > $@ -.tmp_kallsyms1.o: .tmp_vmlinux1 - $(call cmd,kallsyms) +.tmp_kallsyms1.o .tmp_kallsyms2.o: %.o: %.S scripts FORCE + $(call if_changed_dep,as_o_S) -.tmp_kallsyms2.o: .tmp_vmlinux2 +.tmp_kallsyms%.S: .tmp_vmlinux% $(call cmd,kallsyms) .tmp_vmlinux1: $(vmlinux-objs) arch/$(ARCH)/vmlinux.lds.s FORCE @@ -435,7 +438,7 @@ include/config/MARKER: scripts/split-include include/linux/autoconf.h # with it and forgot to run make oldconfig include/linux/autoconf.h: .config - +@$(call descend,scripts/kconfig,scripts/kconfig/conf) + $(Q)$(MAKE) -f scripts/Makefile.build obj=scripts/kconfig scripts/kconfig/conf ./scripts/kconfig/conf -s arch/$(ARCH)/Kconfig # Generate some files @@ -542,7 +545,7 @@ _modinst_: .PHONY: $(patsubst %, _modinst_%, $(SUBDIRS)) $(patsubst %, _modinst_%, $(SUBDIRS)) : - $(Q)$(MAKE) -f scripts/Makefile.modinst obj=$(patsubst _modinst_%,%,$@) + $(Q)$(MAKE) -rR -f scripts/Makefile.modinst obj=$(patsubst _modinst_%,%,$@) else # CONFIG_MODULES # Modules not configured @@ -639,13 +642,13 @@ ifeq ($(filter-out $(noconfig_targets),$(MAKECMDGOALS)),) make_with_config scripts/kconfig/conf scripts/kconfig/mconf scripts/kconfig/qconf: scripts/fixdep FORCE - +@$(call descend,scripts/kconfig,$@) + $(Q)$(MAKE) -f scripts/Makefile.build obj=scripts/kconfig $@ xconfig: scripts/kconfig/qconf ./scripts/kconfig/qconf arch/$(ARCH)/Kconfig menuconfig: scripts/kconfig/mconf - $(Q)$(MAKE) -f scripts/Makefile.build obj=scripts lxdialog + $(Q)$(MAKE) -f scripts/Makefile.build obj=scripts/lxdialog ./scripts/kconfig/mconf arch/$(ARCH)/Kconfig config: scripts/kconfig/conf @@ -708,8 +711,9 @@ cmd_rmclean = rm -f $(CLEAN_FILES) clean: archclean $(addprefix _clean_,$(clean-dirs)) $(call cmd,rmclean) @find . $(RCS_FIND_IGNORE) \ - \( -name '*.[oas]' -o -name '.*.cmd' -o -name '.*.d' \ - -o -name '.*.tmp' \) -type f -print | xargs rm -f + \( -name '*.[oas]' -o -name '*.ko' -o -name '.*.cmd' \ + -o -name '.*.d' -o -name '.*.tmp' \) -type f \ + -print | xargs rm -f # mrproper - delete configuration + modules + core files # @@ -795,7 +799,7 @@ help: @echo '' @echo 'Execute "make" or "make all" to build all targets marked with [*] ' @echo 'For further info browse Documentation/kbuild/*' - + # Documentation targets # --------------------------------------------------------------------------- @@ -827,7 +831,7 @@ else # ifneq ($(filter-out $(noconfig_targets),$(MAKECMDGOALS)),) # =========================================================================== %:: FORCE - $(MAKE) $@ + $(Q)$(MAKE) $@ endif # ifeq ($(filter-out $(noconfig_targets),$(MAKECMDGOALS)),) endif # ifdef include_config @@ -841,6 +845,9 @@ a_flags = -Wp,-MD,$(depfile) $(AFLAGS) $(NOSTDINC_FLAGS) \ quiet_cmd_as_s_S = CPP $@ cmd_as_s_S = $(CPP) $(a_flags) -o $@ $< +quiet_cmd_as_o_S = AS $@ +cmd_as_o_S = $(CC) $(a_flags) -c -o $@ $< + # read all saved command lines targets := $(wildcard $(sort $(targets))) @@ -888,6 +895,6 @@ endef # $(call descend,<dir>,<target>) # Recursively call a sub-make in <dir> with target <target> -descend = $(Q)$(MAKE) -f scripts/Makefile.build obj=$(1) $(2) +descend =$(Q)$(MAKE) -f scripts/Makefile.build obj=$(1) $(2) FORCE: diff --git a/arch/i386/Makefile b/arch/i386/Makefile index 6e1cddf8ffdc..a9657be239c7 100644 --- a/arch/i386/Makefile +++ b/arch/i386/Makefile @@ -66,7 +66,7 @@ drivers-$(CONFIG_OPROFILE) += arch/i386/oprofile/ CFLAGS += -Iarch/i386/$(MACHINE) AFLAGS += -Iarch/i386/$(MACHINE) -makeboot = $(call descend,arch/i386/boot,$(1)) +makeboot =$(Q)$(MAKE) -f scripts/Makefile.build obj=arch/i386/boot $(1) .PHONY: zImage bzImage compressed zlilo bzlilo zdisk bzdisk install \ clean archclean archmrproper @@ -77,20 +77,20 @@ BOOTIMAGE=arch/i386/boot/bzImage zImage zlilo zdisk: BOOTIMAGE=arch/i386/boot/zImage zImage bzImage: vmlinux - +@$(call makeboot,$(BOOTIMAGE)) + $(call makeboot,$(BOOTIMAGE)) compressed: zImage zlilo bzlilo: vmlinux - +@$(call makeboot,BOOTIMAGE=$(BOOTIMAGE) zlilo) + $(call makeboot,BOOTIMAGE=$(BOOTIMAGE) zlilo) zdisk bzdisk: vmlinux - +@$(call makeboot,BOOTIMAGE=$(BOOTIMAGE) zdisk) + $(call makeboot,BOOTIMAGE=$(BOOTIMAGE) zdisk) install: vmlinux - +@$(call makeboot,BOOTIMAGE=$(BOOTIMAGE) install) + $(call makeboot,BOOTIMAGE=$(BOOTIMAGE) install) archclean: - @$(MAKE) -f scripts/Makefile.clean obj=arch/i386/boot + $(Q)$(MAKE) -f scripts/Makefile.clean obj=arch/i386/boot archmrproper: diff --git a/arch/i386/boot/Makefile b/arch/i386/boot/Makefile index 3e5ad77e1d33..bcb97140c50f 100644 --- a/arch/i386/boot/Makefile +++ b/arch/i386/boot/Makefile @@ -32,12 +32,6 @@ subdir- := compressed host-progs := tools/build -# Default - -boot: bzImage - -include $(TOPDIR)/Rules.make - # --------------------------------------------------------------------------- $(obj)/zImage: IMAGE_OFFSET := 0x1000 @@ -53,6 +47,7 @@ cmd_image = $(obj)/tools/build $(BUILDFLAGS) $(obj)/bootsect $(obj)/setup \ $(obj)/zImage $(obj)/bzImage: $(obj)/bootsect $(obj)/setup \ $(obj)/vmlinux.bin $(obj)/tools/build FORCE $(call if_changed,image) + @echo 'Kernel: $@ is ready' $(obj)/vmlinux.bin: $(obj)/compressed/vmlinux FORCE $(call if_changed,objcopy) @@ -64,9 +59,8 @@ $(obj)/setup $(obj)/bootsect: %: %.o FORCE $(call if_changed,ld) $(obj)/compressed/vmlinux: FORCE - +@$(call descend,$(obj)/compressed,IMAGE_OFFSET=$(IMAGE_OFFSET) \ - $(obj)/compressed/vmlinux) - + $(Q)$(MAKE) -f scripts/Makefile.build obj=$(obj)/compressed \ + IMAGE_OFFSET=$(IMAGE_OFFSET) $@ zdisk: $(BOOTIMAGE) dd bs=8192 if=$(BOOTIMAGE) of=/dev/fd0 diff --git a/arch/i386/boot/compressed/Makefile b/arch/i386/boot/compressed/Makefile index 16383b2df2fb..771a41e24e5a 100644 --- a/arch/i386/boot/compressed/Makefile +++ b/arch/i386/boot/compressed/Makefile @@ -13,6 +13,7 @@ LDFLAGS_vmlinux := -Ttext $(IMAGE_OFFSET) -e startup_32 $(obj)/vmlinux: $(obj)/head.o $(obj)/misc.o $(obj)/piggy.o FORCE $(call if_changed,ld) + @: $(obj)/vmlinux.bin: vmlinux FORCE $(call if_changed,objcopy) diff --git a/drivers/misc/Makefile b/drivers/misc/Makefile index dc7ec8baee12..5ce866f84241 100644 --- a/drivers/misc/Makefile +++ b/drivers/misc/Makefile @@ -1,5 +1,5 @@ # # Makefile for misc devices that really don't fit anywhere else. # - +obj- := misc.o # Dummy rule to force built-in.o to be made include $(TOPDIR)/Rules.make diff --git a/kernel/kallsyms.c b/kernel/kallsyms.c index 0335cc7fe4a1..bb880ba4e776 100644 --- a/kernel/kallsyms.c +++ b/kernel/kallsyms.c @@ -45,14 +45,11 @@ const char *kallsyms_lookup(unsigned long addr, for (i = 0; i < best; i++) name += strlen(name)+1; - /* Base symbol size on next symbol, but beware aliases. */ - symbol_end = (unsigned long)_etext; - for (i = best+1; i < kallsyms_num_syms; i++) { - if (kallsyms_addresses[i] != kallsyms_addresses[best]){ - symbol_end = kallsyms_addresses[i]; - break; - } - } + /* Base symbol size on next symbol. */ + if (best + 1 < kallsyms_num_syms) + symbol_end = kallsyms_addresses[best + 1]; + else + symbol_end = (unsigned long)_etext; *symbolsize = symbol_end - kallsyms_addresses[best]; *modname = NULL; diff --git a/scripts/Makefile b/scripts/Makefile index 5ecc03a43242..eca3f1661bf4 100644 --- a/scripts/Makefile +++ b/scripts/Makefile @@ -8,31 +8,11 @@ # docproc: Preprocess .tmpl file in order to generate .sgml documentation # conmakehash: Create arrays for initializing the kernel console tables -EXTRA_TARGETS := fixdep split-include docproc conmakehash +host-progs := fixdep split-include conmakehash docproc kallsyms +build-targets := $(host-progs) +# Let clean descend into subdirs subdir- := lxdialog kconfig -# Yikes. We need to build this stuff here even if the user only wants -# modules. - -KBUILD_BUILTIN := 1 - -# The following temporary rule will make sure that people's -# trees get updated to the right permissions, since patch(1) -# can't do it -# --------------------------------------------------------------------------- - -host-progs := fixdep split-include conmakehash docproc - -include $(TOPDIR)/Rules.make - - -# --------------------------------------------------------------------------- -# Targets hardcoded and wellknow in top-level makefile -.PHONY: lxdialog -lxdialog: - $(call descend,scripts/lxdialog,) - # fixdep is needed to compile other host programs -$(obj)/split-include $(obj)/docproc \ -$(obj)/conmakehash lxdialog: $(obj)/fixdep +$(addprefix $(obj)/,$(filter-out fixdep,$(host-progs))): $(obj)/fixdep diff --git a/scripts/Makefile.build b/scripts/Makefile.build index f5f9a84fdd99..4bccbe923690 100644 --- a/scripts/Makefile.build +++ b/scripts/Makefile.build @@ -40,12 +40,14 @@ endif ifdef L_TARGET L_TARGET := $(obj)/$(L_TARGET) else +ifneq ($(strip $(obj-y) $(obj-m) $(obj-n) $(obj-)),) O_TARGET := $(obj)/built-in.o endif +endif __build: $(if $(KBUILD_BUILTIN),$(O_TARGET) $(L_TARGET) $(EXTRA_TARGETS)) \ - $(if $(KBUILD_MODULES),$(obj-m)) \ - $(subdir-ym) + $(if $(KBUILD_MODULES),$(obj-m:.o=.ko)) \ + $(subdir-ym) $(build-targets) @: # Compile C sources (.c) @@ -103,7 +105,9 @@ cmd_cc_o_c = $(CC) $(c_flags) -c -o $@ $< $(call if_changed_dep,cc_o_c) quiet_cmd_cc_lst_c = MKLST $@ -cmd_cc_lst_c = $(CC) $(c_flags) -g -c -o $*.o $< && sh scripts/makelst $*.o System.map $(OBJDUMP) > $@ + cmd_cc_lst_c = $(CC) $(c_flags) -g -c -o $*.o $< && \ + $(CONFIG_SHELL) $(src)/scripts/makelst $*.o \ + System.map $(OBJDUMP) > $@ %.lst: %.c FORCE $(call if_changed_dep,cc_lst_c) @@ -116,9 +120,6 @@ modkern_aflags := $(AFLAGS_KERNEL) $(real-objs-m) : modkern_aflags := $(AFLAGS_MODULE) $(real-objs-m:.o=.s): modkern_aflags := $(AFLAGS_MODULE) -a_flags = -Wp,-MD,$(depfile) $(AFLAGS) $(NOSTDINC_FLAGS) \ - $(modkern_aflags) $(EXTRA_AFLAGS) $(AFLAGS_$(*F).o) - quiet_cmd_as_s_S = CPP $(quiet_modtag) $@ cmd_as_s_S = $(CPP) $(a_flags) -o $@ $< @@ -171,21 +172,29 @@ endif # # Rule to link composite objects # +quiet_cmd_link_multi-y = LD $@ +cmd_link_multi-y = $(LD) $(LDFLAGS) $(EXTRA_LDFLAGS) -r -o $@ $(filter $(addprefix $(obj)/,$($(subst $(obj)/,,$(@:.o=-objs))) $($(subst $(obj)/,,$(@:.o=-y)))),$^) -quiet_cmd_link_multi = LD $(quiet_modtag) $@ -cmd_link_multi = $(LD) $(LDFLAGS) $(EXTRA_LDFLAGS) -r -o $@ $(filter $(addprefix $(obj)/,$($(subst $(obj)/,,$(@:.o=-objs))) $($(subst $(obj)/,,$(@:.o=-y)))),$^) +quiet_cmd_link_multi-m = LD [M] $@ +cmd_link_multi-m = $(LD) $(LDFLAGS) $(EXTRA_LDFLAGS) $(LDFLAGS_MODULE) -o $@ $(filter $(addprefix $(obj)/,$($(subst $(obj)/,,$(@:.ko=-objs))) $($(subst $(obj)/,,$(@:.ko=-y)))),$^) + +quiet_cmd_link_single-m = LD [M] $@ +cmd_link_single-m = $(LD) $(LDFLAGS) $(EXTRA_LDFLAGS) $(LDFLAGS_MODULE) -o $@ $< # We would rather have a list of rules like # foo.o: $(foo-objs) # but that's not so easy, so we rather make all composite objects depend # on the set of all their parts $(multi-used-y) : %.o: $(multi-objs-y) FORCE - $(call if_changed,link_multi) + $(call if_changed,link_multi-y) + +$(multi-used-m:.o=.ko) : %.ko: $(multi-objs-m) FORCE + $(call if_changed,link_multi-m) -$(multi-used-m) : %.o: $(multi-objs-m) FORCE - $(call if_changed,link_multi) +$(single-used-m:.o=.ko) : %.ko: %.o FORCE + $(call if_changed,link_single-m) -targets += $(multi-used-y) $(multi-used-m) +targets += $(multi-used-y) $(multi-used-m:.o=.ko) $(single-used-m:.o=.ko) # Compile programs on the host # =========================================================================== @@ -217,9 +226,7 @@ targets += $(multi-used-y) $(multi-used-m) # Create executable from a single .c file # host-csingle -> Executable quiet_cmd_host-csingle = HOSTCC $@ - cmd_host-csingle = $(HOSTCC) -Wp,-MD,$(depfile) \ - $(HOSTCFLAGS) $(HOST_EXTRACFLAGS) \ - $(HOST_LOADLIBES) -o $@ $< + cmd_host-csingle = $(HOSTCC) $(hostc_flags) $(HOST_LOADLIBES) -o $@ $< $(host-csingle): %: %.c FORCE $(call if_changed_dep,host-csingle) @@ -235,9 +242,7 @@ $(host-cmulti): %: $(host-cobjs) $(host-cshlib) FORCE # Create .o file from a single .c file # host-cobjs -> .o quiet_cmd_host-cobjs = HOSTCC $@ - cmd_host-cobjs = $(HOSTCC) -Wp,-MD,$(depfile) \ - $(HOSTCFLAGS) $(HOST_EXTRACFLAGS) \ - $(HOSTCFLAGS_$(@F)) -c -o $@ $< + cmd_host-cobjs = $(HOSTCC) $(hostc_flags) -c -o $@ $< $(host-cobjs): %.o: %.c FORCE $(call if_changed_dep,host-cobjs) @@ -253,18 +258,14 @@ $(host-cxxmulti): %: $(host-cobjs) $(host-cxxobjs) $(host-cshlib) FORCE # Create .o file from a single .cc (C++) file quiet_cmd_host-cxxobjs = HOSTCXX $@ - cmd_host-cxxobjs = $(HOSTCXX) -Wp,-MD,$(depfile) \ - $(HOSTCXXFLAGS) $(HOST_EXTRACXXFLAGS) \ - $(HOSTCXXFLAGS_$(@F)) -c -o $@ $< + cmd_host-cxxobjs = $(HOSTCXX) $(hostcxx_flags) -c -o $@ $< $(host-cxxobjs): %.o: %.cc FORCE $(call if_changed_dep,host-cxxobjs) # Compile .c file, create position independent .o file # host-cshobjs -> .o quiet_cmd_host-cshobjs = HOSTCC -fPIC $@ - cmd_host-cshobjs = $(HOSTCC) -Wp,-MD,$(depfile) -fPIC\ - $(HOSTCFLAGS) $(HOST_EXTRACFLAGS) \ - $(HOSTCFLAGS_$(@F)) -c -o $@ $< + cmd_host-cshobjs = $(HOSTCC) $(hostc_flags) -fPIC -c -o $@ $< $(host-cshobjs): %.o: %.c FORCE $(call if_changed_dep,host-cshobjs) diff --git a/scripts/Makefile.lib b/scripts/Makefile.lib index c8e1528aae55..f21c0905c2da 100644 --- a/scripts/Makefile.lib +++ b/scripts/Makefile.lib @@ -43,6 +43,7 @@ __obj-m = $(filter-out export.o,$(obj-m)) multi-used-y := $(sort $(foreach m,$(__obj-y), $(if $(strip $($(m:.o=-objs)) $($(m:.o=-y))), $(m)))) multi-used-m := $(sort $(foreach m,$(__obj-m), $(if $(strip $($(m:.o=-objs)) $($(m:.o=-y))), $(m)))) multi-used := $(multi-used-y) $(multi-used-m) +single-used-m := $(filter-out $(multi-used-m),$(obj-m)) # Build list of the parts of our composite objects, our composite # objects depend on those (obviously) @@ -92,12 +93,14 @@ host-cshobjs := $(sort $(foreach m,$(host-cshlib),$($(m:.so=-objs)))) # Add subdir path EXTRA_TARGETS := $(addprefix $(obj)/,$(EXTRA_TARGETS)) +build-targets := $(addprefix $(obj)/,$(build-targets)) obj-y := $(addprefix $(obj)/,$(obj-y)) obj-m := $(addprefix $(obj)/,$(obj-m)) export-objs := $(addprefix $(obj)/,$(export-objs)) subdir-obj-y := $(addprefix $(obj)/,$(subdir-obj-y)) real-objs-y := $(addprefix $(obj)/,$(real-objs-y)) real-objs-m := $(addprefix $(obj)/,$(real-objs-m)) +single-used-m := $(addprefix $(obj)/,$(single-used-m)) multi-used-y := $(addprefix $(obj)/,$(multi-used-y)) multi-used-m := $(addprefix $(obj)/,$(multi-used-m)) multi-objs-y := $(addprefix $(obj)/,$(multi-objs-y)) @@ -128,6 +131,12 @@ modname_flags = $(if $(filter 1,$(words $(modname))),-DKBUILD_MODNAME=$(subst $ c_flags = -Wp,-MD,$(depfile) $(CFLAGS) $(NOSTDINC_FLAGS) \ $(modkern_cflags) $(EXTRA_CFLAGS) $(CFLAGS_$(*F).o) \ $(basename_flags) $(modname_flags) $(export_flags) +a_flags = -Wp,-MD,$(depfile) $(AFLAGS) $(NOSTDINC_FLAGS)\ + $(modkern_aflags) $(EXTRA_AFLAGS) $(AFLAGS_$(*F).o) +hostc_flags = -Wp,-MD,$(depfile) $(HOSTCFLAGS) $(HOST_EXTRACFLAGS)\ + $(HOSTCFLAGS_$(*F).o) +hostcxx_flags = -Wp,-MD,$(depfile) $(HOSTCXXFLAGS) $(HOST_EXTRACXXFLAGS)\ + $(HOSTCXXFLAGS_$(*F).o) # Finds the multi-part object the current object will be linked into modname-multi = $(sort $(foreach m,$(multi-used),\ @@ -139,7 +148,7 @@ modname-multi = $(sort $(foreach m,$(multi-used),\ quiet_cmd_shipped = SHIPPED $@ cmd_shipped = cat $< > $@ -%:: %_shipped +$(obj)/%:: $(src)/%_shipped $(call cmd,shipped) # Commands useful for building a boot image @@ -236,4 +245,4 @@ endef # $(call descend,<dir>,<target>) # Recursively call a sub-make in <dir> with target <target> -descend = $(Q)$(MAKE) -f scripts/Makefile.build obj=$(1) $(2) +descend =$(Q)$(MAKE) -f scripts/Makefile.build obj=$(1) $(2) diff --git a/scripts/Makefile.modinst b/scripts/Makefile.modinst index 45f5387d365f..1ea62f1c679c 100644 --- a/scripts/Makefile.modinst +++ b/scripts/Makefile.modinst @@ -15,12 +15,12 @@ include scripts/Makefile.lib # ========================================================================== -quiet_cmd_modules_install = INSTALL $(obj-m) +quiet_cmd_modules_install = INSTALL $(obj-m:.o=.ko) cmd_modules_install = mkdir -p $(MODLIB)/kernel && \ - cp $(obj-m) $(MODLIB)/kernel/ + cp $(obj-m:.o=.ko) $(MODLIB)/kernel/ modules_install: $(subdir-ym) -ifneq ($(obj-m),) +ifneq ($(obj-m:.o=.ko),) $(call cmd,modules_install) else @: diff --git a/scripts/kallsyms b/scripts/kallsyms deleted file mode 100644 index 72a51e0dbdd7..000000000000 --- a/scripts/kallsyms +++ /dev/null @@ -1,40 +0,0 @@ -#! /bin/sh -# Written by Rusty Russell <rusty@rustcorp.com.au> 2002. - -if [ $# -ne 2 ]; then - echo Usage: kallsyms vmlinux objfile >&2 - - echo Adds a .kallsyms section containing symbol info. - exit 1 -fi - -set -e - -# Clean up on exit. -trap "rm -f kallsyms.map kallsyms.c $2" 0 - -# Takes nm output from $1, produces a .c file on standard output. -encode_symbols() -{ - # First take addresses. - echo "unsigned long kallsyms_addresses[] = {" - sed 's/^[ ]*\([A-Fa-f0-9]*\).*/0x\1UL,/' < $1 - echo "};" - - # Now output size. - echo "unsigned long kallsyms_num_syms = `wc -l < $1`;" - - # Now output names. - echo "char kallsyms_names[] = "; - sed 's/^[ ]*[A-Fa-f0-9]*[ ]*.[ ]\(.*\)/"\1\\0"/' < $1 - echo ";" -} - -# FIXME: Use System.map as input, and regenerate each time in Makefile. -$NM -n $1 | grep -v '\(compiled\)\|\(\.o$$\)\|\( [aUw] \)\|\(\.\.ng$$\)\|\(LASH[RL]DI\)' | sort > kallsyms.map - -encode_symbols kallsyms.map > kallsyms.c -$CC $CFLAGS -c -o $2 kallsyms.c - -trap "rm -f kallsyms.map kallsyms.c" 0 -exit 0 diff --git a/scripts/kallsyms.c b/scripts/kallsyms.c new file mode 100644 index 000000000000..1f68d859559f --- /dev/null +++ b/scripts/kallsyms.c @@ -0,0 +1,148 @@ +/* Generate assembler source containing symbol information + * + * Copyright 2002 by Kai Germaschewski + * + * This software may be used and distributed according to the terms + * of the GNU General Public License, incorporated herein by reference. + * + * Usage: nm -n vmlinux | scripts/kallsyms > symbols.S + */ + +#include <stdio.h> +#include <stdlib.h> +#include <string.h> + +struct sym_entry { + unsigned long long addr; + char type; + char *sym; +}; + + +static struct sym_entry *table; +static int size, cnt; +static unsigned long long _stext, _etext; + +static void +usage(void) +{ + fprintf(stderr, "Usage: kallsyms < in.map > out.S\n"); + exit(1); +} + +static int +read_symbol(FILE *in, struct sym_entry *s) +{ + char str[500]; + int rc; + + rc = fscanf(in, "%llx %c %499s\n", &s->addr, &s->type, str); + if (rc != 3) { + if (rc != EOF) { + /* skip line */ + fgets(str, 500, in); + } + return -1; + } + s->sym = strdup(str); + return 0; +} + +static int +symbol_valid(struct sym_entry *s) +{ + if (s->addr < _stext) + return 0; + + if (s->addr > _etext) + return 0; + + if (strstr(s->sym, "_compiled.")) + return 0; + + return 1; +} + +static void +read_map(FILE *in) +{ + int i; + + while (!feof(in)) { + if (cnt >= size) { + size += 10000; + table = realloc(table, sizeof(*table) * size); + if (!table) { + fprintf(stderr, "out of memory\n"); + exit (1); + } + } + if (read_symbol(in, &table[cnt]) == 0) + cnt++; + } + for (i = 0; i < cnt; i++) { + if (strcmp(table[i].sym, "_stext") == 0) + _stext = table[i].addr; + if (strcmp(table[i].sym, "_etext") == 0) + _etext = table[i].addr; + } +} + +static void +write_src(void) +{ + unsigned long long last_addr; + int i, valid = 0; + + printf(".data\n"); + + printf(".globl kallsyms_addresses\n"); + printf("\t.align 8\n"); + printf("kallsyms_addresses:\n"); + for (i = 0, last_addr = 0; i < cnt; i++) { + if (!symbol_valid(&table[i])) + continue; + + if (table[i].addr == last_addr) + continue; + + printf("\t.long\t%#llx\n", table[i].addr); + valid++; + last_addr = table[i].addr; + } + printf("\n"); + + printf(".globl kallsyms_num_syms\n"); + printf("\t.align 8\n"); + printf("\t.long\t%d\n", valid); + printf("\n"); + + printf(".globl kallsyms_names\n"); + printf(".data\n"); + printf("\t.align 8\n"); + printf("kallsyms_names:\n"); + for (i = 0, last_addr = 0; i < cnt; i++) { + if (!symbol_valid(&table[i])) + continue; + + if (table[i].addr == last_addr) + continue; + + printf("\t.string\t\"%s\"\n", table[i].sym); + last_addr = table[i].addr; + } + printf("\n"); +} + +int +main(int argc, char **argv) +{ + if (argc != 1) + usage(); + + read_map(stdin); + write_src(); + + return 0; +} + diff --git a/scripts/lxdialog/Makefile b/scripts/lxdialog/Makefile index 252c5bf86cd1..f4b40f078ee8 100644 --- a/scripts/lxdialog/Makefile +++ b/scripts/lxdialog/Makefile @@ -15,19 +15,15 @@ endif endif endif -host-progs := lxdialog +host-progs := lxdialog +build-targets := $(host-progs) lxdialog-objs := checklist.o menubox.o textbox.o yesno.o inputbox.o \ util.o lxdialog.o msgbox.o -EXTRA_TARGETS := lxdialog - first_rule: ncurses -include $(TOPDIR)/Rules.make - .PHONY: ncurses - ncurses: @echo "main() {}" > lxtemp.c @if $(HOSTCC) lxtemp.c $(HOST_LOADLIBES); then \ |
