[PATCH] [MSP430] Make the inclusion of run_*_array functions depend on defined assembler symbols

Jozef Lawrynowicz jozef.l@mittosystems.com
Thu Apr 18 00:04:00 GMT 2019


Many of the MSP430 crt functions (e.g. to initialize bss) are linked
"dynamically", based on symbols defined in the program.
The GNU assembler defines the symbols corresponding to the crt
functions by examining the section names in the input file.

If GCC has been configured with --enable-initfini-array, then
.init_array and .fini_array will hold pointers to global
constructors/destructors. These sections can also hold functions that
need to be executed for other purposes.

The attached patch puts the __crt0_run_{preinit,init,fini}_array and
__crt0_run_array functions in their own object files, so they will
only be linked into the final executable when needed.

A companion patch for the GNU assembler has been submitted here:
https://sourceware.org/ml/binutils/2019-04/msg00211.html

Successfully regtested the DejaGNU GCC testsuite using the binutils and newlib
changes together with GCC trunk configured with --enable-initfini-array.

If the patch is acceptable, I would appreciate if someone would commit it for
me, as I do not have write access.

Thanks,
Jozef
-------------- next part --------------
A non-text attachment was scrubbed...
Name: 0001-MSP430-Make-the-inclusion-of-run_-_array-fns-depend-.patch
Type: text/x-patch
Size: 5974 bytes
Desc: not available
URL: <http://sourceware.org/pipermail/newlib/attachments/20190418/8c2486e6/attachment.bin>


More information about the Newlib mailing list