summaryrefslogtreecommitdiffstats
path: root/arch/sh/kernel/module.c
diff options
context:
space:
mode:
Diffstat (limited to 'arch/sh/kernel/module.c')
-rw-r--r--arch/sh/kernel/module.c35
1 files changed, 5 insertions, 30 deletions
diff --git a/arch/sh/kernel/module.c b/arch/sh/kernel/module.c
index d297a148d16..43adddfe4c0 100644
--- a/arch/sh/kernel/module.c
+++ b/arch/sh/kernel/module.c
@@ -146,41 +146,16 @@ int module_finalize(const Elf_Ehdr *hdr,
const Elf_Shdr *sechdrs,
struct module *me)
{
-#ifdef CONFIG_DWARF_UNWINDER
- unsigned int i, err;
- unsigned long start, end;
- char *secstrings = (void *)hdr + sechdrs[hdr->e_shstrndx].sh_offset;
-
- start = end = 0;
-
- for (i = 1; i < hdr->e_shnum; i++) {
- /* Alloc bit cleared means "ignore it." */
- if ((sechdrs[i].sh_flags & SHF_ALLOC)
- && !strcmp(secstrings+sechdrs[i].sh_name, ".eh_frame")) {
- start = sechdrs[i].sh_addr;
- end = start + sechdrs[i].sh_size;
- break;
- }
- }
+ int ret = 0;
- /* Did we find the .eh_frame section? */
- if (i != hdr->e_shnum) {
- err = dwarf_parse_section((char *)start, (char *)end, me);
- if (err)
- printk(KERN_WARNING "%s: failed to parse DWARF info\n",
- me->name);
- }
-
-#endif /* CONFIG_DWARF_UNWINDER */
+ ret |= module_dwarf_finalize(hdr, sechdrs, me);
+ ret |= module_bug_finalize(hdr, sechdrs, me);
- return module_bug_finalize(hdr, sechdrs, me);
+ return ret;
}
void module_arch_cleanup(struct module *mod)
{
module_bug_cleanup(mod);
-
-#ifdef CONFIG_DWARF_UNWINDER
- dwarf_module_unload(mod);
-#endif /* CONFIG_DWARF_UNWINDER */
+ module_dwarf_cleanup(mod);
}