From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from [140.186.70.92] (port=53512 helo=eggs.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1Otl9G-0002vb-Tf for qemu-devel@nongnu.org; Thu, 09 Sep 2010 13:43:00 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.69) (envelope-from ) id 1Otl9F-0005iA-L8 for qemu-devel@nongnu.org; Thu, 09 Sep 2010 13:42:58 -0400 Received: from moutng.kundenserver.de ([212.227.17.10]:59829) by eggs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1Otl9F-0005hz-AJ for qemu-devel@nongnu.org; Thu, 09 Sep 2010 13:42:57 -0400 Message-ID: <4C891C9E.7030807@mail.berlios.de> Date: Thu, 09 Sep 2010 19:42:54 +0200 From: Stefan Weil MIME-Version: 1.0 Subject: Re: [Qemu-devel] [PATCH] elf: Calculate symbol size if needed References: <1281365033-6893-1-git-send-email-weil@mail.berlios.de> In-Reply-To: Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Blue Swirl Cc: Anthony Liguori , QEMU Developers Am 11.08.2010 18:21, schrieb Blue Swirl: > On Mon, Aug 9, 2010 at 2:43 PM, Stefan Weil wrote: > >> Symbols with a size of 0 are unusable for the disassembler. >> >> Example: >> >> While running an arm linux kernel, no symbolic names are >> used in qemu.log when the cpu is executing an assembler function. >> > That is a problem of the assembler function, it should use '.size' > directive like what happens when C code is compiled. And why just ARM? > > >> Assume that the size of such symbols is the difference to the >> next symbol value. >> >> Signed-off-by: Stefan Weil >> --- >> hw/elf_ops.h | 5 +++++ >> 1 files changed, 5 insertions(+), 0 deletions(-) >> >> diff --git a/hw/elf_ops.h b/hw/elf_ops.h >> index 27d1ab9..0bd7235 100644 >> --- a/hw/elf_ops.h >> +++ b/hw/elf_ops.h >> @@ -153,6 +153,11 @@ static int glue(load_symbols, SZ)(struct elfhdr *ehdr, int fd, int must_swab, >> syms = qemu_realloc(syms, nsyms * sizeof(*syms)); >> >> qsort(syms, nsyms, sizeof(*syms), glue(symcmp, SZ)); >> + for (i = 0; i< nsyms - 1; i++) { >> + if (syms[i].st_size == 0) { >> + syms[i].st_size = syms[i + 1].st_value - syms[i].st_value; >> + } >> + } >> > The size of the last symbol is not guesstimated, it could be assumed > to be _etext - syms[nsyms].st_value. > > >> } else { >> qemu_free(syms); >> syms = NULL; >> -- >> 1.7.1 > The patch is still missing in qemu master. From the two feedbacks I did not read that anything needs to be changed. Was I wrong, or can it be applied?