From 3fb10fcfc03d5590579743494450fc8b06b179ad Mon Sep 17 00:00:00 2001 From: Artem Pyanykh <artempyanykh@gmail.com> Date: Sat, 16 Mar 2019 18:32:00 +0300 Subject: [PATCH] Gracefully handle error condition in Mach-O relocateSection --- rts/linker/MachO.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/rts/linker/MachO.c b/rts/linker/MachO.c index 6e109e592d..21e46a30d2 100644 --- a/rts/linker/MachO.c +++ b/rts/linker/MachO.c @@ -814,7 +814,11 @@ relocateSection(ObjectCode* oc, int curSection) // symbol address (symbol->n_value) if ((symbol->nlist->n_type & N_TYPE) == N_SECT) { - ASSERT(symbol->addr != NULL); + if (symbol->addr == NULL) { + errorBelch("relocateSection: address of internal symbol %s was not resolved\n", nm); + return 0; + } + addr = symbol->addr; IF_DEBUG(linker, debugBelch("relocateSection: calculated relocation of " @@ -823,6 +827,7 @@ relocateSection(ObjectCode* oc, int curSection) } else { errorBelch("\nrelocateSection: %s is not exported," " and should be defined in a section, but isn't!\n", nm); + return 0; } } -- GitLab