Module: wine Branch: master Commit: 8b4ed00b59397c4d8658ff588c058feaa233e0c8 URL: http://source.winehq.org/git/wine.git/?a=commit;h=8b4ed00b59397c4d8658ff588c...
Author: Alexandre Julliard julliard@winehq.org Date: Thu Jul 24 20:34:39 2014 +0200
loader: Avoid ELF32_ST_INFO macro that is missing on Android.
---
loader/preloader.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-)
diff --git a/loader/preloader.c b/loader/preloader.c index f38e17a..25aaacd 100644 --- a/loader/preloader.c +++ b/loader/preloader.c @@ -999,7 +999,8 @@ static void *find_symbol( const ElfW(Phdr) *phdr, int num, const char *var, int do { if ((chains[idx] & ~1u) == (hash & ~1u) && - symtab[idx].st_info == ELF32_ST_INFO( STB_GLOBAL, type ) && + ELF32_ST_BIND(symtab[idx].st_info) == STB_GLOBAL && + ELF32_ST_TYPE(symtab[idx].st_info) == type && !wld_strcmp( strings + symtab[idx].st_name, var )) goto found; } while (!(chains[idx++] & 1u)); @@ -1011,9 +1012,10 @@ static void *find_symbol( const ElfW(Phdr) *phdr, int num, const char *var, int const Elf32_Word *buckets = hashtab + 2; const Elf32_Word *chains = buckets + nbuckets;
- for (idx = buckets[hash % nbuckets]; idx != STN_UNDEF; idx = chains[idx]) + for (idx = buckets[hash % nbuckets]; idx; idx = chains[idx]) { - if (symtab[idx].st_info == ELF32_ST_INFO( STB_GLOBAL, type ) && + if (ELF32_ST_BIND(symtab[idx].st_info) == STB_GLOBAL && + ELF32_ST_TYPE(symtab[idx].st_info) == type && !wld_strcmp( strings + symtab[idx].st_name, var )) goto found; }