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

Reply via email to