* [PATCH] Kbuild fixes
@ 2005-11-10 21:36 Sam Ravnborg
2005-11-10 21:46 ` Linus Torvalds
2005-12-01 16:25 ` Andreas Schwab
0 siblings, 2 replies; 6+ messages in thread
From: Sam Ravnborg @ 2005-11-10 21:36 UTC (permalink / raw)
To: Linus Torvalds, Andrew Morton
Cc: linux-kernel, Zachary Amsden, Uwe Zeisberger, Russell King
Hi Linus.
Two kbuild fixes.
[PATCH] kbuild: build breaks after -imacros was introduced
[PATCH] kbuild: make kernelrelease in unconfigured kernel prints an error
The use of -imacros is know to break for at least two distinct users.
akpm being one of them.
Sam
please pull from:
master.kernel.org/pub/scm/linux/kernel/git/sam/kbuild.git
Patch'es included below.
Makefile | 2 +-
b/Makefile | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
Author: Zachary Amsden <zach@vmware.com>
[PATCH] kbuild: build breaks after -imacros was introduced
I have to revert the recent addition of -imacros to the Makefile to get my
tool chain to build. Without the change, below, I get:
Note that this looks entirely like a toolchain bug. Here is the offending command:
[pid 12163] execve("/usr/lib/gcc-lib/i386-redhat-linux/3.2.2/tradcpp0", ["/usr/lib/gcc-lib/i386-redhat-linux/3.2.2/tradcpp0", "-lang-asm", "-nostdinc", "-Iinclude", "-Iinclude/asm-i386/mach-default", "-D__GNUC__=3", "-D__GNUC_MINOR__=2", "-D__GNUC_PATCHLEVEL__=2", "-D__GXX_ABI_VERSION=102", "-D__ELF__", "-Dunix", "-D__gnu_linux__", "-Dlinux", "-D__ELF__", "-D__unix__", "-D__gnu_linux__", "-D__linux__", "-D__unix", "-D__linux", "-Asystem=posix", "-D__NO_INLINE__", "-D__STDC_HOSTED__=1", "-Acpu=i386", "-Amachine=i386", "-Di386", "-D__i386", "-D__i386__", "-D__tune_i386__", "-D__KERNEL__", "-D__ASSEMBLY__", "-isystem", "/usr/lib/gcc-lib/i386-redhat-linux/3.2.2/include", "-imacros", "include/linux/autoconf.h", "-MD", "arch/i386/kernel/.entry.o.d", "arch/i386/kernel/entry.S", "-o", "/tmp/ccOlsFJR.s"]
Which should execute properly, I think. But it does not:
zach-dev:linux-2.6.14-zach-work $ make
CHK include/linux/version.h
CHK include/linux/compile.h
CHK usr/initramfs_list
AS arch/i386/kernel/entry.o
/usr/lib/gcc-lib/i386-redhat-linux/3.2.2/tradcpp0: output filename specified twice
make[1]: *** [arch/i386/kernel/entry.o] Error 1
make: *** [arch/i386/kernel] Error 2
gcc (GCC) 3.2.2 20030222 (Red Hat Linux 3.2.2-5)
Deprecating the -imacros fixes the build for me. It does not appear to be a
simple argument overflow problem in trapcpp0, since deprecating all the defines
reproduces the problem as well. Also, switching -imacros to -include fixes the
problem.
Signed-off-by: Zachary Amsden <zach@vmware.com>
Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
diff --git a/Makefile b/Makefile
index 3152d63..83a3185 100644
--- a/Makefile
+++ b/Makefile
@@ -347,7 +347,7 @@ AFLAGS_KERNEL =
# Needed to be compatible with the O= option
LINUXINCLUDE := -Iinclude \
$(if $(KBUILD_SRC),-Iinclude2 -I$(srctree)/include) \
- -imacros include/linux/autoconf.h
+ -include include/linux/autoconf.h
CPPFLAGS := -D__KERNEL__ $(LINUXINCLUDE)
Author: Uwe Zeisberger <zeisberg@informatik.uni-freiburg.de>
[PATCH] kbuild: make kernelrelease in unconfigured kernel prints an error
Do not include .config for target kernelrelease
Signed-off-by: Uwe Zeisberger <zeisberg@informatik.uni-freiburg.de>
Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
diff --git a/Makefile b/Makefile
index 2dac801..3152d63 100644
--- a/Makefile
+++ b/Makefile
@@ -407,7 +407,7 @@ outputmakefile:
# of make so .config is not included in this case either (for *config).
no-dot-config-targets := clean mrproper distclean \
- cscope TAGS tags help %docs check%
+ cscope TAGS tags help %docs check% kernelrelease
config-targets := 0
mixed-targets := 0
^ permalink raw reply related [flat|nested] 6+ messages in thread
* Re: [PATCH] Kbuild fixes
2005-11-10 21:36 [PATCH] Kbuild fixes Sam Ravnborg
@ 2005-11-10 21:46 ` Linus Torvalds
2005-11-10 22:16 ` Sam Ravnborg
2005-12-01 16:25 ` Andreas Schwab
1 sibling, 1 reply; 6+ messages in thread
From: Linus Torvalds @ 2005-11-10 21:46 UTC (permalink / raw)
To: Sam Ravnborg
Cc: Andrew Morton, linux-kernel, Zachary Amsden, Uwe Zeisberger,
Russell King
On Thu, 10 Nov 2005, Sam Ravnborg wrote:
>
> please pull from:
>
> master.kernel.org/pub/scm/linux/kernel/git/sam/kbuild.git
Grr. That's not a valid git URL.
Hint.. There's a missing colon there.
Linus
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH] Kbuild fixes
2005-11-10 21:46 ` Linus Torvalds
@ 2005-11-10 22:16 ` Sam Ravnborg
0 siblings, 0 replies; 6+ messages in thread
From: Sam Ravnborg @ 2005-11-10 22:16 UTC (permalink / raw)
To: Linus Torvalds
Cc: Andrew Morton, linux-kernel, Zachary Amsden, Uwe Zeisberger,
Russell King
On Thu, Nov 10, 2005 at 01:46:35PM -0800, Linus Torvalds wrote:
>
>
> On Thu, 10 Nov 2005, Sam Ravnborg wrote:
> >
> > please pull from:
> >
> > master.kernel.org/pub/scm/linux/kernel/git/sam/kbuild.git
>
> Grr. That's not a valid git URL.
Ups..
git://git.kernel.org/pub/scm/linux/kernel/git/sam/kbuild.git
or
master.kernel.org:/pub/scm/linux/kernel/git/sam/kbuild.git
It must be a disease coming from sitting in front of Windoze boxes all
day starring in Outlook :-(
Sam
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH] Kbuild fixes
2005-11-10 21:36 [PATCH] Kbuild fixes Sam Ravnborg
2005-11-10 21:46 ` Linus Torvalds
@ 2005-12-01 16:25 ` Andreas Schwab
2005-12-02 7:28 ` Uwe Zeisberger
1 sibling, 1 reply; 6+ messages in thread
From: Andreas Schwab @ 2005-12-01 16:25 UTC (permalink / raw)
To: Sam Ravnborg
Cc: Linus Torvalds, Andrew Morton, linux-kernel, Zachary Amsden,
Uwe Zeisberger, Russell King
Sam Ravnborg <sam@ravnborg.org> writes:
> Author: Uwe Zeisberger <zeisberg@informatik.uni-freiburg.de>
>
> [PATCH] kbuild: make kernelrelease in unconfigured kernel prints an error
>
> Do not include .config for target kernelrelease
This is wrong. KERNELRELEASE depends on CONFIG_LOCALVERSION, thus you
need .config.
Signed-off-by: Andreas Schwab <schwab@suse.de>
Index: linux-2.6.14/Makefile
===================================================================
--- linux-2.6.14.orig/Makefile 2005-12-01 17:10:33.998015103 +0100
+++ linux-2.6.14/Makefile 2005-12-01 17:11:39.605921389 +0100
@@ -412,7 +412,7 @@ outputmakefile:
# of make so .config is not included in this case either (for *config).
no-dot-config-targets := clean mrproper distclean \
- cscope TAGS tags help %docs check% kernelrelease
+ cscope TAGS tags help %docs check%
config-targets := 0
mixed-targets := 0
Andreas.
--
Andreas Schwab, SuSE Labs, schwab@suse.de
SuSE Linux Products GmbH, Maxfeldstraße 5, 90409 Nürnberg, Germany
PGP key fingerprint = 58CA 54C7 6D53 942B 1756 01D3 44D5 214B 8276 4ED5
"And now for something completely different."
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH] Kbuild fixes
2005-12-01 16:25 ` Andreas Schwab
@ 2005-12-02 7:28 ` Uwe Zeisberger
0 siblings, 0 replies; 6+ messages in thread
From: Uwe Zeisberger @ 2005-12-02 7:28 UTC (permalink / raw)
To: Andreas Schwab
Cc: Sam Ravnborg, Linus Torvalds, Andrew Morton, linux-kernel,
Zachary Amsden, Russell King, James Cloos
Hallo Andreas,
Andreas Schwab wrote:
> Sam Ravnborg <sam@ravnborg.org> writes:
>
> > Author: Uwe Zeisberger <zeisberg@informatik.uni-freiburg.de>
> >
> > [PATCH] kbuild: make kernelrelease in unconfigured kernel prints an error
> >
> > Do not include .config for target kernelrelease
>
> This is wrong. KERNELRELEASE depends on CONFIG_LOCALVERSION, thus you
> need .config.
James Cloos already indicated that on lkml[1]. I prepared a patch but
didn't sent it to lkml.
Maybe you're happy with the following patch, too? With it .config is
included if it exists and no error occurs if not.
{{{
Include .config for target kernelrelease if it exists
With this fix the value of CONFIG_LOCALVERSION is appended to the output
of `make kernelrelease`. The git tag is *not* appended (yet) without a
.config.
Signed-off-by: Uwe Zeisberger <zeisberg@informatik.uni-freiburg.de>
---
Makefile | 17 ++++++++++++++---
1 files changed, 14 insertions(+), 3 deletions(-)
applies-to: bf816f7c7055127415fc3b718e260855df815d55
02a17e7669dcc6abd51fefc65af2278e95e4855f
diff --git a/Makefile b/Makefile
index e7a0443..77b51b8 100644
--- a/Makefile
+++ b/Makefile
@@ -407,16 +407,23 @@ outputmakefile:
# Detect when mixed targets is specified, and make a second invocation
# of make so .config is not included in this case either (for *config).
-no-dot-config-targets := clean mrproper distclean \
- cscope TAGS tags help %docs check% kernelrelease
+no-dot-config-targets := clean mrproper distclean \
+ cscope TAGS tags help %docs check%
+
+opt-dot-config-targets := kernelrelease
config-targets := 0
mixed-targets := 0
dot-config := 1
+opt-dot-config := 0
-ifneq ($(filter $(no-dot-config-targets), $(MAKECMDGOALS)),)
+ifneq ($(filter $(no-dot-config-targets) $(opt-dot-config-targets), $(MAKECMDGOALS)),)
ifeq ($(filter-out $(no-dot-config-targets), $(MAKECMDGOALS)),)
dot-config := 0
+ else
+ ifeq ($(filter-out $(opt-dot-config-targets), $(MAKECMDGOALS)),)
+ opt-dot-config := 1
+ endif
endif
endif
@@ -483,7 +490,11 @@ ifeq ($(dot-config),1)
# oldconfig if changes are detected.
-include .config.cmd
+ifeq ($(opt-dot-config),1)
+-include .config
+else
include .config
+endif
# If .config needs to be updated, it will be done via the dependency
# that autoconf has on .config.
---
0.99.9g
}}}
[1] http://groups.google.com/group/linux.kernel/browse_thread/thread/25b426027bf5fdba/e5931ac731528c1f?q=Cloos&rnum=2#e5931ac731528c1f
--
Uwe Zeisberger
http://www.google.com/search?q=sin%28pi%2F2%29
^ permalink raw reply related [flat|nested] 6+ messages in thread
* [PATCH] kbuild fixes
@ 2006-08-01 9:40 Sam Ravnborg
0 siblings, 0 replies; 6+ messages in thread
From: Sam Ravnborg @ 2006-08-01 9:40 UTC (permalink / raw)
To: Linus Torvalds, Andrew Morton, LKML
Hi Linus.
Following is a minimum set of kbuild fixes for 2.6.18.
The other kbuild patches previously sent is now queued for 2.6.19.
All patches below has been in -mm for a while.
Please apply.
git://git.kernel.org/pub/scm/linux/kernel/git/sam/kbuild-2.6.18.git
Shotlog, diffstat and diff all inline.
Sam
Dave Jones:
kbuild: fix typo in modpost
Qi Yong:
gitignore: gitignore quilt's files
Roman Zippel:
kconfig: correct oldconfig for unset choice options
Sam Ravnborg:
kbuild: hardcode value of YACC&LEX for aic7-triple-x
kbuild: version.h and new headers_* targets does not require a kernel config
kbuild: .gitignore utsrelease.h
kbuild: improve error from file2alias
kbuild: -fno-stack-protector is not good
kbuild: always use $(CC) for $(call cc-version)
.gitignore | 5 +++
Makefile | 5 ++-
drivers/scsi/aic7xxx/aicasm/Makefile | 2 +
scripts/Kbuild.include | 3 +-
scripts/Makefile.modpost | 2 +
scripts/kconfig/confdata.c | 2 +
scripts/mod/file2alias.c | 62 ++++++++++++++++++++++++----------
7 files changed, 56 insertions(+), 25 deletions(-)
diff --git a/.gitignore b/.gitignore
index 27fd376..b1f5b9d 100644
--- a/.gitignore
+++ b/.gitignore
@@ -30,6 +30,11 @@ include/config
include/linux/autoconf.h
include/linux/compile.h
include/linux/version.h
+include/linux/utsrelease.h
# stgit generated dirs
patches-*
+
+# quilt's files
+patches
+series
diff --git a/Makefile b/Makefile
index c9b7dbb..110db85 100644
--- a/Makefile
+++ b/Makefile
@@ -310,8 +310,8 @@ CPPFLAGS := -D__KERNEL__ $(LINUXI
CFLAGS := -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs \
-fno-strict-aliasing -fno-common
# Force gcc to behave correct even for buggy distributions
-CFLAGS += $(call cc-option, -fno-stack-protector-all \
- -fno-stack-protector)
+CFLAGS += $(call cc-option, -fno-stack-protector)
+
AFLAGS := -D__ASSEMBLY__
# Read KERNELRELEASE from include/config/kernel.release (if it exists)
@@ -368,6 +368,7 @@ # of make so .config is not included in
no-dot-config-targets := clean mrproper distclean \
cscope TAGS tags help %docs check% \
+ include/linux/version.h headers_% \
kernelrelease kernelversion
config-targets := 0
diff --git a/drivers/scsi/aic7xxx/aicasm/Makefile b/drivers/scsi/aic7xxx/aicasm/Makefile
index 8c91fda..b98c5c1 100644
--- a/drivers/scsi/aic7xxx/aicasm/Makefile
+++ b/drivers/scsi/aic7xxx/aicasm/Makefile
@@ -14,6 +14,8 @@ LIBS= -ldb
clean-files:= ${GENSRCS} ${GENHDRS} $(YSRCS:.y=.output) $(PROG)
# Override default kernel CFLAGS. This is a userland app.
AICASM_CFLAGS:= -I/usr/include -I.
+LEX= flex
+YACC= bison
YFLAGS= -d
NOMAN= noman
diff --git a/scripts/Kbuild.include b/scripts/Kbuild.include
index f011322..bb19c15 100644
--- a/scripts/Kbuild.include
+++ b/scripts/Kbuild.include
@@ -77,8 +77,7 @@ cc-option-align = $(subst -functions=0,,
# cc-version
# Usage gcc-ver := $(call cc-version, $(CC))
-cc-version = $(shell $(CONFIG_SHELL) $(srctree)/scripts/gcc-version.sh \
- $(if $(1), $(1), $(CC)))
+cc-version = $(shell $(CONFIG_SHELL) $(srctree)/scripts/gcc-version.sh $(CC))
# cc-ifversion
# Usage: EXTRA_CFLAGS += $(call cc-ifversion, -lt, 0402, -O1)
diff --git a/scripts/Makefile.modpost b/scripts/Makefile.modpost
index a495502..0a64688 100644
--- a/scripts/Makefile.modpost
+++ b/scripts/Makefile.modpost
@@ -40,7 +40,7 @@ include scripts/Kbuild.include
include scripts/Makefile.lib
kernelsymfile := $(objtree)/Module.symvers
-modulesymfile := $(KBUILD_EXTMOD)/Modules.symvers
+modulesymfile := $(KBUILD_EXTMOD)/Module.symvers
# Step 1), find all modules listed in $(MODVERDIR)/
__modules := $(sort $(shell grep -h '\.ko' /dev/null $(wildcard $(MODVERDIR)/*.mod)))
diff --git a/scripts/kconfig/confdata.c b/scripts/kconfig/confdata.c
index 2ee48c3..a69d8ac 100644
--- a/scripts/kconfig/confdata.c
+++ b/scripts/kconfig/confdata.c
@@ -357,7 +357,7 @@ int conf_read(const char *name)
for (e = prop->expr; e; e = e->left.expr)
if (e->right.sym->visible != no)
flags &= e->right.sym->flags;
- sym->flags |= flags & SYMBOL_DEF_USER;
+ sym->flags &= flags | ~SYMBOL_DEF_USER;
}
sym_change_count += conf_warnings || conf_unsaved;
diff --git a/scripts/mod/file2alias.c b/scripts/mod/file2alias.c
index 37f67c2..4431292 100644
--- a/scripts/mod/file2alias.c
+++ b/scripts/mod/file2alias.c
@@ -52,6 +52,23 @@ do {
sprintf(str + strlen(str), "*"); \
} while(0)
+/**
+ * Check that sizeof(device_id type) are consistent with size of section
+ * in .o file. If in-consistent then userspace and kernel does not agree
+ * on actual size which is a bug.
+ **/
+static void device_id_size_check(const char *modname, const char *device_id,
+ unsigned long size, unsigned long id_size)
+{
+ if (size % id_size || size < id_size) {
+ fatal("%s: sizeof(struct %s_device_id)=%lu is not a modulo "
+ "of the size of section __mod_%s_device_table=%lu.\n"
+ "Fix definition of struct %s_device_id "
+ "in mod_devicetable.h\n",
+ modname, device_id, id_size, device_id, size, device_id);
+ }
+}
+
/* USB is special because the bcdDevice can be matched against a numeric range */
/* Looks like "usb:vNpNdNdcNdscNdpNicNiscNipN" */
static void do_usb_entry(struct usb_device_id *id,
@@ -152,10 +169,8 @@ static void do_usb_table(void *symval, u
unsigned int i;
const unsigned long id_size = sizeof(struct usb_device_id);
- if (size % id_size || size < id_size) {
- warn("%s ids %lu bad size "
- "(each on %lu)\n", mod->name, size, id_size);
- }
+ device_id_size_check(mod->name, "usb", size, id_size);
+
/* Leave last one: it's the terminator. */
size -= id_size;
@@ -434,6 +449,7 @@ static inline int sym_is(const char *sym
static void do_table(void *symval, unsigned long size,
unsigned long id_size,
+ const char *device_id,
void *function,
struct module *mod)
{
@@ -441,10 +457,7 @@ static void do_table(void *symval, unsig
char alias[500];
int (*do_entry)(const char *, void *entry, char *alias) = function;
- if (size % id_size || size < id_size) {
- warn("%s ids %lu bad size "
- "(each on %lu)\n", mod->name, size, id_size);
- }
+ device_id_size_check(mod->name, device_id, size, id_size);
/* Leave last one: it's the terminator. */
size -= id_size;
@@ -476,40 +489,51 @@ void handle_moddevtable(struct module *m
+ sym->st_value;
if (sym_is(symname, "__mod_pci_device_table"))
- do_table(symval, sym->st_size, sizeof(struct pci_device_id),
+ do_table(symval, sym->st_size,
+ sizeof(struct pci_device_id), "pci",
do_pci_entry, mod);
else if (sym_is(symname, "__mod_usb_device_table"))
/* special case to handle bcdDevice ranges */
do_usb_table(symval, sym->st_size, mod);
else if (sym_is(symname, "__mod_ieee1394_device_table"))
- do_table(symval, sym->st_size, sizeof(struct ieee1394_device_id),
+ do_table(symval, sym->st_size,
+ sizeof(struct ieee1394_device_id), "ieee1394",
do_ieee1394_entry, mod);
else if (sym_is(symname, "__mod_ccw_device_table"))
- do_table(symval, sym->st_size, sizeof(struct ccw_device_id),
+ do_table(symval, sym->st_size,
+ sizeof(struct ccw_device_id), "ccw",
do_ccw_entry, mod);
else if (sym_is(symname, "__mod_serio_device_table"))
- do_table(symval, sym->st_size, sizeof(struct serio_device_id),
+ do_table(symval, sym->st_size,
+ sizeof(struct serio_device_id), "serio",
do_serio_entry, mod);
else if (sym_is(symname, "__mod_pnp_device_table"))
- do_table(symval, sym->st_size, sizeof(struct pnp_device_id),
+ do_table(symval, sym->st_size,
+ sizeof(struct pnp_device_id), "pnp",
do_pnp_entry, mod);
else if (sym_is(symname, "__mod_pnp_card_device_table"))
- do_table(symval, sym->st_size, sizeof(struct pnp_card_device_id),
+ do_table(symval, sym->st_size,
+ sizeof(struct pnp_card_device_id), "pnp_card",
do_pnp_card_entry, mod);
else if (sym_is(symname, "__mod_pcmcia_device_table"))
- do_table(symval, sym->st_size, sizeof(struct pcmcia_device_id),
+ do_table(symval, sym->st_size,
+ sizeof(struct pcmcia_device_id), "pcmcia",
do_pcmcia_entry, mod);
else if (sym_is(symname, "__mod_of_device_table"))
- do_table(symval, sym->st_size, sizeof(struct of_device_id),
+ do_table(symval, sym->st_size,
+ sizeof(struct of_device_id), "of",
do_of_entry, mod);
else if (sym_is(symname, "__mod_vio_device_table"))
- do_table(symval, sym->st_size, sizeof(struct vio_device_id),
+ do_table(symval, sym->st_size,
+ sizeof(struct vio_device_id), "vio",
do_vio_entry, mod);
else if (sym_is(symname, "__mod_i2c_device_table"))
- do_table(symval, sym->st_size, sizeof(struct i2c_device_id),
+ do_table(symval, sym->st_size,
+ sizeof(struct i2c_device_id), "i2c",
do_i2c_entry, mod);
else if (sym_is(symname, "__mod_input_device_table"))
- do_table(symval, sym->st_size, sizeof(struct input_device_id),
+ do_table(symval, sym->st_size,
+ sizeof(struct input_device_id), "input",
do_input_entry, mod);
}
^ permalink raw reply related [flat|nested] 6+ messages in thread
end of thread, other threads:[~2006-08-01 9:41 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2005-11-10 21:36 [PATCH] Kbuild fixes Sam Ravnborg
2005-11-10 21:46 ` Linus Torvalds
2005-11-10 22:16 ` Sam Ravnborg
2005-12-01 16:25 ` Andreas Schwab
2005-12-02 7:28 ` Uwe Zeisberger
-- strict thread matches above, loose matches on Subject: below --
2006-08-01 9:40 [PATCH] kbuild fixes Sam Ravnborg
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox