Ugh... Really sorry, hit reply instead of reply list. Greetings,
Apologies for hijacking this e-mail chain, but I have had issues with
the ``bloat'' in newlib as well. My issue is with internationalization
support in newlib. I have configured and compiled newlib with the
following flags:
export CFLAGS_FOR_TARGET="-Os -g -ffunction-sections -fdata-sections"
../configure \
--prefix=/usr \
--target=msp430-elf \
--disable-newlib-supplied-syscalls \
--enable-newlib-reent-small \
--disable-newlib-fseek-optimization \
--disable-newlib-wide-orient \
--enable-newlib-nano-formatted-io \
--disable-newlib-io-float \
--enable-newlib-nano-malloc \
--disable-newlib-unbuf-stream-opt \
--enable-lite-exit \
--enable-newlib-global-atexit \
--disable-nls
It was my understanding that --disable-nls would disable
internationalization support. Unfortunately, I am observing the
following behaviour with the attached code:
$ msp430-elf-gcc -Os -o uart uart.c -mmcu=msp430g2553
$ size uart
text data bss dec hex filename
778 16 90 884 374 uart
$ msp430-elf-gcc -Os -o uart uart.c -mmcu=msp430g2553 -DUSE_TOUPPER
$ size uart
text data bss dec hex filename
1476 398 92 1966 7ae uart
The function toupper() is pulling in 382 bytes into .data. This accounts
for 74.6% of this particular microcontroller's SRAM. This is not very
nice. Furthermore, I have not really looked into it, but should this new
data actually be mutable? If not, it could very well go into .rodata and
stay in flash memory.
Ideally, I should be able to disable internationalization support
alltoguether even if it goes against the C and POSIX standards. Is there
any way to actually do that I am missing?
Thank you.
Cheers,
Orlando.
On 03/03/2017 01:30 PM, DJ Delorie wrote:
>
> This has come up before, and here's what's going on... the new
> msp430-elf-gcc includes all the code required by the standard, partly
> because... well, standards... and partly so that the testsuite can test
> everything. The old msp-gcc made lots of assumptions about how the
> compiler would actually be used, and "pre-optimized" the runtime for it.
>
> So you end up with things like "argv handling" when there's no command
> line, or "exit closes files" when you never exit. A big change is using
> a float-enabled printf when you don't need it.
>
> I put some notes here, way back when, but they're old, and IIRC it's
> been improved even more since then:
>
> http://people.redhat.com/~dj/msp430/size-optimizations.html
>
> Also, you can use "msp430-elf-gcc -mintr ..." to minimize the runtime
> support.
>
> Also, if you're REALLY constrained to size, you might consider getting
> the crt0.S source file from newlib and modifying it yourself to really
> strip out the parts you don't need. Most embedded code really only
> needs to set up the stack and watchdog, then jump to main().
>
> ------------------------------------------------------------------------------
> Check out the vibrant tech community on one of the world's most
> engaging tech sites, SlashDot.org! http://sdm.link/slashdot
> _______________________________________________
> Mspgcc-users mailing list
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/mspgcc-users
>
signature.asc
Description: OpenPGP digital signature
------------------------------------------------------------------------------ Check out the vibrant tech community on one of the world's most engaging tech sites, SlashDot.org! http://sdm.link/slashdot
_______________________________________________ Mspgcc-users mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/mspgcc-users
