From 4d7859f03165e18a791d65b15d3f4cbf7a08a79b Mon Sep 17 00:00:00 2001 From: Ingo Weinhold Date: Tue, 6 Jul 2010 15:41:33 +0000 Subject: [PATCH] elf_resolve_symbol(): If a weak undefined symbol could not be resolved, return 0 as its address. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@37412 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- src/system/kernel/elf.cpp | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/system/kernel/elf.cpp b/src/system/kernel/elf.cpp index faac374f68..7d0ddf9f91 100644 --- a/src/system/kernel/elf.cpp +++ b/src/system/kernel/elf.cpp @@ -991,6 +991,12 @@ elf_resolve_symbol(struct elf_image_info *image, struct Elf32_Sym *symbol, newSymbol = elf_find_symbol(sharedImage, symbolName, versionInfo, false); if (newSymbol == NULL) { + // Weak undefined symbols get a value of 0, if unresolved. + if (ELF32_ST_BIND(symbol->st_info) == STB_WEAK) { + *_symbolAddress = 0; + return B_OK; + } + dprintf("\"%s\": could not resolve symbol '%s'\n", image->name, symbolName); return B_MISSING_SYMBOL;