Increased RAM usage after upgrade to newlib 4.3.0

Patrick Bader
Fri Feb 17 19:10:55 GMT 2023

Dear newlib group members,

I have just updated my firmware from newlib 4.2.0 to newlib 4.3.0 from 
the Arch Linux packages and found out that static memory consumption 
rose by about 300 bytes due to the standard input and output streams.
However, I am not using these streams, but am using dynamic memory, 
which is using the _reent struct internally.

As I found out, this struct is always populated with the global __sf 
file descriptors in the 4.3.0 version of newlib, which are about 300 
bytes in total.
The library is built with --enable-newlib-reent-small with the nano.spec 
and in the 4.2.0 version, _reent is initialized with some fake file 
descriptors: "__sf_fake_stdin,..." which are way smaller.
Those fake versions are missing in newlib 4.3.0 and the __sf descriptors 
are used always.

Is this intended behaviour or a regression? If it is intended, is there 
a way or some flag to get rid of the extra 300 bytes?
I also do not need all those functions to be reentrant, but found no 
compilation parameter to turn this off.

Thank you in advance for your help.


Patrick Bader

More information about the Newlib mailing list