[git patches] kbuild fixes for -rc

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

 



Hi Linus.
Please pull following fixes from the kbuild tree.

git pull git://git.kernel.org/pub/scm/linux/kernel/git/sam/kbuild.git

The modpost change repairing mips is the biggest change
but boils down to a fix for a binutils issue.
Other fixes are more cornercases.
Also the fix from Randy brings down the number of false
positives section mismatch warnings with allmodconfig.

diffstat + full log + full diff added below.

	Sam

Atsushi Nemoto:
      kbuild: fix modpost segfault for 64bit mipsel kernel

Jan Beulich:
      kbuild: Do not overwrite makefile as anohter user

Pavel Roskin:
      kbuild: removing .tmp_versions considered harmful

Randy Dunlap:
      kbuild modpost - relax driver data name

Sam Ravnborg:
      kbuild: fix gen_initramfs_list.sh
      kbuild: drivers/video/logo/ - fix ident glitch

 Makefile                      |   20 +++++++++-----------
 drivers/video/logo/Makefile   |    2 +-
 scripts/gen_initramfs_list.sh |    6 +++++-
 scripts/mkmakefile            |    5 ++++-
 scripts/mod/modpost.c         |   17 ++++++++++++-----
 scripts/mod/modpost.h         |   19 +++++++++++++++++++
 6 files changed, 50 insertions(+), 19 deletions(-)

commit fd5f0cd6b0cef59ba18e5ac13be5b2775fa6ec28
Author: Jan Beulich <[email protected]>
Date:   Tue May 2 12:33:20 2006 +0200

    kbuild: Do not overwrite makefile as anohter user
    
    Change the conditional of the outputmakefile rule to be evaluated entirely
    in make, and add a conditional to not touch the generated makefile when e.g.
    running 'make install' as root while the build was done as non-root. Also
    adjust the comment describing this, and move the message printing and
    redirection to mkmakefile.
    
    Signed-off-by: Jan Beulich <[email protected]>
    Signed-off-by: Sam Ravnborg <[email protected]>

commit cc873e1aa1fa916a485294117a9846e668505671
Author: Sam Ravnborg <[email protected]>
Date:   Sun Apr 30 23:59:16 2006 +0200

    kbuild: drivers/video/logo/ - fix ident glitch
    
    Jan Engelhardt <[email protected]> wrote:
    while compiling 2.6.17-rc2 with allyesconfig, this showed up:
    ...
      LOGO  drivers/video/logo/logo_superh_clut224.c
      CC      drivers/video/logo/logo_linux_mono.o
    ...
    
    A tab had sneaked in. Convert it to a few spaces.
    Signed-off-by: Sam Ravnborg <[email protected]>

commit 46ed981d5d203703a01137cc58c841d34e90c147
Author: Sam Ravnborg <[email protected]>
Date:   Sun Apr 30 23:56:33 2006 +0200

    kbuild: fix gen_initramfs_list.sh
    
    Create correct dependencies when specifying your own file with
    list of files etc. to include in initramfs.
    Reported by: Andre Noll <[email protected]>
    
    Signed-off-by: Sam Ravnborg <[email protected]>

commit 72ee59b5797e5d6fe32b5cf3473660a50a02db40
Author: Randy Dunlap <[email protected]>
Date:   Sat Apr 15 11:17:12 2006 -0700

    kbuild modpost - relax driver data name
    
    Relax driver data name from *_driver to *driver.
    This fixes the 26 section mismatch warnings in drivers/ide/pci.
    
    Signed-off-by: Randy Dunlap <[email protected]>
    Signed-off-by: Sam Ravnborg <[email protected]>

commit fca1dff218163ffd34d1e9e0b9b244e8c8803601
Author: Pavel Roskin <[email protected]>
Date:   Mon Apr 24 15:55:27 2006 -0400

    kbuild: removing .tmp_versions considered harmful
    
    Remove *.mod files but not .tmp_versions for external builds
    
    When "make install" is run as root, .tmp_versions is re-created and
    becomes owned by root.  Subsequent "make" run by user fails because
    .tmp_versions cannot be removed.
    
    Signed-off-by: Pavel Roskin <[email protected]>
    Signed-off-by: Sam Ravnborg <[email protected]>

commit c8d8b837ebe4b4f11e1b0c4a2bdc358c697692ed
Author: Atsushi Nemoto <[email protected]>
Date:   Tue Apr 25 01:53:43 2006 +0900

    kbuild: fix modpost segfault for 64bit mipsel kernel
    
    64bit mips has different r_info layout.  This patch fixes modpost
    segfault for 64bit little endian mips kernel.
    
    Signed-off-by: Atsushi Nemoto <[email protected]>
    Signed-off-by: Sam Ravnborg <[email protected]>

 
diff --git a/Makefile b/Makefile
index 6bf9962..9e4c569 100644
--- a/Makefile
+++ b/Makefile
@@ -344,16 +344,14 @@ # To avoid any implicit rule to kick in,
 scripts/basic/%: scripts_basic ;
 
 PHONY += outputmakefile
-# outputmakefile generate a Makefile to be placed in output directory, if
-# using a seperate output directory. This allows convinient use
-# of make in output directory
+# outputmakefile generates a Makefile in the output directory, if using a
+# separate output directory. This allows convenient use of make in the
+# output directory.
 outputmakefile:
-	$(Q)if test ! $(srctree) -ef $(objtree); then \
-	$(CONFIG_SHELL) $(srctree)/scripts/mkmakefile              \
-	    $(srctree) $(objtree) $(VERSION) $(PATCHLEVEL)         \
-	    > $(objtree)/Makefile;                                 \
-	    echo '  GEN    $(objtree)/Makefile';                   \
-	fi
+ifneq ($(KBUILD_SRC),)
+	$(Q)$(CONFIG_SHELL) $(srctree)/scripts/mkmakefile \
+	    $(srctree) $(objtree) $(VERSION) $(PATCHLEVEL)
+endif
 
 # To make sure we do not include .config for any of the *config targets
 # catch them early, and hand them over to scripts/kconfig/Makefile
@@ -796,8 +794,8 @@ prepare2: prepare3 outputmakefile
 prepare1: prepare2 include/linux/version.h include/asm \
                    include/config/MARKER
 ifneq ($(KBUILD_MODULES),)
-	$(Q)rm -rf $(MODVERDIR)
 	$(Q)mkdir -p $(MODVERDIR)
+	$(Q)rm -f $(MODVERDIR)/*
 endif
 
 archprepare: prepare1 scripts_basic
@@ -1086,8 +1084,8 @@ # We are always building modules
 KBUILD_MODULES := 1
 PHONY += crmodverdir
 crmodverdir:
-	$(Q)rm -rf $(MODVERDIR)
 	$(Q)mkdir -p $(MODVERDIR)
+	$(Q)rm -f $(MODVERDIR)/*
 
 PHONY += $(objtree)/Module.symvers
 $(objtree)/Module.symvers:
diff --git a/drivers/video/logo/Makefile b/drivers/video/logo/Makefile
index 4ef5cd1..b985dfa 100644
--- a/drivers/video/logo/Makefile
+++ b/drivers/video/logo/Makefile
@@ -34,7 +34,7 @@ # Gray 256
 extra-y += $(call logo-cfiles,_gray256,pgm)
 
 # Create commands like "pnmtologo -t mono -n logo_mac_mono -o ..."
-quiet_cmd_logo = LOGO	$@
+quiet_cmd_logo = LOGO    $@
 	cmd_logo = scripts/pnmtologo \
 			-t $(patsubst $*_%,%,$(notdir $(basename $<))) \
 			-n $(notdir $(basename $<)) -o $@ $<
diff --git a/scripts/gen_initramfs_list.sh b/scripts/gen_initramfs_list.sh
index 56b3bed..331c079 100644
--- a/scripts/gen_initramfs_list.sh
+++ b/scripts/gen_initramfs_list.sh
@@ -200,7 +200,11 @@ input_file() {
 			print_mtime "$1" >> ${output}
 			cat "$1"         >> ${output}
 		else
-			grep ^file "$1" | cut -d ' ' -f 3
+			cat "$1" | while read type dir file perm ; do
+				if [ "$type" == "file" ]; then
+					echo "$file \\";
+				fi
+			done
 		fi
 	elif [ -d "$1" ]; then
 		dir_filelist "$1"
diff --git a/scripts/mkmakefile b/scripts/mkmakefile
index a22cbed..7f9d544 100644
--- a/scripts/mkmakefile
+++ b/scripts/mkmakefile
@@ -10,7 +10,10 @@ # $3 - version
 # $4 - patchlevel
 
 
-cat << EOF
+test ! -r $2/Makefile -o -O $2/Makefile || exit 0
+echo "  GEN     $2/Makefile"
+
+cat << EOF > $2/Makefile
 # Automatically generated by $0: don't edit
 
 VERSION = $3
diff --git a/scripts/mod/modpost.c b/scripts/mod/modpost.c
index cd00e9f..b36e884 100644
--- a/scripts/mod/modpost.c
+++ b/scripts/mod/modpost.c
@@ -487,14 +487,14 @@ static int strrcmp(const char *s, const 
  *   atsym   =__param*
  *
  * Pattern 2:
- *   Many drivers utilise a *_driver container with references to
+ *   Many drivers utilise a *driver container with references to
  *   add, remove, probe functions etc.
  *   These functions may often be marked __init and we do not want to
  *   warn here.
  *   the pattern is identified by:
  *   tosec   = .init.text | .exit.text | .init.data
  *   fromsec = .data
- *   atsym = *_driver, *_template, *_sht, *_ops, *_probe, *probe_one
+ *   atsym = *driver, *_template, *_sht, *_ops, *_probe, *probe_one
  **/
 static int secref_whitelist(const char *tosec, const char *fromsec,
 			    const char *atsym)
@@ -502,7 +502,7 @@ static int secref_whitelist(const char *
 	int f1 = 1, f2 = 1;
 	const char **s;
 	const char *pat2sym[] = {
-		"_driver",
+		"driver",
 		"_template", /* scsi uses *_template a lot */
 		"_sht",      /* scsi also used *_sht to some extent */
 		"_ops",
@@ -709,10 +709,17 @@ static void check_sec_ref(struct module 
 		for (rela = start; rela < stop; rela++) {
 			Elf_Rela r;
 			const char *secname;
+			unsigned int r_sym;
 			r.r_offset = TO_NATIVE(rela->r_offset);
-			r.r_info   = TO_NATIVE(rela->r_info);
+			if (hdr->e_ident[EI_CLASS] == ELFCLASS64 &&
+			    hdr->e_machine == EM_MIPS) {
+				r_sym = ELF64_MIPS_R_SYM(rela->r_info);
+				r_sym = TO_NATIVE(r_sym);
+			} else {
+				r_sym = ELF_R_SYM(TO_NATIVE(rela->r_info));
+			}
 			r.r_addend = TO_NATIVE(rela->r_addend);
-			sym = elf->symtab_start + ELF_R_SYM(r.r_info);
+			sym = elf->symtab_start + r_sym;
 			/* Skip special sections */
 			if (sym->st_shndx >= SHN_LORESERVE)
 				continue;
diff --git a/scripts/mod/modpost.h b/scripts/mod/modpost.h
index b14255c..89b96c6 100644
--- a/scripts/mod/modpost.h
+++ b/scripts/mod/modpost.h
@@ -39,6 +39,25 @@ #define ELF_R_SYM   ELF64_R_SYM
 #define ELF_R_TYPE  ELF64_R_TYPE
 #endif
 
+/* The 64-bit MIPS ELF ABI uses an unusual reloc format. */
+typedef struct
+{
+  Elf32_Word    r_sym;		/* Symbol index */
+  unsigned char r_ssym;		/* Special symbol for 2nd relocation */
+  unsigned char r_type3;	/* 3rd relocation type */
+  unsigned char r_type2;	/* 2nd relocation type */
+  unsigned char r_type1;	/* 1st relocation type */
+} _Elf64_Mips_R_Info;
+
+typedef union
+{
+  Elf64_Xword	r_info_number;
+  _Elf64_Mips_R_Info r_info_fields;
+} _Elf64_Mips_R_Info_union;
+
+#define ELF64_MIPS_R_SYM(i) \
+  ((__extension__ (_Elf64_Mips_R_Info_union)(i)).r_info_fields.r_sym)
+
 #if KERNEL_ELFDATA != HOST_ELFDATA
 
 static inline void __endian(const void *src, void *dest, unsigned int size)
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

[Index of Archives]     [Kernel Newbies]     [Netfilter]     [Bugtraq]     [Photo]     [Stuff]     [Gimp]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Video 4 Linux]     [Linux for the blind]     [Linux Resources]
  Powered by Linux