From 402a206a1b1ff984b14c3321f0bc1340c4873147 Mon Sep 17 00:00:00 2001 From: Joel Sherrill Date: Fri, 21 May 2021 16:29:42 -0500 Subject: powerpc/.../sbrk.c: Do not reference errno. Closes #4r37. --- bsps/powerpc/shared/start/sbrk.c | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) (limited to 'bsps/powerpc') diff --git a/bsps/powerpc/shared/start/sbrk.c b/bsps/powerpc/shared/start/sbrk.c index 95104ba9c8..d7507b3997 100644 --- a/bsps/powerpc/shared/start/sbrk.c +++ b/bsps/powerpc/shared/start/sbrk.c @@ -150,9 +150,19 @@ void *sbrk(ptrdiff_t incr) remaining_size-=incr; rval = (void *) remaining_start; remaining_start += incr; - } else { - errno = ENOMEM; } + + /* + * sbrk() is a Legacy POSIX method which means it is no longer part of the + * POSIX standard. Historically, it was required to set errno to ENOMEM if + * the extension failed. This implementation does not do that for two + * reasons. First, this method is only called from the RTEMS malloc() + * implementation and does not expect errno to be set when -1 is returned. + * Second, setting errno implicitly pulls in some of the newlib reentrancy + * support. Not setting errno avoids this method forcing that support + * into every application for every BSP that uses this method. + */ + #ifdef DEBUG printk("************* SBRK 0x%08x (ret 0x%08x) **********\n", incr, rval); #endif -- cgit v1.2.3