config: Fix CONFIGURE_DISABLE_NEWLIB_REENTRANCY

Move the __getreent() variant using the global reentrancy structure to
librtemscpu.a.  This avoids a definition of __getreent() in the
configuration module if CONFIGURE_DISABLE_NEWLIB_REENTRANCY is defined.
This avoids all the dependencies which would be exposed by a reference
to the global reentrancy structure.

This change is only possible since the default configuration moved to
librtemsdefaultconfig.a recently.
This commit is contained in:
Sebastian Huber
2018-11-06 13:04:11 +01:00
parent e71c097ac3
commit d1f7204649
3 changed files with 32 additions and 9 deletions

View File

@@ -151,6 +151,7 @@ librtemscpu_a_SOURCES += libcsupport/src/__getpid.c
librtemscpu_a_SOURCES += libcsupport/src/getpid.c
librtemscpu_a_SOURCES += libcsupport/src/getppid.c
librtemscpu_a_SOURCES += libcsupport/src/getpwent.c
librtemscpu_a_SOURCES += libcsupport/src/getreentglobal.c
librtemscpu_a_SOURCES += libcsupport/src/getrusage.c
librtemscpu_a_SOURCES += libcsupport/src/__gettod.c
librtemscpu_a_SOURCES += libcsupport/src/getuid.c

View File

@@ -2242,15 +2242,11 @@ extern rtems_initialization_tasks_table Initialization_tasks[];
#define _CONFIGURE_NUMBER_OF_INITIAL_EXTENSIONS 0
#endif
#if defined(RTEMS_NEWLIB)
struct _reent *__getreent(void)
{
#ifdef CONFIGURE_DISABLE_NEWLIB_REENTRANCY
return _GLOBAL_REENT;
#else
return _Thread_Get_executing()->libc_reent;
#endif
}
#if defined(RTEMS_NEWLIB) && !defined(CONFIGURE_DISABLE_NEWLIB_REENTRANCY)
struct _reent *__getreent(void)
{
return _Thread_Get_executing()->libc_reent;
}
#endif
#endif

View File

@@ -0,0 +1,26 @@
/*
* Copyright (c) 2018 embedded brains GmbH. All rights reserved.
*
* embedded brains GmbH
* Dornierstr. 4
* 82178 Puchheim
* Germany
* <rtems@embedded-brains.de>
*
* The license and distribution terms for this file may be
* found in the file LICENSE in this distribution or at
* http://www.rtems.com/license/LICENSE.
*/
#if HAVE_CONFIG_H
#include "config.h"
#endif
#if defined(RTEMS_NEWLIB)
#include <sys/reent.h>
struct _reent *__getreent(void)
{
return _GLOBAL_REENT;
}
#endif