| To: | wu zhangjin <wuzhangjin@gmail.com> |
|---|---|
| Subject: | Re: Build failure triggered by recordmcount |
| From: | Arnaud Lacombe <lacombar@gmail.com> |
| Date: | Mon, 22 Nov 2010 13:46:54 -0500 |
| Cc: | John Reiser <jreiser@bitwagon.com>, Steven Rostedt <rostedt@goodmis.org>, linux-mips@linux-mips.org |
| Dkim-signature: | v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:received:received:in-reply-to :references:date:message-id:subject:from:to:cc:content-type :content-transfer-encoding; bh=vpyPoD86GmieFhbJ5NE8lrs8DREBvIGxXxNh5DY4D9c=; b=N/v2fE6cWZqxCYBxeR3/xM1kkKzFxxIeD6cAE4yk7SwV2eqlmwEfppUghM4A6K18ZW RZIg4QJIgtBKnTM0zOlrxguuButeHi8i9VQ8QWgxCFKkZBr6ZOeKRrZjKeUoYB/+beWh rxPTWk0ROHqGSlCy4NvKgbYjxdiEVOH1cRhXI= |
| Domainkey-signature: | a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type:content-transfer-encoding; b=AmYTM8vGDKipSk1X/4kF1CPwRMwW+y/Oq1aoEJxeiTe7yWHMMQvGkpIfoCF4IQ0Dw1 tVCYF6SmkF0fDTVa86Vofg75Eu96gG1QfP0D5oTKYsJrxgfG6hOy5j58JXMT8KBeU3r/ CpoitqzA1a8QXYRDrj9SIV807jaDbOZqhfsZs= |
| In-reply-to: | <AANLkTikaUxKqsqXKYpETOnWAMuCi5gp30ANux0RQuK6Z@mail.gmail.com> |
| Original-recipient: | rfc822;linux-mips@linux-mips.org |
| References: | <AANLkTikjbP89qp24u1Pw6zcsyV7WcYYtmR0Yt3yCaXoh@mail.gmail.com> <AANLkTim-+1csKoCc7kqXERmLZRSt9LAAB=JPK+0gaYPo@mail.gmail.com> <AANLkTikaUxKqsqXKYpETOnWAMuCi5gp30ANux0RQuK6Z@mail.gmail.com> |
| Sender: | linux-mips-bounce@linux-mips.org |
Hi,
On Mon, Nov 22, 2010 at 9:57 AM, wu zhangjin <wuzhangjin@gmail.com> wrote:
> Hi,
>
> The cause should be the endian problem, I guess you were cross-compiling it?
>
yes.
> If we compile the kernel for (32bit + big endian) target on an x86
> machine(little endian) or reversely, then, it will fail.
>
> Since the scripts/recordmcount is compiled with the local toolchain,
> the data structs will be explained according to the local
> configuration(endian...).
>
will it ? recordmcount.c does not switch endianness based on the host,
but based on format of the object file, see the switch
(ehdr->e_ident[EI_DATA]) { ... } in do_file(), the result does also
depend a runtime endianness check.
> So, we may need to custom our own elf.h for recordmcount according to
> the target type(endian here) of the kernel image:
>
> At first, pass the target information to recordmcount(only a demo
> here, we may need to clear it carefully):
>
> diff --git a/scripts/Makefile b/scripts/Makefile
> index 2e08810..151fe3e 100644
> --- a/scripts/Makefile
> +++ b/scripts/Makefile
> @@ -11,6 +11,9 @@ hostprogs-$(CONFIG_KALLSYMS) += kallsyms
> hostprogs-$(CONFIG_LOGO) += pnmtologo
> hostprogs-$(CONFIG_VT) += conmakehash
> hostprogs-$(CONFIG_IKCONFIG) += bin2c
> +HOSTCFLAGS_recordmcount.o += -DARCH=__$(ARCH)__ \
> + -DBIT=__$(if $(CONFIG_64BIT),64,32)__ \
> + -DENDIAN=__$(if $(CONFIG_CPU_BIG_ENDIAN),big,little)__
> hostprogs-$(BUILD_C_RECORDMCOUNT) += recordmcount
>
> always := $(hostprogs-y) $(hostprogs-m)
>
hum,
% grep "BIT\|ENDIAN" scripts/recordmcount.*
scripts/recordmcount.h: mcsec.sh_type = w(SHT_PROGBITS);
scripts/recordmcount.h: if (SHT_PROGBITS != w(txthdr->sh_type) ||
so none these macro are not checked explicitly, and headers included
should not either.
- Arnaud
|
| <Prev in Thread] | Current Thread | [Next in Thread> |
|---|---|---|
| ||
| Previous by Date: | Re: [PATCH] MIPS: ASID conflict after CPU hotplug, Maksim Rayskiy |
|---|---|
| Next by Date: | Re: [PATCH] MIPS: JZ4740: Fix pcm device name, Ralf Baechle |
| Previous by Thread: | Re: Build failure triggered by recordmcount, wu zhangjin |
| Next by Thread: | Re: Build failure triggered by recordmcount, John Reiser |
| Indexes: | [Date] [Thread] [Top] [All Lists] |