From: "Vladimir 'φ-coder/phcoder' Serbinenko" <phcoder@gmail.com>
To: The development of GNU GRUB <grub-devel@gnu.org>
Subject: Re: [PATCH 1/2] Add powerpc little-endian (ppc64le) flags
Date: Wed, 15 Jul 2015 18:46:18 +0200 [thread overview]
Message-ID: <55A68E5A.7000204@gmail.com> (raw)
In-Reply-To: <20150630212856.12c56676@opensuse.site>
[-- Attachment #1.1: Type: text/plain, Size: 5364 bytes --]
On 30.06.2015 20:28, Andrei Borzenkov wrote:
> В Tue, 30 Jun 2015 15:05:46 -0300
> Paulo Flabiano Smorigo <pfsmorigo@linux.vnet.ibm.com> пишет:
>
>> On 2015-06-30 11:33, Vladimir 'phcoder' Serbinenko wrote:
>>> What about clang?
>>
>> Not good news about clang support. This is what the toolchain team said
>> about it:
>>
>> The -mbig-endian option was added around April 10th, 2014.
>> Unfortunately, those who implemented it only implemented it for ARM and
>> one other architecture.
>>
>> The option is currently accepted on Power systems, but does not have any
>> affect on the code generation for Power.
>>
>>
>> So, what can we do here? Maybe add a constrain in the configure file
>> saying that it's not possible to build GRUB in a LE environment using clang.
>
> If I understand it correctly, it is possible to build for big-endian
> PowerPC using
>
> clang -target=powerpc
>
@pfsmorigo. Please try attached patch
> but then we depend on clang being built with BE target support; and
> e.g. openSUSE builds it with
>
> cmake -G "Ninja" \
> -DBUILD_SHARED_LIBS=OFF \
> -DCMAKE_BUILD_TYPE=Release \
> -DLLVM_ENABLE_ASSERTIONS=OFF \
> -DLLVM_TARGETS_TO_BUILD=host \
> -DCMAKE_C_FLAGS="-O0" \
> -DCMAKE_CXX_FLAGS="-O0" \
> -DLLVM_HOST_TRIPLE=%{host_triple} \
>
> so as I understand on ppc64le it does not build support for any other
> target. Actually openSUSE does not even build clang on ppc at all.
>
>
>
>>>
>>> Le 30 juin 2015 16:30, "Andrei Borzenkov" <arvidjaar@gmail.com
>>> <mailto:arvidjaar@gmail.com>> a écrit :
>>>
>>> On Tue, Jun 30, 2015 at 5:03 PM, Vladimir 'phcoder' Serbinenko
>>> <phcoder@gmail.com <mailto:phcoder@gmail.com>> wrote:
>>> > Which compilers support these flags? I'm concerned of breaking
>>> old compilers
>>> >
>>>
>>> -static and -mbig-endian are listed in gcc 2.95.3 documentation for PPC.
>>>
>>> > Le 30 juin 2015 14:57, "Paulo Flabiano Smorigo"
>>> > <pfsmorigo@linux.vnet.ibm.com
>>> <mailto:pfsmorigo@linux.vnet.ibm.com>> a écrit :
>>> >>
>>> >> libgcc dependency was removed *just* for this target because
>>> >> the distros that use ppc64el doesn't have 32-bit support on it.
>>> >>
>>> >> * configure.ac <http://configure.ac>: Add targets for
>>> powerpc64el and skip libgcc.
>>> >> * Makefile.am: Likewise.
>>> >> ---
>>> >> configure.ac <http://configure.ac> | 8 ++++++++
>>> >> 1 file changed, 8 insertions(+)
>>> >>
>>> >> diff --git a/configure.ac <http://configure.ac> b/configure.ac
>>> <http://configure.ac>
>>> >> index fd8a62e..0a79fad 100644
>>> >> --- a/configure.ac <http://configure.ac>
>>> >> +++ b/configure.ac <http://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,12 @@ 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
>>> >> + TARGET_CFLAGS="$TARGET_CFLAGS -mbig-endian"
>>> >> + TARGET_CCASFLAGS="$TARGET_CCASFLAGS -mbig-endian"
>>> >> + TARGET_LDFLAGS="$TARGET_LDFLAGS -static -mbig-endian"
>>> >> +fi
>>> >> +
>>> >> if test "x$target_m32" = x1; then
>>> >> # Force 32-bit mode.
>>> >> TARGET_CFLAGS="$TARGET_CFLAGS -m32"
>>> >> --
>>> >> 2.1.0
>>> >>
>>> >>
>>> >> _______________________________________________
>>> >> Grub-devel mailing list
>>> >> Grub-devel@gnu.org <mailto:Grub-devel@gnu.org>
>>> >> https://lists.gnu.org/mailman/listinfo/grub-devel
>>> >
>>> >
>>> > _______________________________________________
>>> > Grub-devel mailing list
>>> > Grub-devel@gnu.org <mailto:Grub-devel@gnu.org>
>>> > https://lists.gnu.org/mailman/listinfo/grub-devel
>>> >
>>>
>>> _______________________________________________
>>> Grub-devel mailing list
>>> Grub-devel@gnu.org <mailto:Grub-devel@gnu.org>
>>> https://lists.gnu.org/mailman/listinfo/grub-devel
>>>
>>>
>>>
>>> _______________________________________________
>>> Grub-devel mailing list
>>> Grub-devel@gnu.org
>>> https://lists.gnu.org/mailman/listinfo/grub-devel
>>>
>>
>>
>
>
> _______________________________________________
> Grub-devel mailing list
> Grub-devel@gnu.org
> https://lists.gnu.org/mailman/listinfo/grub-devel
>
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #1.2: be.diff --]
[-- Type: text/x-diff; name="be.diff", Size: 1935 bytes --]
diff --git a/configure.ac b/configure.ac
index fd8a62e..a4ee419 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,33 @@ 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" \
+ "-mbig-endian"; do
+ if test x"$grub_cv_target_cc_big_endian" != xno ; then
+ break
+ fi
+ CFLAGS="$TARGET_CFLAGS $cand -Werror"
+ AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
+#if defined(__BYTE_ORDER__) && defined(__ORDER_BIG_ENDIAN__) && (__ORDER_BIG_ENDIAN__ != __BYTE_ORDER__)
+#error still little endian
+#endif
+]], [[]])],
+ [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 16:46 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
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 [this message]
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=55A68E5A.7000204@gmail.com \
--to=phcoder@gmail.com \
--cc=grub-devel@gnu.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.