genksyms: Handle string literals with spaces in reference files

commit a78f70e8d65e88b9f631d073f68cb26dcd746298 upstream.

The reference files use spaces to separate tokens, however, we must
preserve spaces inside string literals. Currently the only case in the
tree is struct edac_raw_error_desc in <linux/edac.h>:

$ KBUILD_SYMTYPES=1 make -s drivers/edac/amd64_edac.symtypes
$ mv drivers/edac/amd64_edac.{symtypes,symref}
$ KBUILD_SYMTYPES=1 make -s drivers/edac/amd64_edac.symtypes
drivers/edac/amd64_edac.c:527: warning: amd64_get_dram_hole_info: modversion changed because of changes in struct edac_raw_error_desc

Signed-off-by: Michal Marek <mmarek@suse.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
Michal Marek 2015-12-09 15:08:21 +01:00 committed by Greg Kroah-Hartman
parent a4c1c75373
commit 104fd57d39

View File

@ -423,13 +423,15 @@ static struct string_list *read_node(FILE *f)
struct string_list node = {
.string = buffer,
.tag = SYM_NORMAL };
int c;
int c, in_string = 0;
while ((c = fgetc(f)) != EOF) {
if (c == ' ') {
if (!in_string && c == ' ') {
if (node.string == buffer)
continue;
break;
} else if (c == '"') {
in_string = !in_string;
} else if (c == '\n') {
if (node.string == buffer)
return NULL;