summaryrefslogtreecommitdiff
path: root/scripts/mod
diff options
context:
space:
mode:
authorTakashi Iwai <tiwai@suse.de>2012-05-21 12:45:18 +0200
committerTakashi Iwai <tiwai@suse.de>2012-05-21 12:45:18 +0200
commit775b2449bdba7c97dda9f274c92bf7a83dac4142 (patch)
treeb4bee45c13762ea93642b1e38c62de454e51cf5d /scripts/mod
parent21363cf0ca5c9c62e34e37422fb1d13d70d3de3c (diff)
parent5fb86e5d4a951ddb0474cdfd809380c8e2a8d101 (diff)
downloadolio-linux-3.10-775b2449bdba7c97dda9f274c92bf7a83dac4142.tar.xz
olio-linux-3.10-775b2449bdba7c97dda9f274c92bf7a83dac4142.zip
Merge branch 'topic/asoc' into for-linus
Diffstat (limited to 'scripts/mod')
-rw-r--r--scripts/mod/file2alias.c4
-rw-r--r--scripts/mod/modpost.c7
-rw-r--r--scripts/mod/modpost.h1
3 files changed, 10 insertions, 2 deletions
diff --git a/scripts/mod/file2alias.c b/scripts/mod/file2alias.c
index 8e730ccc3f2..44ddaa542db 100644
--- a/scripts/mod/file2alias.c
+++ b/scripts/mod/file2alias.c
@@ -1100,6 +1100,10 @@ void handle_moddevtable(struct module *mod, struct elf_info *info,
if (!sym->st_shndx || get_secindex(info, sym) >= info->num_sections)
return;
+ /* We're looking for an object */
+ if (ELF_ST_TYPE(sym->st_info) != STT_OBJECT)
+ return;
+
/* All our symbols are of form <prefix>__mod_XXX_device_table. */
name = strstr(symname, "__mod_");
if (!name)
diff --git a/scripts/mod/modpost.c b/scripts/mod/modpost.c
index 3f01fd90873..c4e7d1510f9 100644
--- a/scripts/mod/modpost.c
+++ b/scripts/mod/modpost.c
@@ -132,8 +132,10 @@ static struct module *new_module(char *modname)
/* strip trailing .o */
s = strrchr(p, '.');
if (s != NULL)
- if (strcmp(s, ".o") == 0)
+ if (strcmp(s, ".o") == 0) {
*s = '\0';
+ mod->is_dot_o = 1;
+ }
/* add to list */
mod->name = p;
@@ -587,7 +589,8 @@ static void handle_modversions(struct module *mod, struct elf_info *info,
unsigned int crc;
enum export export;
- if (!is_vmlinux(mod->name) && strncmp(symname, "__ksymtab", 9) == 0)
+ if ((!is_vmlinux(mod->name) || mod->is_dot_o) &&
+ strncmp(symname, "__ksymtab", 9) == 0)
export = export_from_secname(info, get_secindex(info, sym));
else
export = export_from_sec(info, get_secindex(info, sym));
diff --git a/scripts/mod/modpost.h b/scripts/mod/modpost.h
index 2031119080d..51207e4d5f8 100644
--- a/scripts/mod/modpost.h
+++ b/scripts/mod/modpost.h
@@ -113,6 +113,7 @@ struct module {
int has_cleanup;
struct buffer dev_table_buf;
char srcversion[25];
+ int is_dot_o;
};
struct elf_info {