All of lore.kernel.org
 help / color / mirror / Atom feed
From: Paul Mundt <lethal@linux-sh.org>
To: Steven Rostedt <rostedt@goodmis.org>, Ingo Molnar <mingo@elte.hu>
Cc: linux-kernel@vger.kernel.org
Subject: Detecting endianness in scripts/recordmcount.pl?
Date: Wed, 26 Nov 2008 17:39:05 +0900	[thread overview]
Message-ID: <20081126083905.GA20472@linux-sh.org> (raw)

Presently there doesn't seem to be any way to determine whether the
target is big or little endian, and it is assumed that the compiler will
do the right thing by default. Unfortunately this can not be assumed,
and mismatches ensue, resulting in the linker bailing out.

The only obvious solution I saw was to pass in KBUILD_CFLAGS and ld_flags
along with $(CC) and $(LD) to the script, and killing off the hardcoded
flags. This at least gets things building, but that still leaves objcopy
and objdump as the odd ones out. On the other hand, the format can be figured
out by objdumping the object and reading in the file format line, but people
obviously do not have consistent naming for these, and a double-pass would
be needed -- once for establishing little or big, followed by figuring out
which set of regexes to use.

The CONFIG_64BIT test could likewise be adopted for testing endianness, but
not all architectures have config options for endian selections. Likewise, a
simple test program to check if __LITTLE_ENDIAN is set or not won't work
without having knowledge of KBUILD_CFLAGS, in which case it seems saner just
to pass it off as a starting point.

Any better ideas?

---

diff --git a/scripts/Makefile.build b/scripts/Makefile.build
index 7a17677..de2cc42 100644
--- a/scripts/Makefile.build
+++ b/scripts/Makefile.build
@@ -201,7 +201,8 @@ endif
 ifdef CONFIG_FTRACE_MCOUNT_RECORD
 cmd_record_mcount = perl $(srctree)/scripts/recordmcount.pl "$(ARCH)" \
 	"$(if $(CONFIG_64BIT),64,32)" \
-	"$(OBJDUMP)" "$(OBJCOPY)" "$(CC)" "$(LD)" "$(NM)" "$(RM)" "$(MV)" "$(@)";
+	"$(OBJDUMP)" "$(OBJCOPY)" "$(CC) $(KBUILD_CFLAGS)" \
+	"$(LD) $(ld_flags)" "$(NM)" "$(RM)" "$(MV)" "$(@)";
 endif
 
 define rule_cc_o_c

             reply	other threads:[~2008-11-26  8:40 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-11-26  8:39 Paul Mundt [this message]
2008-11-26  9:17 ` Detecting endianness in scripts/recordmcount.pl? Paul Mundt
2008-11-26 12:24   ` Steven Rostedt
2008-11-26 13:54 ` Sam Ravnborg
2008-11-26 17:13   ` Steven Rostedt
2008-11-26 17:39     ` Sam Ravnborg

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=20081126083905.GA20472@linux-sh.org \
    --to=lethal@linux-sh.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mingo@elte.hu \
    --cc=rostedt@goodmis.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.