On Wed, 2019-12-11 at 12:21 +0000, Jozef Lawrynowicz wrote: > On Wed, 11 Dec 2019 12:19:41 +0000 > Jozef Lawrynowicz <joze...@mittosystems.com> wrote: > > > On Mon, 9 Dec 2019 15:28:25 +0000 > > Jozef Lawrynowicz <joze...@mittosystems.com> wrote: > > > > > On Sat, 07 Dec 2019 11:40:33 -0700 > > > Jeff Law <l...@redhat.com> wrote: > > > > > > > On Fri, 2019-11-29 at 21:00 +0000, Jozef Lawrynowicz wrote: > > > > > The attached patch consolidates some configuration tweaks I > > > > > previously submitted > > > > > as modifications to the msp430-elf target into a new target > > > > > called > > > > > "msp430-elfbare" i.e. "bare-metal". > > > > > > > > > > MSP430: Disable TM clone registry by default > > > > > https://gcc.gnu.org/ml/gcc-patches/2019-11/msg00550.html > > > > > MSP430: Disable __cxa_atexit > > > > > https://gcc.gnu.org/ml/gcc-patches/2019-11/msg00552.html > > > > > > > > > > The patches tweak the CRT code to achieve the smallest > > > > > possible code > > > > > size, > > > > > and rely on some additional generic tweaks to crtstuff.c. > > > > > > > > > > I did submit these tweaks a while ago, but I didn't get any > > > > > feedback, > > > > > however even if they are acceptable I suspect it is too late > > > > > for GCC- > > > > > 10 anyway: > > > > > libgcc: Dont define __do_global_dtors_aux if it will be empty > > > > > https://gcc.gnu.org/ml/gcc-patches/2019-11/msg00417.html > > > > > libgcc: Implement TARGET_LIBGCC_REMOVE_DSO_HANDLE > > > > > https://gcc.gnu.org/ml/gcc-patches/2019-11/msg00418.html > > > > > > > > > > (The second one is a bit hacky, but without some way of > > > > > removing the > > > > > __dso_handle declaration, we end up with 150 bytes of > > > > > unnecessary > > > > > code in some > > > > > programs.) > > > > > > > > > > So for this patch crtstuff.c was copied to the msp430 > > > > > subdirectory > > > > > and the > > > > > changes were made to that target specific version. > > > > > > > > > > Tiny program size can now be achieved by configuring gcc for > > > > > msp430- > > > > > elfbare. > > > > > > > > > > For example in an "empty main" program which loops forever: > > > > > msp430-elfbare @ -Os: > > > > > text data bss dec hex filename > > > > > 14 0 0 14 e a.out > > > > > msp430-elf @ -Os: > > > > > text data bss dec hex filename > > > > > 270 6 2 278 116 a.out > > > > > > > > > > Successfully regtested msp430-elfbare vs msp430-elf. > > > > > > > > > > Ok to apply? > > > > > > > > > > P.S. This patch relies on the -fno-exceptions multilib patch > > > > > submitted here: > > > > > https://gcc.gnu.org/ml/gcc-patches/2019-11/msg02523.html > > > > > > > > > > P.P.S. This requires some minor configury tweaks to Newlib > > > > > and GDB of > > > > > the form: > > > > > - msp430*-*-elf) > > > > > + msp430-*-elf*) > > > > > > > > > I'll apply these changes if the patch is accepted. > > > > > From cff4611855d838315e793d45256de5fc8eeefafe Mon Sep 17 > > > > > 00:00:00 > > > > > 2001 > > > > > From: Jozef Lawrynowicz <joze...@mittosystems.com> > > > > > Date: Mon, 25 Nov 2019 19:41:05 +0000 > > > > > Subject: [PATCH] MSP430: Add new msp430-elfbare target > > > > > > > > > > contrib/ChangeLog: > > > > > > > > > > 2019-11-29 Jozef Lawrynowicz <joze...@mittosystems.com> > > > > > > > > > > * config-list.mk: Add msp430-elfbare. > > > > > > > > > > gcc/ChangeLog: > > > > > > > > > > 2019-11-29 Jozef Lawrynowicz <joze...@mittosystems.com> > > > > > > > > > > * config.gcc: s/msp430*-*-*/msp430-*-*. > > > > > Handle msp430-*-elfbare. > > > > > * config/msp430/msp430-devices.c (TARGET_SUBDIR): > > > > > Define. > > > > > (_MSPMKSTR): Define. > > > > > (__MSPMKSTR): Define. > > > > > (rest_of_devices_path): Use TARGET_SUBDIR value in > > > > > string. > > > > > * config/msp430/msp430.c (msp430_option_override): > > > > > Error if > > > > > -fuse-cxa-atexit is used when it has been disabled at > > > > > configure > > > > > time. > > > > > * config/msp430/t-msp430: Define TARGET_SUBDIR when > > > > > building > > > > > msp430-devices.o. > > > > > * doc/install.texi: Document msp430-*-elf and msp430-*- > > > > > elfbare. > > > > > * doc/invoke.texi: Update documentation about which > > > > > path > > > > > devices.csv is > > > > > searched for. > > > > > > > > > > gcc/testsuite/ChangeLog: > > > > > > > > > > 2019-11-29 Jozef Lawrynowicz <joze...@mittosystems.com> > > > > > > > > > > * g++.dg/init/dso_handle1.C: Require cxa_atexit > > > > > support. > > > > > * g++.dg/init/dso_handle2.C: Likewise. > > > > > * g++.dg/other/cxa-atexit1.C: Likewise. > > > > > * gcc.target/msp430/msp430.exp: Update csv-using- > > > > > installed.c > > > > > test to > > > > > handle msp430-elfbare configuration. > > > > > > > > > > libgcc/ChangeLog: > > > > > > > > > > 2019-11-29 Jozef Lawrynowicz <joze...@mittosystems.com> > > > > > > > > > > * config.host: Use t-msp430-elfbare-crtstuff Makefile > > > > > fragment > > > > > when GCC > > > > > is configured for the msp430-elfbare target. > > > > > * config/msp430/msp430-elfbare-crtstuff.c: New file. > > > > > * config/msp430/t-msp430: Remove Makefile rules for > > > > > object > > > > > files > > > > > built from crtstuff.c > > > > > * config/msp430/t-msp430-crtstuff: New file. > > > > > * config/msp430/t-msp430-elfbare-crtstuff: New file. > > > > > * configure: Regenerate. > > > > > * configure.ac: Disable TM clone registry by default > > > > > for > > > > > msp430-elfbare. > > > > OK. I probably would have tried to avoid msp430-elfbare- > > > > crtstuff, but > > > > it's not a huge wart IMHO. > > > > > > If we get the __dso_handle removal into the generic > > > libgcc/crtstuff.c those > > > changes won't be necessary. > > > > I've attached an amended patch assuming the removal of __dso_handle > > when !DEFAULT_USE_CXA_ATEXIT is approved. Differences vs the > > original patch are > > only in libgcc/, removed the custom crtstuff implementation. > > Missed the attachment... > > Thanks, > > Jozef > > > Did you get a chance to look at "Add -fno-exceptions multilib" - > > > https://gcc.gnu.org/ml/gcc-patches/2019-11/msg02523.html I thought I'd already ACK'd this. But I'll put it back in the queue. I've found I've hit the wrong button a few times in the new MUA.
> contrib/ChangeLog: > > 2019-12-11 Jozef Lawrynowicz <joze...@mittosystems.com> > > * config-list.mk: Add msp430-elfbare. > > gcc/ChangeLog: > > 2019-12-11 Jozef Lawrynowicz <joze...@mittosystems.com> > > * config.gcc: s/msp430*-*-*/msp430-*-*. > Handle msp430-*-elfbare. > * config/msp430/msp430-devices.c (TARGET_SUBDIR): Define. > (_MSPMKSTR): Define. > (__MSPMKSTR): Define. > (rest_of_devices_path): Use TARGET_SUBDIR value in string. > * config/msp430/msp430.c (msp430_option_override): Error if > -fuse-cxa-atexit is used when it has been disabled at configure > time. > * config/msp430/t-msp430: Define TARGET_SUBDIR when building > msp430-devices.o. > * doc/install.texi: Document msp430-*-elf and msp430-*-elfbare. > * doc/invoke.texi: Update documentation about which path > devices.csv is > searched for. > > gcc/testsuite/ChangeLog: > > 2019-12-11 Jozef Lawrynowicz <joze...@mittosystems.com> > > * g++.dg/init/dso_handle1.C: Require cxa_atexit support. > * g++.dg/init/dso_handle2.C: Likewise. > * g++.dg/other/cxa-atexit1.C: Likewise. > * gcc.target/msp430/msp430.exp: Update csv-using-installed.c > test to > handle msp430-elfbare configuration. > > libgcc/ChangeLog: > > 2019-12-11 Jozef Lawrynowicz <joze...@mittosystems.com> > > * config.host: s/msp430*-*-elf/msp430-*-elf*. > Override default "extra_parts" variable. > * configure: Regenerate. > * configure.ac: Disable TM clone registry by default for > msp430-elfbare. OK jeff