From: Cupertino Miranda <Cupertino.Miranda@synopsys.com>
To: "binutils@sourceware.org" <binutils@sourceware.org>
Cc: Claudiu Zissulescu <Claudiu.Zissulescu@synopsys.com>,
Francois Bedard <Francois.Bedard@synopsys.com>
Subject: [PATCH ARC 5/5] PLT content endianess awareness
Date: Mon, 04 Apr 2016 12:51:00 -0000 [thread overview]
Message-ID: <EB86EB452ADE4B44B294F7149B8A2777021A5E41@DE02WEMBXB.internal.synopsys.com> (raw)
[-- Attachment #1: Type: text/plain, Size: 332 bytes --]
Hi all,
Please review.
PLT content was ignoring endianess of the target architecture. It was
always being written in little endian format.
Best regards,
Cupertino
bfd/ChangeLog:
Cupertino Miranda <cmiranda@synopsys.com>
elf32-arc.c (plt_do_relocs_for_symbol): Changed.
(relocate_plt_for_entry): Likewise.
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: 0005-Fix-PLT-section-content-filling-on-big-endian.patch --]
[-- Type: text/x-patch; name="0005-Fix-PLT-section-content-filling-on-big-endian.patch", Size: 1718 bytes --]
diff --git a/bfd/elf32-arc.c b/bfd/elf32-arc.c
index e369e20..d286371 100644
--- a/bfd/elf32-arc.c
+++ b/bfd/elf32-arc.c
@@ -1961,7 +1961,7 @@ plt_do_relocs_for_symbol (bfd *abfd,
/* TODO: being ME is not a property of the relocation but of the
section of which is applying the relocation. */
- if (IS_MIDDLE_ENDIAN (reloc->symbol) || bfd_big_endian (abfd))
+ if (IS_MIDDLE_ENDIAN (reloc->symbol) && !bfd_big_endian (abfd))
{
relocation =
((relocation & 0xffff0000) >> 16) |
@@ -2005,9 +2005,19 @@ GOT_ENTRY_OFFSET = 0x%x, GOT_ENTRY_VMA = 0x%x, for symbol %s\n",
+ got_offset,
h->root.root.string);
- memcpy (htab->splt->contents + h->plt.offset,
- plt_data->elem,
- plt_data->elem_size);
+
+ {
+ int i = 0;
+ uint16_t *ptr = (uint16_t *) plt_data->elem;
+ for (i = 0; i < plt_data->elem_size/2; i++)
+ {
+ uint16_t data = ptr[i];
+ bfd_put_16 (output_bfd,
+ (bfd_vma) data,
+ htab->splt->contents + h->plt.offset + (i*2));
+ }
+ }
+
plt_do_relocs_for_symbol (output_bfd, htab,
plt_data->elem_relocs,
h->plt.offset,
@@ -2045,8 +2055,17 @@ relocate_plt_for_entry (bfd *abfd,
struct plt_version_t *plt_data = arc_get_plt_version (info);
struct elf_link_hash_table *htab = elf_hash_table (info);
- memcpy (htab->splt->contents, plt_data->entry,
- plt_data->entry_size);
+ {
+ int i = 0;
+ uint16_t *ptr = (uint16_t *) plt_data->entry;
+ for (i = 0; i < plt_data->entry_size/2; i++)
+ {
+ uint16_t data = ptr[i];
+ bfd_put_16 (abfd,
+ (bfd_vma) data,
+ htab->splt->contents + (i*2));
+ }
+ }
PLT_DO_RELOCS_FOR_ENTRY (abfd, htab, plt_data->entry_relocs);
}
--
1.9.1
next reply other threads:[~2016-04-04 12:51 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-04-04 12:51 Cupertino Miranda [this message]
2016-04-05 14:32 ` Nick Clifton
2016-04-05 15:28 ` Claudiu Zissulescu
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=EB86EB452ADE4B44B294F7149B8A2777021A5E41@DE02WEMBXB.internal.synopsys.com \
--to=cupertino.miranda@synopsys.com \
--cc=Claudiu.Zissulescu@synopsys.com \
--cc=Francois.Bedard@synopsys.com \
--cc=binutils@sourceware.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).