dbghelp: Elf for wine and spec definitions.
- fixed regression when looking for winebuild's special symbols in ELF symtab - STT_NOTYPE is still accepted as a valid symbol type (on top of STT_FUNC and STT_OBJECT)
This commit is contained in:
parent
5e5a8df970
commit
41ee9853f7
|
@ -280,7 +280,8 @@ static void elf_hash_symtab(struct module* module, struct pool* pool,
|
||||||
/* Ignore certain types of entries which really aren't of that much
|
/* Ignore certain types of entries which really aren't of that much
|
||||||
* interest.
|
* interest.
|
||||||
*/
|
*/
|
||||||
if ((ELF32_ST_TYPE(symp->st_info) != STT_FILE &&
|
if ((ELF32_ST_TYPE(symp->st_info) != STT_NOTYPE &&
|
||||||
|
ELF32_ST_TYPE(symp->st_info) != STT_FILE &&
|
||||||
ELF32_ST_TYPE(symp->st_info) != STT_OBJECT &&
|
ELF32_ST_TYPE(symp->st_info) != STT_OBJECT &&
|
||||||
ELF32_ST_TYPE(symp->st_info) != STT_FUNC) ||
|
ELF32_ST_TYPE(symp->st_info) != STT_FUNC) ||
|
||||||
symp->st_shndx == SHN_UNDEF)
|
symp->st_shndx == SHN_UNDEF)
|
||||||
|
@ -549,6 +550,9 @@ static int elf_new_wine_thunks(struct module* module, struct hash_table* ht_symt
|
||||||
ELF32_ST_BIND(ste->symp->st_info) == STB_LOCAL,
|
ELF32_ST_BIND(ste->symp->st_info) == STB_LOCAL,
|
||||||
addr, ste->symp->st_size, NULL);
|
addr, ste->symp->st_size, NULL);
|
||||||
break;
|
break;
|
||||||
|
case STT_NOTYPE:
|
||||||
|
/* at least winebuild specific symbols */
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
FIXME("Shouldn't happen\n");
|
FIXME("Shouldn't happen\n");
|
||||||
break;
|
break;
|
||||||
|
@ -608,10 +612,11 @@ static int elf_new_public_symbols(struct module* module, struct hash_table* symt
|
||||||
hash_table_iter_init(symtab, &hti, NULL);
|
hash_table_iter_init(symtab, &hti, NULL);
|
||||||
while ((ste = hash_table_iter_up(&hti)))
|
while ((ste = hash_table_iter_up(&hti)))
|
||||||
{
|
{
|
||||||
symt_new_public(module, ste->compiland, ste->ht_elt.name,
|
if (ELF32_ST_TYPE(ste->symp->st_info) != STT_NOTYPE)
|
||||||
module->elf_info->elf_addr + ste->symp->st_value,
|
symt_new_public(module, ste->compiland, ste->ht_elt.name,
|
||||||
ste->symp->st_size, TRUE /* FIXME */,
|
module->elf_info->elf_addr + ste->symp->st_value,
|
||||||
ELF32_ST_TYPE(ste->symp->st_info) == STT_FUNC);
|
ste->symp->st_size, TRUE /* FIXME */,
|
||||||
|
ELF32_ST_TYPE(ste->symp->st_info) == STT_FUNC);
|
||||||
}
|
}
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue