Eric Pouech : dbghelp: Elf for wine and spec definitions.
Alexandre Julliard
julliard at wine.codeweavers.com
Thu Jun 22 06:16:57 CDT 2006
Module: wine
Branch: refs/heads/master
Commit: 41ee9853f7954ccdc419ee2fedfd4ccdd5c54e81
URL: http://source.winehq.org/git/?p=wine.git;a=commit;h=41ee9853f7954ccdc419ee2fedfd4ccdd5c54e81
Author: Eric Pouech <eric.pouech at wanadoo.fr>
Date: Wed Jun 21 22:29:50 2006 +0200
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)
---
dlls/dbghelp/elf_module.c | 15 ++++++++++-----
1 files changed, 10 insertions(+), 5 deletions(-)
diff --git a/dlls/dbghelp/elf_module.c b/dlls/dbghelp/elf_module.c
index 508c89c..c1f8296 100644
--- a/dlls/dbghelp/elf_module.c
+++ b/dlls/dbghelp/elf_module.c
@@ -280,7 +280,8 @@ static void elf_hash_symtab(struct modul
/* Ignore certain types of entries which really aren't of that much
* 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_FUNC) ||
symp->st_shndx == SHN_UNDEF)
@@ -549,6 +550,9 @@ static int elf_new_wine_thunks(struct mo
ELF32_ST_BIND(ste->symp->st_info) == STB_LOCAL,
addr, ste->symp->st_size, NULL);
break;
+ case STT_NOTYPE:
+ /* at least winebuild specific symbols */
+ break;
default:
FIXME("Shouldn't happen\n");
break;
@@ -608,10 +612,11 @@ static int elf_new_public_symbols(struct
hash_table_iter_init(symtab, &hti, NULL);
while ((ste = hash_table_iter_up(&hti)))
{
- symt_new_public(module, ste->compiland, ste->ht_elt.name,
- module->elf_info->elf_addr + ste->symp->st_value,
- ste->symp->st_size, TRUE /* FIXME */,
- ELF32_ST_TYPE(ste->symp->st_info) == STT_FUNC);
+ if (ELF32_ST_TYPE(ste->symp->st_info) != STT_NOTYPE)
+ symt_new_public(module, ste->compiland, ste->ht_elt.name,
+ module->elf_info->elf_addr + ste->symp->st_value,
+ ste->symp->st_size, TRUE /* FIXME */,
+ ELF32_ST_TYPE(ste->symp->st_info) == STT_FUNC);
}
return TRUE;
}
More information about the wine-cvs
mailing list