From: Alexander Graf <agraf@suse.de>
To: "\"Doug Kwan (關振德)\"" <dougkwan@google.com>
Cc: Ulrich Weigand <Ulrich.Weigand@de.ibm.com>,
riku.voipio@iki.fi, "qemu-ppc@nongnu.org" <qemu-ppc@nongnu.org>,
QEMU Developers <qemu-devel@nongnu.org>
Subject: Re: [Qemu-devel] [PATCH 1/3] linux-user: Handle ELFv2 PPC64 binaries in user mode.
Date: Thu, 08 May 2014 10:45:24 +0200 [thread overview]
Message-ID: <536B4424.1040908@suse.de> (raw)
In-Reply-To: <CAH9SEo4efQJqm5bx96JizNXNvK0KunDE9cxvShi4VsCsZgbgnQ@mail.gmail.com>
On 05/08/2014 10:43 AM, Doug Kwan (關振德) wrote:
> Hi
>
>
> On Thu, May 8, 2014 at 1:36 AM, Alexander Graf <agraf@suse.de
> <mailto:agraf@suse.de>> wrote: 3
>
>
> Please write bitmasks in hex.
>
> Will fix.
>
> +
> /* PowerPC relocations defined by the ABIs */
> #define R_PPC_NONE 0
> #define R_PPC_ADDR32 1 /* 32bit absolute
> address */
> diff --git a/linux-user/elfload.c b/linux-user/elfload.c
> index 995f999..b96d64a 100644
> --- a/linux-user/elfload.c
> +++ b/linux-user/elfload.c
> @@ -777,12 +777,18 @@ static uint32_t get_elf_hwcap(void)
> NEW_AUX_ENT(AT_IGNOREPPC, AT_IGNOREPPC); \
> } while (0)
> +static inline uint32_t get_ppc64_abi(struct image_info *infop);
> +
> static inline void init_thread(struct target_pt_regs *_regs,
> struct image_info *infop)
> {
> _regs->gpr[1] = infop->start_stack;
> #if defined(TARGET_PPC64) && !defined(TARGET_ABI32)
> - _regs->gpr[2] = ldq_raw(infop->entry + 8) + infop->load_bias;
> - infop->entry = ldq_raw(infop->entry) + infop->load_bias;
> + if (get_ppc64_abi(infop) < 2) {
> + _regs->gpr[2] = ldq_raw(infop->entry + 8) +
> infop->load_bias;
> + infop->entry = ldq_raw(infop->entry) + infop->load_bias;
> + } else {
> + _regs->gpr[12] = infop->entry; /* r12 set to global
> entry address */
>
>
> Uli, is this correct? Also, why don't w need to adjust for the
> load_bias with ELFv2 anymore?
>
> No. This is a bug. It was not caught by testing because load_bias is
> 0 I guess.
>
>
> + }
> #endif
> _regs->nip = infop->entry;
> }
> @@ -1152,6 +1158,13 @@ static inline void init_thread(struct
> target_pt_regs *regs, struct image_info *i
> #include "elf.h"
> +#ifdef TARGET_PPC
> +static inline uint32_t get_ppc64_abi(struct image_info *infop)
> +{
> + return infop->elf_flags & EF_PPC64_ABI;
> +}
> +#endif
>
>
> I'm not sure this is more readable than doing it inline ... :).
>
>
> This is done so because the elf header is not yet included before the
> callee. To eliminate this I need to move the include before ppc's
> init_thread. Is that okay?
Ah, I see. I don't have strong feelings either way. Riku, what would you
prefer?
Alex
next prev parent reply other threads:[~2014-05-08 8:45 UTC|newest]
Thread overview: 33+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-05-08 8:26 [Qemu-devel] [PATCH 0/3] Adding new user mode target ppc64el-linux-user Doug Kwan
2014-05-08 8:26 ` [Qemu-devel] [PATCH 1/3] linux-user: Handle ELFv2 PPC64 binaries in user mode Doug Kwan
2014-05-08 8:36 ` Alexander Graf
2014-05-08 8:43 ` Doug Kwan (關振德)
2014-05-08 8:45 ` Alexander Graf [this message]
2014-05-08 13:30 ` Ulrich Weigand
2014-05-08 8:26 ` [Qemu-devel] [PATCH 2/3] PPC: Allow little-endian " Doug Kwan
2014-05-08 8:39 ` Alexander Graf
2014-05-08 8:49 ` Doug Kwan (關振德)
2014-05-08 8:55 ` Alexander Graf
2014-05-08 9:05 ` Doug Kwan (關振德)
2014-05-08 9:11 ` Alexander Graf
2014-05-08 9:24 ` Doug Kwan (關振德)
2014-05-08 12:39 ` Peter Maydell
2014-05-08 12:44 ` Alexander Graf
2014-05-08 8:26 ` [Qemu-devel] [PATCH 3/3] configure: Add new target ppc64el-linux-user Doug Kwan
2014-05-08 8:41 ` Alexander Graf
2014-05-08 8:46 ` Doug Kwan (關振德)
2014-05-08 8:56 ` Alexander Graf
2014-05-08 9:09 ` Doug Kwan (關振德)
2014-05-08 12:18 ` Andreas Färber
2014-05-08 12:28 ` Peter Maydell
2014-05-08 12:45 ` Alexander Graf
2014-05-08 15:57 ` Doug Kwan (關振德)
2014-05-08 14:41 ` Tom Musta
2014-05-08 15:19 ` Doug Kwan (關振德)
2014-05-08 15:25 ` Peter Maydell
2014-05-08 15:32 ` Doug Kwan (關振德)
2014-05-08 15:41 ` Peter Maydell
2014-05-08 15:51 ` Doug Kwan (關振德)
2014-05-08 15:56 ` Peter Maydell
2014-05-08 15:39 ` Tom Musta
2014-05-08 15:43 ` Peter Maydell
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=536B4424.1040908@suse.de \
--to=agraf@suse.de \
--cc=Ulrich.Weigand@de.ibm.com \
--cc=dougkwan@google.com \
--cc=qemu-devel@nongnu.org \
--cc=qemu-ppc@nongnu.org \
--cc=riku.voipio@iki.fi \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.