aboutsummaryrefslogtreecommitdiffstats
path: root/scripts/mod/file2alias.c
diff options
context:
space:
mode:
authorDenys Vlasenko <vda.linux@googlemail.com>2010-07-28 19:47:53 -0400
committerMichal Marek <mmarek@suse.cz>2010-08-03 09:05:56 -0400
commit1ce53adf13a54375d2a5c7cdbe341b2558389615 (patch)
treeebd9f596daa9cdbf3eca2f964e2f58946d4b4d16 /scripts/mod/file2alias.c
parent4696e2958b345189afebcb52e365d16ca6e403ef (diff)
modpost: support objects with more than 64k sections
This patch makes modpost able to process object files with more than 64k sections. Needed for huge kernel builds (allyesconfig, for example) with -ffunction-sections. 64k sections handling is covered, for example, by this document: "IA-64 gABI Proposal 74: Section Indexes" http://www.codesourcery.com/public/cxx-abi/abi/prop-74-sindex.html Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com> Signed-off-by: Anders Kaseorg <andersk@mit.edu> Acked-by: Sam Ravnborg <sam@ravnborg.org> Cc: Rusty Russell <rusty@rustcorp.com.au> Cc: Andi Kleen <andi@firstfloor.org> Signed-off-by: Michal Marek <mmarek@suse.cz>
Diffstat (limited to 'scripts/mod/file2alias.c')
-rw-r--r--scripts/mod/file2alias.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/scripts/mod/file2alias.c b/scripts/mod/file2alias.c
index 220213e603db..33f436328f9a 100644
--- a/scripts/mod/file2alias.c
+++ b/scripts/mod/file2alias.c
@@ -839,16 +839,16 @@ void handle_moddevtable(struct module *mod, struct elf_info *info,
839 char *zeros = NULL; 839 char *zeros = NULL;
840 840
841 /* We're looking for a section relative symbol */ 841 /* We're looking for a section relative symbol */
842 if (!sym->st_shndx || sym->st_shndx >= info->hdr->e_shnum) 842 if (!sym->st_shndx || get_secindex(info, sym) >= info->num_sections)
843 return; 843 return;
844 844
845 /* Handle all-NULL symbols allocated into .bss */ 845 /* Handle all-NULL symbols allocated into .bss */
846 if (info->sechdrs[sym->st_shndx].sh_type & SHT_NOBITS) { 846 if (info->sechdrs[get_secindex(info, sym)].sh_type & SHT_NOBITS) {
847 zeros = calloc(1, sym->st_size); 847 zeros = calloc(1, sym->st_size);
848 symval = zeros; 848 symval = zeros;
849 } else { 849 } else {
850 symval = (void *)info->hdr 850 symval = (void *)info->hdr
851 + info->sechdrs[sym->st_shndx].sh_offset 851 + info->sechdrs[get_secindex(info, sym)].sh_offset
852 + sym->st_value; 852 + sym->st_value;
853 } 853 }
854 854