All of lore.kernel.org
 help / color / mirror / Atom feed
From: Tom Musta <tommusta@gmail.com>
To: "Andreas Färber" <afaerber@suse.de>,
	qemu-devel@nongnu.org, qemu-ppc@nongnu.org
Cc: riku.voipio@iki.fi
Subject: Re: [Qemu-devel] [PATCH] linux-user: Do not subtract offset from end address
Date: Mon, 10 Nov 2014 11:53:01 -0600	[thread overview]
Message-ID: <5460FB7D.80406@gmail.com> (raw)
In-Reply-To: <545EB3C1.2090603@suse.de>

On 11/8/2014 6:22 PM, Andreas Färber wrote:
> Am 06.11.2014 um 20:43 schrieb Tom Musta:
>> When computing the upper address of a program segment, do not subtract the
>> offset from the virtual address; instead compute the sum of the virtual address
>> and the memory size.
> 
> Note that this reads a bit weird as both old and new code are adding,
> not subtracting.
> 
> Regards,
> Andreas
> 

I agree that it is not obvious from the patch, which needed one more line of
context:

            abi_ulong a = phdr[i].p_vaddr - phdr[i].p_offset;
            if (a < loaddr) {
                loaddr = a;
            }
            a = phdr[i].p_vaddr + phdr[i].p_memsz;
            if (a > hiaddr) {
                hiaddr = a;
            }

I think the description accurately captures what is being changed in the code.
But if you still disagree, I will reword and respin V2.

>>
>> Signed-off-by: Tom Musta <tommusta@gmail.com>
>> ---
>>
>> Please include this patch in QEMU 2.2.  
>>
>> Commit a93934fecd4dffc9d4b452b670c9506be5dea30d injected a regression of Linux
>> User Mode that I was able to detect on PowerPC 64 (but not x86).  I suspect that
>> large page size on the host has something to do with it.  In any case, that commit
>> adjusted the lower address of a program segment by the program header's offset 
>> field.  However, it also inadvertantly adjusted the upper address by the offset also.
>>
>>  linux-user/elfload.c |    2 +-
>>  1 files changed, 1 insertions(+), 1 deletions(-)
>>
>> diff --git a/linux-user/elfload.c b/linux-user/elfload.c
>> index 84123ba..e2596a4 100644
>> --- a/linux-user/elfload.c
>> +++ b/linux-user/elfload.c
>> @@ -1824,7 +1824,7 @@ static void load_elf_image(const char *image_name, int image_fd,
>>              if (a < loaddr) {
>>                  loaddr = a;
>>              }
>> -            a += phdr[i].p_memsz;
>> +            a = phdr[i].p_vaddr + phdr[i].p_memsz;
>>              if (a > hiaddr) {
>>                  hiaddr = a;
>>              }
>>
> 
> 

      reply	other threads:[~2014-11-10 17:53 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-11-06 19:43 [Qemu-devel] [PATCH] linux-user: Do not subtract offset from end address Tom Musta
2014-11-07  7:23 ` Riku Voipio
2014-11-07 12:55   ` Jonas Maebe
2014-11-09  0:22 ` Andreas Färber
2014-11-10 17:53   ` Tom Musta [this message]

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=5460FB7D.80406@gmail.com \
    --to=tommusta@gmail.com \
    --cc=afaerber@suse.de \
    --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.