summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--board/ipe337/u-boot.lds.S6
-rw-r--r--board/phycore_mpc5200b_tiny/u-boot.lds.S6
-rw-r--r--board/scb9328/u-boot.lds.S6
-rw-r--r--common/module.c8
-rw-r--r--include/asm-generic/u-boot.lds.h2
-rw-r--r--include/module.h10
-rw-r--r--scripts/mod/modpost.c55
7 files changed, 53 insertions, 40 deletions
diff --git a/board/ipe337/u-boot.lds.S b/board/ipe337/u-boot.lds.S
index ea212f17e2..09240edbe3 100644
--- a/board/ipe337/u-boot.lds.S
+++ b/board/ipe337/u-boot.lds.S
@@ -75,9 +75,9 @@ SECTIONS
.u_boot_initcalls : { INITCALLS }
___u_boot_initcalls_end = .;
- ___u_boot_symtab_start = .;
- .u_boot_symtab : { U_BOOT_SYMS }
- ___u_boot_symtab_end = .;
+ ___usymtab_start = .;
+ __usymtab : { U_BOOT_SYMS }
+ ___usymtab_end = .;
. = ALIGN(4);
__bss_start = .;
diff --git a/board/phycore_mpc5200b_tiny/u-boot.lds.S b/board/phycore_mpc5200b_tiny/u-boot.lds.S
index 8bc0904dfe..1d7ce706d2 100644
--- a/board/phycore_mpc5200b_tiny/u-boot.lds.S
+++ b/board/phycore_mpc5200b_tiny/u-boot.lds.S
@@ -107,9 +107,9 @@ SECTIONS
__u_boot_initcalls_end = .;
__initcall_entries = (__u_boot_initcalls_end - __u_boot_initcalls_start) >> 2;
- __u_boot_symtab_start = .;
- .u_boot_symtab : { U_BOOT_SYMS }
- __u_boot_symtab_end = .;
+ __usymtab_start = .;
+ __usymtab : { U_BOOT_SYMS }
+ __usymtab_end = .;
__early_init_data_begin = .;
.early_init_data : { *(.early_init_data) }
diff --git a/board/scb9328/u-boot.lds.S b/board/scb9328/u-boot.lds.S
index 92349b84eb..e1f6dd3f90 100644
--- a/board/scb9328/u-boot.lds.S
+++ b/board/scb9328/u-boot.lds.S
@@ -60,9 +60,9 @@ SECTIONS
.u_boot_initcalls : { INITCALLS }
__u_boot_initcalls_end = .;
- __u_boot_symtab_start = .;
- .u_boot_symtab : { U_BOOT_SYMS }
- __u_boot_symtab_end = .;
+ __usymtab_start = .;
+ __usymtab : { U_BOOT_SYMS }
+ __usymtab_end = .;
. = ALIGN(4);
__bss_start = .;
diff --git a/common/module.c b/common/module.c
index 4cdf7ede5a..fee47225b0 100644
--- a/common/module.c
+++ b/common/module.c
@@ -45,8 +45,8 @@ static unsigned int find_sec(Elf_Ehdr *hdr,
}
/* Provided by the linker */
-extern const struct kernel_symbol __u_boot_symtab_start[];
-extern const struct kernel_symbol __u_boot_symtab_end[];
+extern const struct kernel_symbol __usymtab_start[];
+extern const struct kernel_symbol __usymtab_end[];
/* lookup symbol in given range of kernel_symbols */
static const struct kernel_symbol *lookup_symbol(const char *name,
@@ -67,8 +67,8 @@ static unsigned long resolve_symbol(Elf32_Shdr *sechdrs,
const struct kernel_symbol *ks;
debug("%s: %s\n", __FUNCTION__, name);
- ks = lookup_symbol(name, __u_boot_symtab_start,
- __u_boot_symtab_end);
+ ks = lookup_symbol(name, __usymtab_start,
+ __usymtab_end);
if (ks)
return ks->value;
diff --git a/include/asm-generic/u-boot.lds.h b/include/asm-generic/u-boot.lds.h
index f01fc84cd3..e24181a5c9 100644
--- a/include/asm-generic/u-boot.lds.h
+++ b/include/asm-generic/u-boot.lds.h
@@ -11,4 +11,4 @@
#define U_BOOT_CMDS *(SORT_BY_NAME(.u_boot_cmd*))
-#define U_BOOT_SYMS *(__u_boot_symtab)
+#define U_BOOT_SYMS *(__usymtab)
diff --git a/include/module.h b/include/module.h
index ba15ccd4ad..f24b983836 100644
--- a/include/module.h
+++ b/include/module.h
@@ -19,13 +19,13 @@ struct kernel_symbol
/* For every exported symbol, place a struct in the __ksymtab section */
#define __EXPORT_SYMBOL(sym, sec) \
extern typeof(sym) sym; \
- static const char __u_boot_strtab_##sym[] \
- __attribute__((section("__u_boot_symtab_strings"))) \
+ static const char __ustrtab_##sym[] \
+ __attribute__((section("__usymtab_strings"))) \
= MODULE_SYMBOL_PREFIX #sym; \
- static const struct kernel_symbol __u_boot_symtab_##sym \
+ static const struct kernel_symbol __usymtab_##sym \
__used \
- __attribute__((section("__u_boot_symtab" sec), unused)) \
- = { (unsigned long)&sym, __u_boot_strtab_##sym }
+ __attribute__((section("__usymtab" sec), unused)) \
+ = { (unsigned long)&sym, __ustrtab_##sym }
#define EXPORT_SYMBOL(sym) \
__EXPORT_SYMBOL(sym, "")
diff --git a/scripts/mod/modpost.c b/scripts/mod/modpost.c
index 3961735e44..dad6a96ab5 100644
--- a/scripts/mod/modpost.c
+++ b/scripts/mod/modpost.c
@@ -13,7 +13,23 @@
#include <ctype.h>
#include "modpost.h"
-//#include "../../include/license.h"
+
+#if 0
+/* Once we decide to actually make use of the license it should
+ * go back to the include file.
+ */
+#include "../../include/license.h"
+#else
+static inline int license_is_gpl_compatible(const char *license)
+{
+ return (strcmp(license, "GPL") == 0
+ || strcmp(license, "GPL v2") == 0
+ || strcmp(license, "GPL and additional rights") == 0
+ || strcmp(license, "Dual BSD/GPL") == 0
+ || strcmp(license, "Dual MIT/GPL") == 0
+ || strcmp(license, "Dual MPL/GPL") == 0);
+}
+#endif
/* Are we using CONFIG_MODVERSIONS? */
int modversions = 0;
@@ -75,8 +91,8 @@ static int is_vmlinux(const char *modname)
else
myname = modname;
- return (strcmp(myname, "vmlinux") == 0) ||
- (strcmp(myname, "vmlinux.o") == 0);
+ return (strcmp(myname, "uboot") == 0) ||
+ (strcmp(myname, "uboot.o") == 0);
}
void *do_nofail(void *ptr, const char *expr)
@@ -232,7 +248,7 @@ static enum export export_no(const char * s)
}
return export_unknown;
}
-#if 0
+
static enum export export_from_sec(struct elf_info *elf, Elf_Section sec)
{
if (sec == elf->export_sec)
@@ -248,7 +264,7 @@ static enum export export_from_sec(struct elf_info *elf, Elf_Section sec)
else
return export_unknown;
}
-#endif
+
/**
* Add an exported symbol - it may have already been added without a
* CRC, in this case just update the CRC
@@ -403,15 +419,15 @@ static int parse_elf(struct elf_info *info, const char *filename)
if (strcmp(secname, ".modinfo") == 0) {
info->modinfo = (void *)hdr + sechdrs[i].sh_offset;
info->modinfo_len = sechdrs[i].sh_size;
- } else if (strcmp(secname, "__ksymtab") == 0)
+ } else if (strcmp(secname, "__usymtab") == 0)
info->export_sec = i;
- else if (strcmp(secname, "__ksymtab_unused") == 0)
+ else if (strcmp(secname, "__usymtab_unused") == 0)
info->export_unused_sec = i;
- else if (strcmp(secname, "__ksymtab_gpl") == 0)
+ else if (strcmp(secname, "__usymtab_gpl") == 0)
info->export_gpl_sec = i;
- else if (strcmp(secname, "__ksymtab_unused_gpl") == 0)
+ else if (strcmp(secname, "__usymtab_unused_gpl") == 0)
info->export_unused_gpl_sec = i;
- else if (strcmp(secname, "__ksymtab_gpl_future") == 0)
+ else if (strcmp(secname, "__usymtab_gpl_future") == 0)
info->export_gpl_future_sec = i;
if (sechdrs[i].sh_type != SHT_SYMTAB)
@@ -442,8 +458,8 @@ static void parse_elf_finish(struct elf_info *info)
}
#define CRC_PFX MODULE_SYMBOL_PREFIX "__crc_"
-#define KSYMTAB_PFX MODULE_SYMBOL_PREFIX "__ksymtab_"
-#if 0
+#define KSYMTAB_PFX MODULE_SYMBOL_PREFIX "__usymtab_"
+
static void handle_modversions(struct module *mod, struct elf_info *info,
Elf_Sym *sym, const char *symname)
{
@@ -513,7 +529,6 @@ static void handle_modversions(struct module *mod, struct elf_info *info,
break;
}
}
-#endif
/**
* Parse tag=value strings from .modinfo section
@@ -1221,12 +1236,12 @@ static int exit_section_ref_ok(const char *name)
static void read_symbols(char *modname)
{
-// const char *symname;
+ const char *symname;
char *version;
-// char *license;
+ char *license;
struct module *mod;
struct elf_info info = { };
-// Elf_Sym *sym;
+ Elf_Sym *sym;
if (!parse_elf(&info, modname))
return;
@@ -1239,7 +1254,7 @@ static void read_symbols(char *modname)
have_vmlinux = 1;
mod->skip = 1;
}
-#if 0
+
license = get_modinfo(info.modinfo, info.modinfo_len, "license");
while (license) {
if (license_is_gpl_compatible(license))
@@ -1251,15 +1266,13 @@ static void read_symbols(char *modname)
license = get_next_modinfo(info.modinfo, info.modinfo_len,
"license", license);
}
-#endif
-#if 0
for (sym = info.symtab_start; sym < info.symtab_stop; sym++) {
symname = info.strtab + sym->st_name;
handle_modversions(mod, &info, sym, symname);
- handle_moddevtable(mod, &info, sym, symname);
+// handle_moddevtable(mod, &info, sym, symname);
}
-#endif
+
check_sec_ref(mod, modname, &info, init_section, init_section_ref_ok);
check_sec_ref(mod, modname, &info, exit_section, exit_section_ref_ok);