>From 08ac972dbf68b29f036355706e5332d97c06630a Mon Sep 17 00:00:00 2001
From: Gilles Espinasse <g.esp@free.fr>
Date: Sun, 7 Nov 2010 21:27:27 +0100
Subject: [PATCH] Report again unresolved symbol with -u option

This change depmod to report an error only when -u is used and an unresolved symbol is found

Signed-off-by: Gilles Espinasse <g.esp@free.fr>
---
 depmod.c |   13 +++++++++++--
 1 files changed, 11 insertions(+), 2 deletions(-)

diff --git a/depmod.c b/depmod.c
index 647e5e6..c1ee26b 100644
--- a/depmod.c
+++ b/depmod.c
@@ -103,7 +103,7 @@ void add_symbol(const char *name, uint64_t ver, struct module *owner)
 	symbolhash[hash] = new;
 }
 
-static int print_unknown, check_symvers;
+static int print_unknown, check_symvers, unresolved_fatal, unresolved_error = 0;
 
 struct module *find_symbol(const char *name, uint64_t ver,
 		const char *modname, int weak)
@@ -128,6 +128,9 @@ struct module *find_symbol(const char *name, uint64_t ver,
 	if (print_unknown && !weak)
 		warn("%s needs unknown symbol %s\n", modname, name);
 
+	if (unresolved_fatal && !weak)
+		unresolved_error=1;
+
 	return NULL;
 }
 
@@ -275,6 +278,7 @@ static void print_usage(const char *name)
 	"\t-e, --errsyms        Report not supplied symbols\n"
 	"\t-m, --map            Create the legacy map files\n"
 	"\t-n, --show           Write the dependency file on stdout only\n"
+	"\t-u, --unresolved-error Report an error if an unresolved symbol is found\n"
 	"\t-V, --version        Print the release version\n"
 	"\t-v, --verbose        Enable verbose mode\n"
 	"\t-w, --warn		Warn on duplicates\n"
@@ -1378,6 +1382,8 @@ int main(int argc, char *argv[])
 			print_unknown = 1;
 			break;
 		case 'u':
+			unresolved_fatal = 1;
+			break;
 		case 'q':
 		case 'r':
 			break;
@@ -1522,5 +1528,8 @@ int main(int argc, char *argv[])
 	free(dirname);
 	free(version);
 	
-	return 0;
+	if (verbose && unresolved_fatal && unresolved_error)
+		fatal("Unresolved symbol found, handled as error\n");
+
+	return unresolved_error;
 }
-- 
1.6.4.4

