From beb8df56a1b4c58ed3d79b3cec93c15f91290147 Mon Sep 17 00:00:00 2001 From: "H.J. Lu" Date: Tue, 27 Apr 2004 16:06:07 +0000 Subject: [PATCH] 2004-04-27 H.J. Lu * elf32-sh64.c (elf_backend_section_flags): New. Defined. (sh64_elf_set_mach_from_flags): Remove the kludge for .cranges section. (sh64_elf_section_flags): New. Set SEC_DEBUGGING for .cranges section. --- bfd/ChangeLog | 8 ++++++++ bfd/elf32-sh64.c | 23 ++++++++++++----------- 2 files changed, 20 insertions(+), 11 deletions(-) diff --git a/bfd/ChangeLog b/bfd/ChangeLog index cb505e480e0..18d734fa1bb 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -1,3 +1,11 @@ +2004-04-27 H.J. Lu + + * elf32-sh64.c (elf_backend_section_flags): New. Defined. + (sh64_elf_set_mach_from_flags): Remove the kludge for .cranges + section. + (sh64_elf_section_flags): New. Set SEC_DEBUGGING for .cranges + section. + 2004-04-27 Alan Modra * elf64-alpha.c (elf64_alpha_read_ecoff_info): Don't assign diff --git a/bfd/elf32-sh64.c b/bfd/elf32-sh64.c index f013e6fea8f..62cf2e61a8d 100644 --- a/bfd/elf32-sh64.c +++ b/bfd/elf32-sh64.c @@ -89,6 +89,7 @@ static void sh64_find_section_for_address #define elf_backend_final_write_processing sh64_elf_final_write_processing #define elf_backend_section_from_shdr sh64_backend_section_from_shdr #define elf_backend_special_sections sh64_elf_special_sections +#define elf_backend_section_flags sh64_elf_section_flags #define bfd_elf32_new_section_hook sh64_elf_new_section_hook @@ -149,7 +150,6 @@ static bfd_boolean sh64_elf_set_mach_from_flags (bfd *abfd) { flagword flags = elf_elfheader (abfd)->e_flags; - asection *cranges; switch (flags & EF_SH_MACH_MASK) { @@ -164,18 +164,19 @@ sh64_elf_set_mach_from_flags (bfd *abfd) return FALSE; } - /* We also need to set SEC_DEBUGGING on an incoming .cranges section. - We could have used elf_backend_section_flags if it had given us the - section name; the bfd_section member in the header argument is not - set at the point of the call. FIXME: Find out whether that is by - undocumented design or a bug. */ - cranges = bfd_get_section_by_name (abfd, SH64_CRANGES_SECTION_NAME); - if (cranges != NULL - && ! bfd_set_section_flags (abfd, cranges, - bfd_get_section_flags (abfd, cranges) - | SEC_DEBUGGING)) + return TRUE; +} + +static bfd_boolean +sh64_elf_section_flags (flagword *flags, + const Elf_Internal_Shdr *hdr) +{ + if (hdr->bfd_section == NULL) return FALSE; + if (strcmp (hdr->bfd_section->name, SH64_CRANGES_SECTION_NAME) == 0) + *flags |= SEC_DEBUGGING; + return TRUE; } -- 2.30.2