This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [PATCH][ARM] -mpure-code option for ARM


Hi Andre,

 I think you have a typo in your patch. I need to change :
+ text_section->unnamed.data = "\t.section .text,\"0x20000006\",%%progbits";

into
+ text_section->unnamed.data = "\t.section .text,\"0x20000006\",%progbits";

to make it works.

Regards
Mickael

On 06/30/2016 04:32 PM, Andre Vieira (lists) wrote:
Hello,

This patch adds the -mpure-code option for ARM. This option ensures
functions are put into sections that contain only code and no data. To
ensure this throughout compilation we give these sections the ARM
processor-specific ELF section attribute "SHF_ARM_PURECODE". This option
is only supported for non-pic code for armv7-m targets.

This patch introduces a new target hook 'TARGET_ASM_ELF_FLAGS_NUMERIC'.
This target hook enables a target to use the numeric value for elf
section attributes rather than their alphabetical representation. If
TARGET_ASM_ELF_FLAGS_NUMERIC returns TRUE, the existing
'default_elf_asm_named_section', will print the numeric value of the
section attributes for the current section. This target hook has two
parameters:
unsigned int FLAGS, the input parameter that tells the function the
current section's attributes;
unsigned int *NUM, used to pass down the numerical representation of the
section's attributes.

The default implementation for TARGET_ASM_ELF_FLAGS_NUMERIC will return
false, so existing behavior is not changed.

Bootstrapped and tested for arm-none-linux-gnueabihf. Further tested for
arm-none-eabi with a Cortex-M3 target.


gcc/ChangeLog:
2016-06-30  Andre Vieira  <andre.simoesdiasvieira@arm.com>
            Terry Guo  <terry.guo@arm.com>

        * target.def (elf_flags_numeric): New target hook.
        * targhooks.h (default_asm_elf_flags_numeric): New.
        * varasm.c (default_asm_elf_flags_numeric): New.
          (default_elf_asm_named_section): Use new target hook.
        * config/arm/arm.opt (mpure-code): New.
        * config/arm/arm.h (SECTION_ARM_PURECODE): New.
        * config/arm/arm.c (arm_asm_init_sections): Add section
          attribute to default text section if -mpure-code.
          (arm_option_check_internal): Diagnose use of option with
          non supported targets and/or options.
          (arm_asm_elf_flags_numeric): New.
          (arm_function_section): New.
          (arm_elf_section_type_flags): New.
        * config/arm/elf.h (JUMP_TABLES_IN_TEXT_SECTION): Disable
          for -mpure-code.
        * gcc/doc/texi (TARGET_ASM_ELF_FLAGS_NUMERIC): New.
        * gcc/doc/texi.in (TARGET_ASM_ELF_FLAGS_NUMERIC): Likewise.



gcc/testsuite/ChangeLog:
2016-06-30  Andre Vieira  <andre.simoesdiasvieira@arm.com>
            Terry Guo  <terry.guo@arm.com>

        * gcc.target/arm/pure-code/ffunction-sections.c: New.
        * gcc.target/arm/pure-code/no-literal-pool.c: New.
        * gcc.target/arm/pure-code/pure-code.exp: New.



Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]