All of lore.kernel.org
 help / color / mirror / Atom feed
From: Stefan Weil <weil@mail.berlios.de>
To: qemu-devel@nongnu.org, Blue Swirl <blauwirbel@gmail.com>
Subject: Re: [Qemu-devel] [PATCH] Improve symbol lookup
Date: Thu, 16 Oct 2008 22:32:22 +0200	[thread overview]
Message-ID: <48F7A4D6.8070405@mail.berlios.de> (raw)
In-Reply-To: <48F79CB9.4090602@mail.berlios.de>

Stefan Weil schrieb:
> Blue Swirl schrieb:
>   
>> On 10/2/08, Stefan Weil <weil@mail.berlios.de> wrote:
>>     
>>> For 64 bit targets, lookup_symbol() compares a 64-bit target address
>>> with a 32 bit symbol address. This only works for addresses less than
>>> 2^32.
>>>
>>> MIPS64 kernels use addresses larger than 0xffffffff80000000,
>>> so qemu.log never shows symbolic names.
>>>
>>> My patch is a workaround which works with Qemu's 32 bit address hack.
>>> Please apply it to Qemu trunk.
>>>       
>> This applies to all architectures, not just MIPS64, so it need not be
>> conditional to TARGET_MIPS64.
>>
>>     
>>> Maybe a better solution would use symbol addresses without shortening
>>> them to 32 bits.
>>>       
> Here is the better solution (at least I hope so).
>   
>> Yes. That would mean using elf_sym instead of Elf32_sym in places
>> where symbols are used and removing the SZ==64 hacks in elf_ops.h.
>>
>>     
> So I did. Here is a short summary of my new patch:
>
> * Use function pointers for symbol lookup (currently for elf32 and
> elf64, could be expanded).
>   This also fixes the bug with mips elf64 symbols in current Qemu trunk.
>
> * Use quicksort and binary search for symbol lookup.
>
> * Remove unneeded entries from symbol table.
>   This reduced a typical table size (linux mips kernel) from 1764487 to
> 11656 entries.
>
> * In disas.c, the patch also fixes some warnings from old fashioned
> function prototypes.
>
> In loader.c, two defines control some compile time options (could be
> removed in
> production code):
> #define CONFIG_BINARY_SYMBOL_SEARCH
> #define CONFIG_REDUCE_SYMBOL_TABLE
>
> I tested the new code using 32 bit and 64 bit linux mips kernels and
> Qemu logging (-d in_asm).
> The speed improvement is extremely large - both because of the much
> smaller table and
> the binary search.
>
> Stefan
>
>   
Please note:

The current patch only supports system emulation.
User emulation needs more fixes to compile again.

Stefan

  reply	other threads:[~2008-10-16 20:32 UTC|newest]

Thread overview: 13+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-10-02 19:26 [Qemu-devel] [PATCH] Fix symbol lookup for mips64* targets Stefan Weil
2008-10-02 19:53 ` Blue Swirl
2008-10-16 19:57   ` [Qemu-devel] [PATCH] Improve symbol lookup (was: Re: [Qemu-devel] [PATCH] Fix symbol lookup for mips64* targets) Stefan Weil
2008-10-16 20:32     ` Stefan Weil [this message]
2008-10-16 20:41       ` [Qemu-devel] [PATCH] Improve symbol lookup Laurent Desnogues
2008-10-17 17:28       ` [Qemu-devel] [PATCH] Improve symbol lookup for system and user mode Stefan Weil
2008-10-20 17:16         ` Blue Swirl
2008-10-16 20:38     ` [Qemu-devel] [PATCH] Improve symbol lookup (was: Re: [Qemu-devel] [PATCH] Fix symbol lookup for mips64* targets) Laurent Desnogues
2008-10-02 21:52 ` [Qemu-devel] [PATCH] Fix symbol lookup for mips64* targets Thiemo Seufer
2008-10-03 10:09   ` Stefan Weil
2008-10-03 10:29     ` Laurent Desnogues
2008-10-03 17:14       ` Blue Swirl
2008-10-03 17:13     ` Blue Swirl

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=48F7A4D6.8070405@mail.berlios.de \
    --to=weil@mail.berlios.de \
    --cc=blauwirbel@gmail.com \
    --cc=qemu-devel@nongnu.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 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.