diff options
author | Andrey Zhizhikin <andrey.zhizhikin@leica-geosystems.com> | 2021-06-30 14:51:20 +0000 |
---|---|---|
committer | Andrey Zhizhikin <andrey.zhizhikin@leica-geosystems.com> | 2021-06-30 14:51:20 +0000 |
commit | 3aef3ef268648cbd4e39ddfe5c3dd8d2f22a88d2 (patch) | |
tree | cbf9c4f25ba723d2adcf6fa8b72e11bc6ad0ab5d /scripts | |
parent | 02375daa33ca0e4766b0e69e0736fa1310683cd1 (diff) | |
parent | 82ffbc138a1fc9076f55e626bd8352fc9a2ca9e9 (diff) |
Merge tag 'v5.4.129' into 5.4-2.3.x-imx
Linux 5.4.129
Signed-off-by: Andrey Zhizhikin <andrey.zhizhikin@leica-geosystems.com>
Diffstat (limited to 'scripts')
-rw-r--r-- | scripts/recordmcount.h | 15 |
1 files changed, 10 insertions, 5 deletions
diff --git a/scripts/recordmcount.h b/scripts/recordmcount.h index f9b19524da11..1e9baa5c4fc6 100644 --- a/scripts/recordmcount.h +++ b/scripts/recordmcount.h @@ -192,15 +192,20 @@ static unsigned int get_symindex(Elf_Sym const *sym, Elf32_Word const *symtab, Elf32_Word const *symtab_shndx) { unsigned long offset; + unsigned short shndx = w2(sym->st_shndx); int index; - if (sym->st_shndx != SHN_XINDEX) - return w2(sym->st_shndx); + if (shndx > SHN_UNDEF && shndx < SHN_LORESERVE) + return shndx; - offset = (unsigned long)sym - (unsigned long)symtab; - index = offset / sizeof(*sym); + if (shndx == SHN_XINDEX) { + offset = (unsigned long)sym - (unsigned long)symtab; + index = offset / sizeof(*sym); - return w(symtab_shndx[index]); + return w(symtab_shndx[index]); + } + + return 0; } static unsigned int get_shnum(Elf_Ehdr const *ehdr, Elf_Shdr const *shdr0) |