On Wed, Sep 11, 2024 at 11:51 AM Srinath Parvathaneni <srinath.parvathan...@arm.com> wrote: > > This patch adds support for aarch64 gcs build attributes.
Hi, just wondering if you could clarify what "GCS" stands for in this context? When I see it, my first thought is "GNU Coding Standards", but I don't think that's right... > This support includes generating two new assembler directives > .aeabi_subsection and .aeabi_attribute. These directives are > generated as per the syntax mentioned in spec > "Build Attributes for the Arm® 64-bit Architecture (AArch64)" > available at [1]. > > To check whether the assembler being used to build the toolchain > supports these directives, a new gcc configure check is added in > gcc/configure.ac. > > If the assembler support these directives, .aeabi_subsection and > .aeabi_attribute directives are emitted in the generated assembly, > when -mbranch-protection=gcs is passed. > > If the assembler does not support these directives, > .note.gnu.property section will emit the relevant gcs information > in the generated assembly, when -mbranch-protection=gcs is passed. > > This patch needs to be applied on top of GCC gcs patch series [2]. > > Bootstrapped on aarch64-none-linux-gnu and regression tested on > aarch64-none-elf, no issues. > > Ok for master? > > Regards, > Srinath. > > [1]: https://github.com/ARM-software/abi-aa/pull/230 > [2]: > https://gcc.gnu.org/git/?p=gcc.git;a=shortlog;h=refs/vendors/ARM/heads/gcs > > gcc/ChangeLog: > > 2024-09-11 Srinath Parvathaneni <srinath.parvathan...@arm.com> > > * config.in: Regenerated > * config/aarch64/aarch64.cc (aarch64_emit_aeabi_attribute): New > function declaration. > (aarch64_emit_aeabi_subsection): Likewise. > (aarch64_start_file): Emit gcs build attributes. > (aarch64_file_end_indicate_exec_stack): Update gcs bit in > note.gnu.property section. > * configure: Regenerated. > * configure.ac: Add gcc configure check. > > gcc/testsuite/ChangeLog: > > 2024-09-11 Srinath Parvathaneni <srinath.parvathan...@arm.com> > > * gcc.target/aarch64/build-attribute-gcs.c: New test. > --- > gcc/config.in | 6 +++ > gcc/config/aarch64/a.out | Bin 0 -> 656 bytes > gcc/config/aarch64/aarch64.cc | 43 ++++++++++++++++++ > gcc/configure | 35 ++++++++++++++ > gcc/configure.ac | 7 +++ > .../gcc.target/aarch64/build-attribute-gcs.c | 24 ++++++++++ > 6 files changed, 115 insertions(+) > create mode 100644 gcc/config/aarch64/a.out > create mode 100644 gcc/testsuite/gcc.target/aarch64/build-attribute-gcs.c >