From f2c5d2cf28d92c77a729054d12053f433fad9e1c Mon Sep 17 00:00:00 2001 From: Jari Vetoniemi Date: Thu, 19 Apr 2018 15:16:05 +0300 Subject: linker/libc: don't wrap variable symbols This is why the bionic_file_to_glibc_file did not work with just pointers. The input is actually pointer to our wrapper, doh. --- src/linker/linker.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'src/linker') diff --git a/src/linker/linker.c b/src/linker/linker.c index 12a3521..058baa5 100644 --- a/src/linker/linker.c +++ b/src/linker/linker.c @@ -1384,7 +1384,9 @@ static int apkenv_reloc_library(soinfo *si, Elf32_Rel *rel, unsigned count) } if(sym_addr != 0) { - sym_addr = (unsigned)wrapper_create(sym_name, (void*)sym_addr); + if(ELF32_ST_TYPE(((Elf32_Sym*)(intptr_t)sym_addr)->st_info) == STT_FUNC) { + sym_addr = (unsigned)wrapper_create(sym_name, (void*)sym_addr); + } } else if(s == NULL) { /* We only allow an undefined symbol if this is a weak -- cgit v1.2.3