aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Makefile20
-rw-r--r--drivers/video/logo/Makefile2
-rw-r--r--scripts/gen_initramfs_list.sh6
-rw-r--r--scripts/mkmakefile5
-rw-r--r--scripts/mod/modpost.c17
-rw-r--r--scripts/mod/modpost.h19
6 files changed, 50 insertions, 19 deletions
diff --git a/Makefile b/Makefile
index 6bf99624bd4c..9e4c5692a32f 100644
--- a/Makefile
+++ b/Makefile
@@ -344,16 +344,14 @@ scripts_basic:
344scripts/basic/%: scripts_basic ; 344scripts/basic/%: scripts_basic ;
345 345
346PHONY += outputmakefile 346PHONY += outputmakefile
347# outputmakefile generate a Makefile to be placed in output directory, if 347# outputmakefile generates a Makefile in the output directory, if using a
348# using a seperate output directory. This allows convinient use 348# separate output directory. This allows convenient use of make in the
349# of make in output directory 349# output directory.
350outputmakefile: 350outputmakefile:
351 $(Q)if test ! $(srctree) -ef $(objtree); then \ 351ifneq ($(KBUILD_SRC),)
352 $(CONFIG_SHELL) $(srctree)/scripts/mkmakefile \ 352 $(Q)$(CONFIG_SHELL) $(srctree)/scripts/mkmakefile \
353 $(srctree) $(objtree) $(VERSION) $(PATCHLEVEL) \ 353 $(srctree) $(objtree) $(VERSION) $(PATCHLEVEL)
354 > $(objtree)/Makefile; \ 354endif
355 echo ' GEN $(objtree)/Makefile'; \
356 fi
357 355
358# To make sure we do not include .config for any of the *config targets 356# To make sure we do not include .config for any of the *config targets
359# catch them early, and hand them over to scripts/kconfig/Makefile 357# catch them early, and hand them over to scripts/kconfig/Makefile
@@ -796,8 +794,8 @@ prepare2: prepare3 outputmakefile
796prepare1: prepare2 include/linux/version.h include/asm \ 794prepare1: prepare2 include/linux/version.h include/asm \
797 include/config/MARKER 795 include/config/MARKER
798ifneq ($(KBUILD_MODULES),) 796ifneq ($(KBUILD_MODULES),)
799 $(Q)rm -rf $(MODVERDIR)
800 $(Q)mkdir -p $(MODVERDIR) 797 $(Q)mkdir -p $(MODVERDIR)
798 $(Q)rm -f $(MODVERDIR)/*
801endif 799endif
802 800
803archprepare: prepare1 scripts_basic 801archprepare: prepare1 scripts_basic
@@ -1086,8 +1084,8 @@ else # KBUILD_EXTMOD
1086KBUILD_MODULES := 1 1084KBUILD_MODULES := 1
1087PHONY += crmodverdir 1085PHONY += crmodverdir
1088crmodverdir: 1086crmodverdir:
1089 $(Q)rm -rf $(MODVERDIR)
1090 $(Q)mkdir -p $(MODVERDIR) 1087 $(Q)mkdir -p $(MODVERDIR)
1088 $(Q)rm -f $(MODVERDIR)/*
1091 1089
1092PHONY += $(objtree)/Module.symvers 1090PHONY += $(objtree)/Module.symvers
1093$(objtree)/Module.symvers: 1091$(objtree)/Module.symvers:
diff --git a/drivers/video/logo/Makefile b/drivers/video/logo/Makefile
index 4ef5cd19609d..b985dfad6c63 100644
--- a/drivers/video/logo/Makefile
+++ b/drivers/video/logo/Makefile
@@ -34,7 +34,7 @@ extra-y += $(call logo-cfiles,_clut224,ppm)
34extra-y += $(call logo-cfiles,_gray256,pgm) 34extra-y += $(call logo-cfiles,_gray256,pgm)
35 35
36# Create commands like "pnmtologo -t mono -n logo_mac_mono -o ..." 36# Create commands like "pnmtologo -t mono -n logo_mac_mono -o ..."
37quiet_cmd_logo = LOGO $@ 37quiet_cmd_logo = LOGO $@
38 cmd_logo = scripts/pnmtologo \ 38 cmd_logo = scripts/pnmtologo \
39 -t $(patsubst $*_%,%,$(notdir $(basename $<))) \ 39 -t $(patsubst $*_%,%,$(notdir $(basename $<))) \
40 -n $(notdir $(basename $<)) -o $@ $< 40 -n $(notdir $(basename $<)) -o $@ $<
diff --git a/scripts/gen_initramfs_list.sh b/scripts/gen_initramfs_list.sh
index 56b3bed1108f..331c079f029b 100644
--- a/scripts/gen_initramfs_list.sh
+++ b/scripts/gen_initramfs_list.sh
@@ -200,7 +200,11 @@ input_file() {
200 print_mtime "$1" >> ${output} 200 print_mtime "$1" >> ${output}
201 cat "$1" >> ${output} 201 cat "$1" >> ${output}
202 else 202 else
203 grep ^file "$1" | cut -d ' ' -f 3 203 cat "$1" | while read type dir file perm ; do
204 if [ "$type" == "file" ]; then
205 echo "$file \\";
206 fi
207 done
204 fi 208 fi
205 elif [ -d "$1" ]; then 209 elif [ -d "$1" ]; then
206 dir_filelist "$1" 210 dir_filelist "$1"
diff --git a/scripts/mkmakefile b/scripts/mkmakefile
index a22cbedd3b3e..7f9d544f9b6c 100644
--- a/scripts/mkmakefile
+++ b/scripts/mkmakefile
@@ -10,7 +10,10 @@
10# $4 - patchlevel 10# $4 - patchlevel
11 11
12 12
13cat << EOF 13test ! -r $2/Makefile -o -O $2/Makefile || exit 0
14echo " GEN $2/Makefile"
15
16cat << EOF > $2/Makefile
14# Automatically generated by $0: don't edit 17# Automatically generated by $0: don't edit
15 18
16VERSION = $3 19VERSION = $3
diff --git a/scripts/mod/modpost.c b/scripts/mod/modpost.c
index cd00e9f07589..b36e884f5f96 100644
--- a/scripts/mod/modpost.c
+++ b/scripts/mod/modpost.c
@@ -487,14 +487,14 @@ static int strrcmp(const char *s, const char *sub)
487 * atsym =__param* 487 * atsym =__param*
488 * 488 *
489 * Pattern 2: 489 * Pattern 2:
490 * Many drivers utilise a *_driver container with references to 490 * Many drivers utilise a *driver container with references to
491 * add, remove, probe functions etc. 491 * add, remove, probe functions etc.
492 * These functions may often be marked __init and we do not want to 492 * These functions may often be marked __init and we do not want to
493 * warn here. 493 * warn here.
494 * the pattern is identified by: 494 * the pattern is identified by:
495 * tosec = .init.text | .exit.text | .init.data 495 * tosec = .init.text | .exit.text | .init.data
496 * fromsec = .data 496 * fromsec = .data
497 * atsym = *_driver, *_template, *_sht, *_ops, *_probe, *probe_one 497 * atsym = *driver, *_template, *_sht, *_ops, *_probe, *probe_one
498 **/ 498 **/
499static int secref_whitelist(const char *tosec, const char *fromsec, 499static int secref_whitelist(const char *tosec, const char *fromsec,
500 const char *atsym) 500 const char *atsym)
@@ -502,7 +502,7 @@ static int secref_whitelist(const char *tosec, const char *fromsec,
502 int f1 = 1, f2 = 1; 502 int f1 = 1, f2 = 1;
503 const char **s; 503 const char **s;
504 const char *pat2sym[] = { 504 const char *pat2sym[] = {
505 "_driver", 505 "driver",
506 "_template", /* scsi uses *_template a lot */ 506 "_template", /* scsi uses *_template a lot */
507 "_sht", /* scsi also used *_sht to some extent */ 507 "_sht", /* scsi also used *_sht to some extent */
508 "_ops", 508 "_ops",
@@ -709,10 +709,17 @@ static void check_sec_ref(struct module *mod, const char *modname,
709 for (rela = start; rela < stop; rela++) { 709 for (rela = start; rela < stop; rela++) {
710 Elf_Rela r; 710 Elf_Rela r;
711 const char *secname; 711 const char *secname;
712 unsigned int r_sym;
712 r.r_offset = TO_NATIVE(rela->r_offset); 713 r.r_offset = TO_NATIVE(rela->r_offset);
713 r.r_info = TO_NATIVE(rela->r_info); 714 if (hdr->e_ident[EI_CLASS] == ELFCLASS64 &&
715 hdr->e_machine == EM_MIPS) {
716 r_sym = ELF64_MIPS_R_SYM(rela->r_info);
717 r_sym = TO_NATIVE(r_sym);
718 } else {
719 r_sym = ELF_R_SYM(TO_NATIVE(rela->r_info));
720 }
714 r.r_addend = TO_NATIVE(rela->r_addend); 721 r.r_addend = TO_NATIVE(rela->r_addend);
715 sym = elf->symtab_start + ELF_R_SYM(r.r_info); 722 sym = elf->symtab_start + r_sym;
716 /* Skip special sections */ 723 /* Skip special sections */
717 if (sym->st_shndx >= SHN_LORESERVE) 724 if (sym->st_shndx >= SHN_LORESERVE)
718 continue; 725 continue;
diff --git a/scripts/mod/modpost.h b/scripts/mod/modpost.h
index b14255c72a37..89b96c6d8ef5 100644
--- a/scripts/mod/modpost.h
+++ b/scripts/mod/modpost.h
@@ -39,6 +39,25 @@
39#define ELF_R_TYPE ELF64_R_TYPE 39#define ELF_R_TYPE ELF64_R_TYPE
40#endif 40#endif
41 41
42/* The 64-bit MIPS ELF ABI uses an unusual reloc format. */
43typedef struct
44{
45 Elf32_Word r_sym; /* Symbol index */
46 unsigned char r_ssym; /* Special symbol for 2nd relocation */
47 unsigned char r_type3; /* 3rd relocation type */
48 unsigned char r_type2; /* 2nd relocation type */
49 unsigned char r_type1; /* 1st relocation type */
50} _Elf64_Mips_R_Info;
51
52typedef union
53{
54 Elf64_Xword r_info_number;
55 _Elf64_Mips_R_Info r_info_fields;
56} _Elf64_Mips_R_Info_union;
57
58#define ELF64_MIPS_R_SYM(i) \
59 ((__extension__ (_Elf64_Mips_R_Info_union)(i)).r_info_fields.r_sym)
60
42#if KERNEL_ELFDATA != HOST_ELFDATA 61#if KERNEL_ELFDATA != HOST_ELFDATA
43 62
44static inline void __endian(const void *src, void *dest, unsigned int size) 63static inline void __endian(const void *src, void *dest, unsigned int size)