diff options
| author | Linus Torvalds <torvalds@woody.linux-foundation.org> | 2008-02-09 11:14:20 -0800 | 
|---|---|---|
| committer | Linus Torvalds <torvalds@woody.linux-foundation.org> | 2008-02-09 11:14:20 -0800 | 
| commit | 451688ba0b488faf274e13dc591734b1e695642c (patch) | |
| tree | 7d746efef856c1897697c30e2486317e823e727d /scripts/mod/modpost.c | |
| parent | acac103e2d00c9bc7507838319c71a0f5dc50678 (diff) | |
| parent | ed2c9fa53b7a3e240a64e6e97494d72d0f80eed0 (diff) | |
Merge git://git.kernel.org/pub/scm/linux/kernel/git/sam/kbuild
* git://git.kernel.org/pub/scm/linux/kernel/git/sam/kbuild:
  Kbuild: Fix deb-pkg target to work with kernel versions ending with -<text-without-digit>
  ide: introduce HAVE_IDE
  kbuild: silence CHK/UPD messages according to $(quiet)
  scsi: fix makefile for aic7(3*x)
  kbuild/modpost: Use warn() for announcing section mismatches
  Add binoffset to gitignore
  kbuild/modpost: improve warnings if symbol is unknown
Diffstat (limited to 'scripts/mod/modpost.c')
| -rw-r--r-- | scripts/mod/modpost.c | 37 | 
1 files changed, 22 insertions, 15 deletions
diff --git a/scripts/mod/modpost.c b/scripts/mod/modpost.c index 5d546466e6b..dbe1fb5e8cc 100644 --- a/scripts/mod/modpost.c +++ b/scripts/mod/modpost.c @@ -613,7 +613,7 @@ static const char *sym_name(struct elf_info *elf, Elf_Sym *sym)  	if (sym)  		return elf->strtab + sym->st_name;  	else -		return ""; +		return "(unknown)";  }  static const char *sec_name(struct elf_info *elf, int shndx) @@ -1102,7 +1102,7 @@ static int is_function(Elf_Sym *sym)  	if (sym)  		return ELF_ST_TYPE(sym->st_info) == STT_FUNC;  	else -		return 0; +		return -1;  }  /* @@ -1120,24 +1120,31 @@ static void report_sec_mismatch(const char *modname, enum mismatch mismatch,  {  	const char *from, *from_p;  	const char *to, *to_p; -	from = from_is_func ? "function" : "variable"; -	from_p = from_is_func ? "()" : ""; -	to = to_is_func ? "function" : "variable"; -	to_p = to_is_func ? "()" : ""; + +	switch (from_is_func) { +	case 0: from = "variable"; from_p = "";   break; +	case 1: from = "function"; from_p = "()"; break; +	default: from = "(unknown reference)"; from_p = ""; break; +	} +	switch (to_is_func) { +	case 0: to = "variable"; to_p = "";   break; +	case 1: to = "function"; to_p = "()"; break; +	default: to = "(unknown reference)"; to_p = ""; break; +	}  	sec_mismatch_count++;  	if (!sec_mismatch_verbose)  		return; -	fprintf(stderr, "WARNING: %s(%s+0x%llx): Section mismatch in" -	                " reference from the %s %s%s to the %s %s:%s%s\n", -                        modname, fromsec, fromaddr, from, fromsym, from_p, -	                to, tosec, tosym, to_p); +	warn("%s(%s+0x%llx): Section mismatch in reference from the %s %s%s " +	     "to the %s %s:%s%s\n", +	     modname, fromsec, fromaddr, from, fromsym, from_p, to, tosec, +	     tosym, to_p);  	switch (mismatch) {  	case TEXT_TO_INIT:  		fprintf(stderr, -		"The function %s %s() references\n" +		"The function %s%s() references\n"  		"the %s %s%s%s.\n"  		"This is often because %s lacks a %s\n"  		"annotation or the annotation of %s is wrong.\n", @@ -1938,10 +1945,10 @@ int main(int argc, char **argv)  	if (dump_write)  		write_dump(dump_write);  	if (sec_mismatch_count && !sec_mismatch_verbose) -		fprintf(stderr, "modpost: Found %d section mismatch(es).\n" -		        "To see full details build your kernel with:\n" -		        "'make CONFIG_DEBUG_SECTION_MISMATCH=y'\n", -		        sec_mismatch_count); +		warn("modpost: Found %d section mismatch(es).\n" +		     "To see full details build your kernel with:\n" +		     "'make CONFIG_DEBUG_SECTION_MISMATCH=y'\n", +		     sec_mismatch_count);  	return err;  }  | 
