From f0728ee368f217f2473798ad7ccfe9feae4412ce Mon Sep 17 00:00:00 2001 From: Andre Vieria Date: Tue, 5 Jul 2016 11:28:46 +0100 Subject: [ARM] Change noread to purecode. bfd/ChangeLog 2016-07-05 Andre Vieria * bfd-in2.h (SEC_ELF_NOREAD): Rename to ... (SEC_ELF_PURECODE): ... this. * elf32-arm.c (elf32_arm_post_process_headers): Rename SEC_ELF_NOREAD to SEC_ELF_NOREAD. (elf32_arm_fake_sections): Likewise. (elf_32_arm_section_flags): Likewise. (elf_32_arm_lookup_section_flags): Likewise. * section.c (SEC_ELF_NOREAD): Rename to ... (SEC_ELF_PURECODE): ... this. binutils/ChangeLog 2016-07-05 Andre Vieria * objdump.c (dump_section_header): Rename SEC_ELF_NOREAD to SEC_ELF_NOREAD. * readelf.c (get_elf_section_flags): Rename ARM_NOREAD to ARM_PURECODE and SHF_ARM_NOREAD to SHF_ARM_PURECODE. (process_section_headers): Rename noread to purecode. * section.c (SEC_ELF_NOREAD): Rename to ... (SEC_ELF_PURECODE): ... this. include/ChangeLog 2016-07-05 Andre Vieria * elf/arm.h (SHF_ARM_NOREAD): Rename to ... (SHF_ARM_PURECODE): ... this. ld/ChangeLog 2016-07-05 Andre Vieria * testsuite/ld-arm/arm_noread.ld: Renamed to ... testsuite/ld-arm/arm_purecode.ld: ... this, and replaced all noread's by purecode. --- bfd/ChangeLog | 12 ++++++++++++ bfd/bfd-in2.h | 4 ++-- bfd/elf32-arm.c | 16 ++++++++-------- bfd/section.c | 4 ++-- binutils/ChangeLog | 11 +++++++++++ binutils/objdump.c | 7 +------ binutils/readelf.c | 8 ++++---- include/ChangeLog | 5 +++++ include/elf/arm.h | 2 +- ld/ChangeLog | 6 ++++++ ld/testsuite/ld-arm/arm_noread.ld | 32 -------------------------------- ld/testsuite/ld-arm/arm_purecode.ld | 32 ++++++++++++++++++++++++++++++++ 12 files changed, 84 insertions(+), 55 deletions(-) delete mode 100644 ld/testsuite/ld-arm/arm_noread.ld create mode 100644 ld/testsuite/ld-arm/arm_purecode.ld diff --git a/bfd/ChangeLog b/bfd/ChangeLog index adfed6f..cff9b32 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -1,3 +1,15 @@ +2016-07-05 Andre Vieria + + * bfd-in2.h (SEC_ELF_NOREAD): Rename to ... + (SEC_ELF_PURECODE): ... this. + * elf32-arm.c (elf32_arm_post_process_headers): Rename SEC_ELF_NOREAD + to SEC_ELF_NOREAD. + (elf32_arm_fake_sections): Likewise. + (elf_32_arm_section_flags): Likewise. + (elf_32_arm_lookup_section_flags): Likewise. + * section.c (SEC_ELF_NOREAD): Rename to ... + (SEC_ELF_PURECODE): ... this. + 2016-07-01 Thomas Preud'homme * elf32-arm.c (using_thumb2_bl): New function. diff --git a/bfd/bfd-in2.h b/bfd/bfd-in2.h index 30513c4..3f2d93b 100644 --- a/bfd/bfd-in2.h +++ b/bfd/bfd-in2.h @@ -1428,8 +1428,8 @@ typedef struct bfd_section when memory read flag isn't set. */ #define SEC_COFF_NOREAD 0x40000000 - /* Indicate that section has the no read flag set. */ -#define SEC_ELF_NOREAD 0x80000000 + /* Indicate that section has the purecode flag set. */ +#define SEC_ELF_PURECODE 0x80000000 /* End of section flags. */ diff --git a/bfd/elf32-arm.c b/bfd/elf32-arm.c index b5e7ddb..9331471 100644 --- a/bfd/elf32-arm.c +++ b/bfd/elf32-arm.c @@ -15812,7 +15812,7 @@ elf32_arm_post_process_headers (bfd * abfd, struct bfd_link_info * link_info ATT } /* Scan segment to set p_flags attribute if it contains only sections with - SHF_ARM_NOREAD flag. */ + SHF_ARM_PURECODE flag. */ for (m = elf_seg_map (abfd); m != NULL; m = m->next) { unsigned int j; @@ -15821,7 +15821,7 @@ elf32_arm_post_process_headers (bfd * abfd, struct bfd_link_info * link_info ATT continue; for (j = 0; j < m->count; j++) { - if (!(elf_section_flags (m->sections[j]) & SHF_ARM_NOREAD)) + if (!(elf_section_flags (m->sections[j]) & SHF_ARM_PURECODE)) break; } if (j == m->count) @@ -15884,8 +15884,8 @@ elf32_arm_fake_sections (bfd * abfd, Elf_Internal_Shdr * hdr, asection * sec) hdr->sh_flags |= SHF_LINK_ORDER; } - if (sec->flags & SEC_ELF_NOREAD) - hdr->sh_flags |= SHF_ARM_NOREAD; + if (sec->flags & SEC_ELF_PURECODE) + hdr->sh_flags |= SHF_ARM_PURECODE; return TRUE; } @@ -18171,16 +18171,16 @@ elf32_arm_get_synthetic_symtab (bfd *abfd, static bfd_boolean elf32_arm_section_flags (flagword *flags, const Elf_Internal_Shdr * hdr) { - if (hdr->sh_flags & SHF_ARM_NOREAD) - *flags |= SEC_ELF_NOREAD; + if (hdr->sh_flags & SHF_ARM_PURECODE) + *flags |= SEC_ELF_PURECODE; return TRUE; } static flagword elf32_arm_lookup_section_flags (char *flag_name) { - if (!strcmp (flag_name, "SHF_ARM_NOREAD")) - return SHF_ARM_NOREAD; + if (!strcmp (flag_name, "SHF_ARM_PURECODE")) + return SHF_ARM_PURECODE; return SEC_NO_FLAGS; } diff --git a/bfd/section.c b/bfd/section.c index f0a66b2..70cb267 100644 --- a/bfd/section.c +++ b/bfd/section.c @@ -361,8 +361,8 @@ CODE_FRAGMENT . when memory read flag isn't set. *} .#define SEC_COFF_NOREAD 0x40000000 . -. {* Indicate that section has the no read flag set. *} -.#define SEC_ELF_NOREAD 0x80000000 +. {* Indicate that section has the purecode flag set. *} +.#define SEC_ELF_PURECODE 0x80000000 . . {* End of section flags. *} . diff --git a/binutils/ChangeLog b/binutils/ChangeLog index 4108b78..a854e6a 100644 --- a/binutils/ChangeLog +++ b/binutils/ChangeLog @@ -1,3 +1,14 @@ +2016-07-05 Andre Vieria + + * objdump.c (dump_section_header): Rename SEC_ELF_NOREAD + to SEC_ELF_NOREAD. + * readelf.c (get_elf_section_flags): Rename ARM_NOREAD to + ARM_PURECODE and SHF_ARM_NOREAD to SHF_ARM_PURECODE. + (process_section_headers): Rename noread to purecode. + + * section.c (SEC_ELF_NOREAD): Rename to ... + (SEC_ELF_PURECODE): ... this. + 2016-07-01 Nick Clifton * prdbg.c (pr_enum_type): Use a buffer big enough to hold an diff --git a/binutils/objdump.c b/binutils/objdump.c index bf9c592..29d2276 100644 --- a/binutils/objdump.c +++ b/binutils/objdump.c @@ -493,12 +493,7 @@ dump_section_header (bfd *abfd, asection *section, PF (SEC_COFF_NOREAD, "NOREAD"); } else if (bfd_get_flavour (abfd) == bfd_target_elf_flavour) - { - /* Note - sections can have both the READONLY and NOREAD attributes - set. In this case the NOREAD takes precedence, but we report both - since the user may need to know that both bits are set. */ - PF (SEC_ELF_NOREAD, "NOREAD"); - } + PF (SEC_ELF_PURECODE, "PURECODE"); PF (SEC_THREAD_LOCAL, "THREAD_LOCAL"); PF (SEC_GROUP, "GROUP"); if (bfd_get_arch (abfd) == bfd_arch_mep) diff --git a/binutils/readelf.c b/binutils/readelf.c index 274ddd1..4c7ad4c 100644 --- a/binutils/readelf.c +++ b/binutils/readelf.c @@ -5399,7 +5399,7 @@ get_elf_section_flags (bfd_vma sh_flags) /* 20 */ { STRING_COMMA_LEN ("COMPRESSED") }, /* ARM specific. */ /* 21 */ { STRING_COMMA_LEN ("ENTRYSECT") }, - /* 22 */ { STRING_COMMA_LEN ("ARM_NOREAD") }, + /* 22 */ { STRING_COMMA_LEN ("ARM_PURECODE") }, /* 23 */ { STRING_COMMA_LEN ("COMDEF") } }; @@ -5475,7 +5475,7 @@ get_elf_section_flags (bfd_vma sh_flags) switch (flag) { case SHF_ENTRYSECT: sindex = 21; break; - case SHF_ARM_NOREAD: sindex = 22; break; + case SHF_ARM_PURECODE: sindex = 22; break; case SHF_COMDEF: sindex = 23; break; default: break; } @@ -5534,7 +5534,7 @@ get_elf_section_flags (bfd_vma sh_flags) && flag == SHF_X86_64_LARGE) *p = 'l'; else if (elf_header.e_machine == EM_ARM - && flag == SHF_ARM_NOREAD) + && flag == SHF_ARM_PURECODE) *p = 'y'; else if (flag & SHF_MASKOS) { @@ -6118,7 +6118,7 @@ process_section_headers (FILE * file) || elf_header.e_machine == EM_K1OM) printf (_("l (large), ")); else if (elf_header.e_machine == EM_ARM) - printf (_("y (noread), ")); + printf (_("y (purecode), ")); printf ("p (processor specific)\n"); } diff --git a/include/ChangeLog b/include/ChangeLog index e4db8b8..7e8cd9f 100644 --- a/include/ChangeLog +++ b/include/ChangeLog @@ -1,3 +1,8 @@ +2016-07-05 Andre Vieria + + * include/elf/arm.h (SHF_ARM_NOREAD): Rename to ... + (SHF_ARM_PURECODE): ... this. + 2016-07-01 Szabolcs Nagy * opcode/aarch64.h (AARCH64_CPU_HAS_ALL_FEATURES): New. diff --git a/include/elf/arm.h b/include/elf/arm.h index bafc03c..27ce6b8 100644 --- a/include/elf/arm.h +++ b/include/elf/arm.h @@ -82,7 +82,7 @@ /* ARM-specific values for sh_flags. */ #define SHF_ENTRYSECT 0x10000000 /* Section contains an entry point. */ -#define SHF_ARM_NOREAD 0x20000000 /* Section contains code that can be place on no read memory area. */ +#define SHF_ARM_PURECODE 0x20000000 /* Section contains only code and no data. */ #define SHF_COMDEF 0x80000000 /* Section may be multiply defined in the input to a link step. */ /* ARM-specific program header flags. */ diff --git a/ld/ChangeLog b/ld/ChangeLog index 53f2428..cc598af 100644 --- a/ld/ChangeLog +++ b/ld/ChangeLog @@ -1,3 +1,9 @@ +2016-07-05 Andre Vieria + + * testsuite/ld-arm/arm_noread.ld: Renamed to ... + testsuite/ld-arm/arm_purecode.ld: ... this, and replaced + all noread's by purecode. + 2016-07-05 Jan Beulich * ldexp.c (exp_fold_tree_1): Set linker_def field based on diff --git a/ld/testsuite/ld-arm/arm_noread.ld b/ld/testsuite/ld-arm/arm_noread.ld deleted file mode 100644 index 3ff17bc..0000000 --- a/ld/testsuite/ld-arm/arm_noread.ld +++ /dev/null @@ -1,32 +0,0 @@ -/* Script for ld testsuite. */ -OUTPUT_ARCH(arm) -ENTRY(_start) -MEMORY -{ - read_memory (rx) : ORIGIN = 0x00008000, LENGTH = 4M - noread_memory (!rx) : ORIGIN = 0x00800000, LENGTH = 4M -} -SECTIONS -{ - /* Read-only sections, merged into text segment: */ - PROVIDE (__executable_start = 0x8000); . = 0x8000; - .text.noread : - { - INPUT_SECTION_FLAGS (SHF_ARM_NOREAD) *(.text*) - } > noread_memory - .text : - { - *(.before) - *(.text) - *(.after) - *(.ARM.extab*) - *(.glue_7) - *(.v4_bx) - } > read_memory - .ARM.exidx : { *(.ARM.exidx*) } - . = 0x9000; - .got : { *(.got) *(.got.plt)} - . = 0x12340000; - .far : { *(.far) } - .ARM.attribues 0 : { *(.ARM.atttributes) } -} diff --git a/ld/testsuite/ld-arm/arm_purecode.ld b/ld/testsuite/ld-arm/arm_purecode.ld new file mode 100644 index 0000000..195aca1 --- /dev/null +++ b/ld/testsuite/ld-arm/arm_purecode.ld @@ -0,0 +1,32 @@ +/* Script for ld testsuite. */ +OUTPUT_ARCH(arm) +ENTRY(_start) +MEMORY +{ + read_memory (rx) : ORIGIN = 0x00008000, LENGTH = 4M + purecode_memory (!rx) : ORIGIN = 0x00800000, LENGTH = 4M +} +SECTIONS +{ + /* Read-only sections, merged into text segment: */ + PROVIDE (__executable_start = 0x8000); . = 0x8000; + .text.purecode : + { + INPUT_SECTION_FLAGS (SHF_ARM_PURECODE) *(.text*) + } > purecode_memory + .text : + { + *(.before) + *(.text) + *(.after) + *(.ARM.extab*) + *(.glue_7) + *(.v4_bx) + } > read_memory + .ARM.exidx : { *(.ARM.exidx*) } + . = 0x9000; + .got : { *(.got) *(.got.plt)} + . = 0x12340000; + .far : { *(.far) } + .ARM.attribues 0 : { *(.ARM.atttributes) } +} -- cgit v1.1