Module Name: src Committed By: skrll Date: Fri Nov 23 11:38:07 UTC 2018
Modified Files: src/lib/libc/arch/aarch64/gen: swapcontext.S Log Message: Fix so the setcontext call is via the PLT and libpthread can override To generate a diff of this commit: cvs rdiff -u -r1.2 -r1.3 src/lib/libc/arch/aarch64/gen/swapcontext.S Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/lib/libc/arch/aarch64/gen/swapcontext.S diff -u src/lib/libc/arch/aarch64/gen/swapcontext.S:1.2 src/lib/libc/arch/aarch64/gen/swapcontext.S:1.3 --- src/lib/libc/arch/aarch64/gen/swapcontext.S:1.2 Wed Nov 21 21:04:15 2018 +++ src/lib/libc/arch/aarch64/gen/swapcontext.S Fri Nov 23 11:38:07 2018 @@ -1,4 +1,4 @@ -/* $NetBSD: swapcontext.S,v 1.2 2018/11/21 21:04:15 skrll Exp $ */ +/* $NetBSD: swapcontext.S,v 1.3 2018/11/23 11:38:07 skrll Exp $ */ /*- * Copyright (c) 2014 The NetBSD Foundation, Inc. @@ -33,7 +33,7 @@ #include "assym.h" #if defined(LIBC_SCCS) && !defined(lint) - RCSID("$NetBSD: swapcontext.S,v 1.2 2018/11/21 21:04:15 skrll Exp $") + RCSID("$NetBSD: swapcontext.S,v 1.3 2018/11/23 11:38:07 skrll Exp $") #endif /* LIBC_SCCS && !lint */ /* LINTSTUB: int swapcontext(ucontext_t * restrict, ucontext_t * restrict); */ @@ -58,7 +58,9 @@ ENTRY(swapcontext) str x4, [x2, #_UC_REGS_SP] /* Adjust saved SP. */ str x30, [x2, #_UC_REGS_PC] /* Adjust saved PC. */ - cbz x3, _C_LABEL(setcontext)/* setcontext if getcontext succeeded */ + cbnz x3, 1f + b _C_LABEL(setcontext) /* setcontext if getcontext succeeded */ +1: mov x0, x3 /* restore getcontext return value */ ret /* return on error from getcontext */ END(swapcontext)