[PATCH v3 1/7] Add --enable-newlib-reent-binary-compat

Sebastian Huber <[email protected]>
Newsgroups gmane.comp.lib.newlib
Message-ID <[email protected]>
Add the --enable-newlib-reent-binary-compat configure option.  This option is
disabled by default.  If enabled, then unused members in struct _reent are
preserved to maintain the structure layout.
---
 newlib/README                    |  6 ++++++
 newlib/configure                 | 21 +++++++++++++++++++++
 newlib/configure.ac              | 15 +++++++++++++++
 newlib/libc/include/sys/config.h |  6 ++++++
 newlib/newlib.hin                |  3 +++
 5 files changed, 51 insertions(+)

diff --git a/newlib/README b/newlib/README
index 97890b9d2..c99ab47c6 100644
--- a/newlib/README
+++ b/newlib/README
@@ -362,6 +362,12 @@ One feature can be enabled by specifying `--enable-FEATURE=yes' or
      less conversion accuracy.
      Enabled by default.
 
+`--enable-newlib-reent-binary-compat'
+     Enable backward binary compatibility for struct _reent.  If enabled, then
+     unused members in struct _reent are preserved to maintain the structure
+     layout.
+     Disabled by default.
+
 `--enable-multilib'
      Build many library versions.
      Enabled by default.
diff --git a/newlib/configure b/newlib/configure
index c83511da6..4ff02360b 100755
--- a/newlib/configure
+++ b/newlib/configure
@@ -972,6 +972,7 @@ enable_newlib_iconv_external_ccs
 enable_newlib_atexit_dynamic_alloc
 enable_newlib_global_atexit
 enable_newlib_reent_small
+enable_newlib_reent_binary_compat
 enable_newlib_global_stdio_streams
 enable_newlib_fvwrite_in_streamio
 enable_newlib_fseek_optimization
@@ -1639,6 +1640,7 @@ Optional Features:
   --disable-newlib-atexit-dynamic-alloc    disable dynamic allocation of atexit entries
   --enable-newlib-global-atexit	enable atexit data structure as global
   --enable-newlib-reent-small   enable small reentrant struct support
+  --enable-newlib-reent-binary-compat   enable backward binary compatibility for struct _reent
   --enable-newlib-global-stdio-streams   enable global stdio streams
   --disable-newlib-fvwrite-in-streamio    disable iov in streamio
   --disable-newlib-fseek-optimization    disable fseek optimization
@@ -2390,6 +2392,19 @@ else
   newlib_reent_small=
 fi
 
+# Check whether --enable-newlib-reent-binary-compat was given.
+if test "${enable_newlib_reent_binary_compat+set}" = set; then :
+  enableval=$enable_newlib_reent_binary_compat; if test "${newlib_enable_reent_binary_compat+set}" != set; then
+  case "${enableval}" in
+    yes) newlib_enable_reent_binary_compat=yes ;;
+    no)  newlib_enable_reent_binary_compat=no  ;;
+    *)   as_fn_error $? "bad value ${enableval} for newlib-enable-reent-binary-compat option" "$LINENO" 5 ;;
+  esac
+ fi
+else
+  newlib_enable_reent_binary_compat=no
+fi
+
 # Check whether --enable-newlib-global-stdio-streams was given.
 if test "${enable_newlib_global_stdio_streams+set}" = set; then :
   enableval=$enable_newlib_global_stdio_streams; case "${enableval}" in
@@ -6418,6 +6433,12 @@ $as_echo "#define _WANT_REENT_SMALL 1" >>confdefs.h
 
 fi
 
+if test "${newlib_enable_reent_binary_compat}" = "yes"; then
+
+$as_echo "#define _WANT_REENT_BACKWARD_BINARY_COMPAT 1" >>confdefs.h
+
+fi
+
 if test "${newlib_global_stdio_streams}" = "yes"; then
 
 $as_echo "#define _WANT_REENT_GLOBAL_STDIO_STREAMS 1" >>confdefs.h
diff --git a/newlib/configure.ac b/newlib/configure.ac
index 195d336f2..7c7297564 100644
--- a/newlib/configure.ac
+++ b/newlib/configure.ac
@@ -162,6 +162,17 @@ AC_ARG_ENABLE(newlib-reent-small,
   *)   AC_MSG_ERROR(bad value ${enableval} for newlib-reent-small option) ;;
  esac], [newlib_reent_small=])dnl
 
+dnl Support --enable-newlib-reent-binary-compat
+AC_ARG_ENABLE(newlib-reent-binary-compat,
+[  --enable-newlib-reent-binary-compat   enable backward binary compatibility for struct _reent],
+[if test "${newlib_enable_reent_binary_compat+set}" != set; then
+  case "${enableval}" in
+    yes) newlib_enable_reent_binary_compat=yes ;;
+    no)  newlib_enable_reent_binary_compat=no  ;;
+    *)   AC_MSG_ERROR(bad value ${enableval} for newlib-enable-reent-binary-compat option) ;;
+  esac
+ fi], [newlib_enable_reent_binary_compat=no])dnl
+
 dnl Support --enable-newlib-global-stdio-streams
 AC_ARG_ENABLE(newlib-global-stdio-streams,
 [  --enable-newlib-global-stdio-streams   enable global stdio streams],
@@ -420,6 +431,10 @@ if test "${newlib_reent_small}" = "yes"; then
   AC_DEFINE(_WANT_REENT_SMALL, 1, [Optional reentrant struct support.  Used mostly on platforms with very restricted storage.])
 fi
 
+if test "${newlib_enable_reent_binary_compat}" = "yes"; then
+  AC_DEFINE(_WANT_REENT_BACKWARD_BINARY_COMPAT, 1, [Define to enable backward binary compatibility for struct _reent.])
+fi
+
 if test "${newlib_global_stdio_streams}" = "yes"; then
   AC_DEFINE(_WANT_REENT_GLOBAL_STDIO_STREAMS, 1,
 	    [Define to move the stdio stream FILE objects out of struct _reent and make them global.
diff --git a/newlib/libc/include/sys/config.h b/newlib/libc/include/sys/config.h
index 61a6f95d8..b4d755957 100644
--- a/newlib/libc/include/sys/config.h
+++ b/newlib/libc/include/sys/config.h
@@ -299,6 +299,12 @@
 #endif
 #endif
 
+#ifdef _WANT_REENT_BACKWARD_BINARY_COMPAT
+#ifndef _REENT_BACKWARD_BINARY_COMPAT
+#define _REENT_BACKWARD_BINARY_COMPAT
+#endif
+#endif
+
 /* If _MB_EXTENDED_CHARSETS_ALL is set, we want all of the extended
    charsets.  The extended charsets add a few functions and a couple
    of tables of a few K each. */
diff --git a/newlib/newlib.hin b/newlib/newlib.hin
index b52bc7460..4a9614970 100644
--- a/newlib/newlib.hin
+++ b/newlib/newlib.hin
@@ -402,6 +402,9 @@
 /* Positional argument support in printf functions enabled. */
 #undef _WANT_IO_POS_ARGS
 
+/* Define to enable backward binary compatibility for struct _reent. */
+#undef _WANT_REENT_BACKWARD_BINARY_COMPAT
+
 /* Define to move the stdio stream FILE objects out of struct _reent and make
    them global. The stdio stream pointers of struct _reent are initialized to
    point to the global stdio FILE stream objects. */
-- 
2.35.3
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.