On 11/15/20 3:06 PM, Jozef Lawrynowicz wrote: > The "persistent" attribute is used for variables that are initialized > by the program loader, but are not initialized by the runtime startup > code. "persistent" variables are placed in a non-volatile area of > memory, which allows their value to "persist" between processor resets. > > Successfully regtested for arm-none-eabi. > > Ok for trunk? > > 0003-Implement-the-persistent-attribute.patch > > From c67b1bb6f46a69916c7de74617f4301b95c894d8 Mon Sep 17 00:00:00 2001 > From: Jozef Lawrynowicz <joze...@mittosystems.com> > Date: Sun, 15 Nov 2020 21:44:10 +0000 > Subject: [PATCH 3/3] Implement the "persistent" attribute > > The "persistent" attribute is used for variables that are initialized > by the program loader, but are not initialized by the runtime startup > code. "persistent" variables are placed in a non-volatile area of > memory, which allows their value to "persist" between processor resets. > > gcc/c-family/ChangeLog: > > * c-attribs.c (handle_special_var_sec_attribute): New. > (handle_noinit_attribute): Remove. > (attr_noinit_exclusions): Rename to... > (attr_section_exclusions): ...this, and add "persistent" attribute > exclusion. > (c_common_attribute_table): Add "persistent" attribute. > > gcc/ChangeLog: > > * doc/extend.texi: Document the "persistent" variable attribute. > * tree.h (DECL_PERSISTENT_P): Define. > * varasm.c (bss_initializer_p): Return false for a > DECL_PERSISTENT_P decl initialized to zero. > (default_section_type_flags): Handle the ".persistent" section. > (default_elf_select_section): Likewise. > (default_unique_section): Likewise. > > gcc/testsuite/ChangeLog: > > * gcc.c-torture/execute/noinit-attribute.c: Moved to... > * c-c++-common/torture/attr-noinit-main.inc: ...here. > * lib/target-supports.exp (check_effective_target_persistent): New. > * c-c++-common/torture/attr-noinit-1.c: New test. > * c-c++-common/torture/attr-noinit-2.c: New test. > * c-c++-common/torture/attr-noinit-3.c: New test. > * c-c++-common/torture/attr-noinit-invalid.c: New test. > * c-c++-common/torture/attr-persistent-1.c: New test. > * c-c++-common/torture/attr-persistent-2.c: New test. > * c-c++-common/torture/attr-persistent-3.c: New test. > * c-c++-common/torture/attr-persistent-invalid.c: New test. > * c-c++-common/torture/attr-persistent-main.inc: New test. I think you need to document the new effective target check in sourcebuild.texi. With that change this is OK jeff