Message ID | 1413955513-4923-2-git-send-email-victor.kamensky@linaro.org |
---|---|
State | New |
Headers | show |
On Tue, Oct 21, 2014 at 10:25:13PM -0700, Victor Kamensky wrote:
> + if ((elf_elfheader (abfd)->e_flags) & EF_ARM_BE8)
^ this parenthesis is in the
wrong place. gcc will warn about "if (x & y)", breaking -Werror
builds. Writing "if ((x & y))" silences the gcc warning, so you
should write
if ((elf_elfheader (abfd)->e_flags & EF_ARM_BE8))
or as I suggested in the previous email (without explaining why)
if ((elf_elfheader (abfd)->e_flags & EF_ARM_BE8) != 0)
The patch is OK to commit with that change.
On 22 October 2014 15:50, Alan Modra <amodra@gmail.com> wrote: > On Tue, Oct 21, 2014 at 10:25:13PM -0700, Victor Kamensky wrote: >> + if ((elf_elfheader (abfd)->e_flags) & EF_ARM_BE8) > ^ this parenthesis is in the > wrong place. gcc will warn about "if (x & y)", breaking -Werror > builds. Writing "if ((x & y))" silences the gcc warning, so you > should write > > if ((elf_elfheader (abfd)->e_flags & EF_ARM_BE8)) > > or as I suggested in the previous email (without explaining why) > > if ((elf_elfheader (abfd)->e_flags & EF_ARM_BE8) != 0) Thanks, Alan. Sorry, did not catch that in your previous email I will fix that and repost patch shortly. > The patch is OK to commit with that change. Besides reposting updated patch is there any other actions on my side? I am bit a new to this. My assumption is that once patch is reviewed and approved, some of maintainers will pick it and commit. Is it not correct? Thanks, Victor > -- > Alan Modra > Australia Development Lab, IBM
On Wed, Oct 22, 2014 at 06:01:12PM -0700, Victor Kamensky wrote: > On 22 October 2014 15:50, Alan Modra <amodra@gmail.com> wrote: > > On Tue, Oct 21, 2014 at 10:25:13PM -0700, Victor Kamensky wrote: > >> + if ((elf_elfheader (abfd)->e_flags) & EF_ARM_BE8) > > ^ this parenthesis is in the > > wrong place. gcc will warn about "if (x & y)", breaking -Werror > > builds. Writing "if ((x & y))" silences the gcc warning, so you > > should write > > > > if ((elf_elfheader (abfd)->e_flags & EF_ARM_BE8)) > > > > or as I suggested in the previous email (without explaining why) > > > > if ((elf_elfheader (abfd)->e_flags & EF_ARM_BE8) != 0) > > Thanks, Alan. > > Sorry, did not catch that in your previous email I will fix that > and repost patch shortly. > > > The patch is OK to commit with that change. > > Besides reposting updated patch is there any other actions > on my side? I am bit a new to this. My assumption is that once > patch is reviewed and approved, some of maintainers will pick it > and commit. Is it not correct? Ah, I thought you had git commit privilege. Don't worry about reposting the patch. I'll commit a fixed version for you.
On 22 October 2014 18:12, Alan Modra <amodra@gmail.com> wrote: > On Wed, Oct 22, 2014 at 06:01:12PM -0700, Victor Kamensky wrote: >> On 22 October 2014 15:50, Alan Modra <amodra@gmail.com> wrote: >> > On Tue, Oct 21, 2014 at 10:25:13PM -0700, Victor Kamensky wrote: >> >> + if ((elf_elfheader (abfd)->e_flags) & EF_ARM_BE8) >> > ^ this parenthesis is in the >> > wrong place. gcc will warn about "if (x & y)", breaking -Werror >> > builds. Writing "if ((x & y))" silences the gcc warning, so you >> > should write >> > >> > if ((elf_elfheader (abfd)->e_flags & EF_ARM_BE8)) >> > >> > or as I suggested in the previous email (without explaining why) >> > >> > if ((elf_elfheader (abfd)->e_flags & EF_ARM_BE8) != 0) >> >> Thanks, Alan. >> >> Sorry, did not catch that in your previous email I will fix that >> and repost patch shortly. >> >> > The patch is OK to commit with that change. >> >> Besides reposting updated patch is there any other actions >> on my side? I am bit a new to this. My assumption is that once >> patch is reviewed and approved, some of maintainers will pick it >> and commit. Is it not correct? > > Ah, I thought you had git commit privilege. Don't worry about > reposting the patch. I'll commit a fixed version for you. Emails crossing. It is already out. Thank you. I appreciate your time and help. Thanks, Victor > -- > Alan Modra > Australia Development Lab, IBM
diff --git a/bfd/elf32-arm.c b/bfd/elf32-arm.c index 08aa3f9..450cabd 100644 --- a/bfd/elf32-arm.c +++ b/bfd/elf32-arm.c @@ -15953,6 +15953,34 @@ const struct elf_size_info elf32_arm_size_info = bfd_elf32_swap_reloca_out }; +static bfd_vma +read_code32 (const bfd *abfd, const bfd_byte *addr) +{ + bfd_vma retval; + + if ((elf_elfheader (abfd)->e_flags) & EF_ARM_BE8) + /* V7 BE8 code is always little endian */ + retval = bfd_getl32 (addr); + else + retval = bfd_get_32 (abfd, addr); + return retval; +} + + +static bfd_vma +read_code16 (const bfd *abfd, const bfd_byte *addr) +{ + bfd_vma retval; + + if ((elf_elfheader (abfd)->e_flags) & EF_ARM_BE8) + /* V7 BE8 code is always little endian */ + retval = bfd_getl16 (addr); + else + retval = bfd_get_16 (abfd, addr); + return retval; +} + + /* Return size of plt0 entry starting at ADDR or (bfd_vma) -1 if size can not be determined. */ @@ -15962,7 +15990,7 @@ elf32_arm_plt0_size (const bfd *abfd, const bfd_byte *addr) bfd_vma first_word; bfd_vma plt0_size; - first_word = H_GET_32 (abfd, addr); + first_word = read_code32 (abfd, addr); if (first_word == elf32_arm_plt0_entry[0]) plt0_size = 4 * ARRAY_SIZE (elf32_arm_plt0_entry); @@ -15987,17 +16015,17 @@ elf32_arm_plt_size (const bfd *abfd, const bfd_byte *start, bfd_vma offset) const bfd_byte *addr = start + offset; /* PLT entry size if fixed on Thumb-only platforms. */ - if (H_GET_32(abfd, start) == elf32_thumb2_plt0_entry[0]) + if (read_code32 (abfd, start) == elf32_thumb2_plt0_entry[0]) return 4 * ARRAY_SIZE (elf32_thumb2_plt_entry); /* Respect Thumb stub if necessary. */ - if (H_GET_16(abfd, addr) == elf32_arm_plt_thumb_stub[0]) + if (read_code16 (abfd, addr) == elf32_arm_plt_thumb_stub[0]) { plt_size += 2 * ARRAY_SIZE(elf32_arm_plt_thumb_stub); } /* Strip immediate from first add. */ - first_insn = H_GET_32(abfd, addr + plt_size) & 0xffffff00; + first_insn = read_code32 (abfd, addr + plt_size) & 0xffffff00; #ifdef FOUR_WORD_PLT if (first_insn == elf32_arm_plt_entry[0])