This is the mail archive of the binutils@sourceware.org mailing list for the binutils 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] |
Hi there, In order to protect proprietary code from reverse-engineering, some ARM baremetal boards have a special flash area where code is executable but not readable. Normally this area is very small and can only accommodate certain code sections (sections with NOREAD attribute in this case). The attached patch implements a new letter 'y' to represent this new SHF_NOREAD section attribute and enables user to define/allocate such code sections to executable-only flash area in linker script. We talked to community with an intention to make it to be a common and standard ELF section attribute, but got rejected. So now it is implemented as a process-specific attribute for ARM target. This new attribute is a supplementary attribute to normal code section. It won't break current way to handle code section. It will be safely ignored for targets that don't have executable-only feature i.e. code section with this new attribute will be treated as a normal code section. Tested with all regression tests in Binutils, no new regressions. Is it OK to trunk? BR, Terry include/ChangeLog: 2014-04-18 Terry Guo <terry.guo@arm.com> * elf/arm.h (SHF_NOREAD): New flag to represent NOREAD attribute. bfd/ChangeLog: 2014-04-18 Terry Guo <terry.guo@arm.com> * elf32-arm.c (elf32_arm_elf_lookup_section_flags): New function to help linker recognize flag SHF_NOREAD. (elf_backend_lookup_section_flags_hook): Implement this hook for ARM target. gas/ChangeLog: 2014-04-18 Terry Guo <terry.guo@arm.com> * config/obj-elf.c (obj_elf_change_section): Accept ARM executable-only text section. * config/tc-arm.h (md_elf_section_letter): Implement this hook for ARM target. (arm_elf_section_letter): Declare it. * config/tc-arm.c (arm_elf_section_letter): Handle ARM section attribute letter 'y'. * doc/c-arm.texi (ARM section attribute 'y'): Document it. gas/testsuite/ChangeLog: 2014-04-18 Terry Guo <terry.guo@arm.com> * gas/arm/section-execute-only.s: New test case. * gas/arm/section-execute-only.d: Expected output. binutils/ChangeLog: 2014-04-18 Terry Guo <terry.guo@arm.com> * readelf.c (get_elf_section_flags): Display ARM specific NOREAD section attribute. ld/testsuite/ChangeLog: 2014-04-18 Terry Guo <terry.guo@arm.com> * ld-arm/section-execute-only.s: New test. * ld-arm/execute-only-section.ld: Linker script with executable-only memory. * ld-arm/section-execute-only.d: Expected output for target with executable-only memory. * ld-arm/no-execute-only-section.ld: Linker script without executable-only memory. * ld-arm/no-section-execute-only.d: Expected output for target without executable-only memory. * ld-arm/arm-elf.exp: Add tests for executable-only attribute.
Attachment:
binutils-exo-v4.txt
Description: Text document
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |