From: "Vladimir 'φ-coder/phcoder' Serbinenko" <phcoder@gmail.com>
To: Andrei Borzenkov <arvidjaar@gmail.com>
Cc: The development of GRUB 2 <grub-devel@gnu.org>,
Paulo Flabiano Smorigo <pfsmorigo@linux.vnet.ibm.com>
Subject: Re: [PATCH 1/2] Add powerpc little-endian (ppc64le) flags
Date: Wed, 15 Jul 2015 19:42:39 +0200 [thread overview]
Message-ID: <55A69B8F.4020105@gmail.com> (raw)
In-Reply-To: <20150705203839.124984af@opensuse.site>
[-- Attachment #1.1: Type: text/plain, Size: 699 bytes --]
> It is possible to compile using "--target=powerpc -Wl,-EB" - this works
> on all three ppc, ppc64 and ppc64le, but this means hardcoding GNU ld
> dependency.
>
Thanks for this info.
See attached patch
> So I'd rather try to produce patch for proper support of
> -mbig-endian/-mlittle-endian (including passing it onto gcc linker) and
> until then declared clang on ppc64le having limited support (i.e.
> support for automatic detection by configure).
>
I agree that this is a better approach in long term. But if we can get
some support for current tools with little work (see patch) and without
risks of breaking other tools I see no reason not to go for it in short term
>
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #1.2: be2.diff --]
[-- Type: text/x-diff; name="be2.diff", Size: 2055 bytes --]
diff --git a/configure.ac b/configure.ac
index fd8a62e..113e7c7 100644
--- a/configure.ac
+++ b/configure.ac
@@ -116,6 +116,7 @@ if test "x$with_platform" = x; then
x86_64-*) platform=pc ;;
powerpc-*) platform=ieee1275 ;;
powerpc64-*) platform=ieee1275 ;;
+ powerpc64le-*) platform=ieee1275 ;;
sparc64-*) platform=ieee1275 ;;
mipsel-*) platform=loongson ;;
mips-*) platform=arc ;;
@@ -138,6 +139,7 @@ case "$target_cpu"-"$platform" in
x86_64-none) ;;
x86_64-*) target_cpu=i386 ;;
powerpc64-ieee1275) target_cpu=powerpc ;;
+ powerpc64le-ieee1275) target_cpu=powerpc ;;
esac
# Check if the platform is supported, make final adjustments.
@@ -601,6 +603,37 @@ if test "x$target_cpu" = xi386 && test "x$platform" != xemu; then
TARGET_CFLAGS="$TARGET_CFLAGS -march=i386"
fi
+if test x$target_cpu = xpowerpc; then
+ AC_CACHE_CHECK([for options to get big-endian compilation], grub_cv_target_cc_big_endian, [
+ grub_cv_target_cc_big_endian=no
+ for cand in "-target powerpc -Wl,-EB" "-target powerpc" \
+ "-mbig-endian"; do
+ if test x"$grub_cv_target_cc_big_endian" != xno ; then
+ break
+ fi
+ CFLAGS="$TARGET_CFLAGS $cand -Werror"
+ AC_LINK_IFELSE([AC_LANG_PROGRAM([[
+#if defined(__BYTE_ORDER__) && defined(__ORDER_BIG_ENDIAN__) && (__ORDER_BIG_ENDIAN__ != __BYTE_ORDER__)
+#error still little endian
+#endif
+asm (".globl start; start:");
+void __main (void);
+void __main (void) {}
+int main (void);
+]], [[]])],
+ [grub_cv_target_cc_big_endian="$cand"], [])
+ done
+ ])
+
+ if test x"$grub_cv_target_cc_big_endian" = xno ; then
+ AC_MSG_ERROR([could not force big-endian])
+ fi
+
+ TARGET_CFLAGS="$TARGET_CFLAGS $grub_cv_target_cc_big_endian"
+ TARGET_CCASFLAGS="$TARGET_CCASFLAGS $grub_cv_target_cc_big_endian"
+ TARGET_LDFLAGS="$TARGET_LDFLAGS -static $grub_cv_target_cc_big_endian"
+fi
+
if test "x$target_m32" = x1; then
# Force 32-bit mode.
TARGET_CFLAGS="$TARGET_CFLAGS -m32"
[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 213 bytes --]
next prev parent reply other threads:[~2015-07-15 17:42 UTC|newest]
Thread overview: 23+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-06-30 12:56 [PATCH 0/2] Add remaining parts for ppc64le environment Paulo Flabiano Smorigo
2015-06-30 12:56 ` [PATCH 1/2] Add powerpc little-endian (ppc64le) flags Paulo Flabiano Smorigo
2015-06-30 14:03 ` Vladimir 'phcoder' Serbinenko
2015-06-30 14:29 ` Andrei Borzenkov
2015-06-30 14:33 ` Vladimir 'phcoder' Serbinenko
2015-06-30 18:05 ` Paulo Flabiano Smorigo
2015-06-30 18:28 ` Andrei Borzenkov
2015-06-30 19:34 ` Vladimir 'phcoder' Serbinenko
2015-07-04 6:46 ` Andrei Borzenkov
2015-07-05 17:38 ` Andrei Borzenkov
2015-07-15 17:42 ` Vladimir 'φ-coder/phcoder' Serbinenko [this message]
2015-07-16 18:55 ` Andrei Borzenkov
2015-07-16 19:05 ` Vladimir 'φ-coder/phcoder' Serbinenko
2015-07-16 19:30 ` Andrei Borzenkov
2015-07-20 13:01 ` Paulo Flabiano Smorigo
2015-07-22 3:23 ` Andrei Borzenkov
2015-07-22 17:00 ` Paulo Flabiano Smorigo
2015-07-15 17:36 ` Vladimir 'φ-coder/phcoder' Serbinenko
2015-07-15 16:46 ` Vladimir 'φ-coder/phcoder' Serbinenko
2015-06-30 14:33 ` Paulo Flabiano Smorigo
2015-06-30 12:56 ` [PATCH 2/2] Suport for bi-endianess in elf file Paulo Flabiano Smorigo
2015-06-30 15:03 ` Andrei Borzenkov
2015-06-30 18:06 ` Paulo Flabiano Smorigo
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=55A69B8F.4020105@gmail.com \
--to=phcoder@gmail.com \
--cc=arvidjaar@gmail.com \
--cc=grub-devel@gnu.org \
--cc=pfsmorigo@linux.vnet.ibm.com \
/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.