Am 15.02.2016 um 15:53 schrieb Oded Gabbay:
Sent with MailTrack

On Sat, Feb 13, 2016 at 2:39 AM, Roland Scheidegger <srol...@vmware.com> wrote:
Am 12.02.2016 um 10:01 schrieb Jochen Rollwagen:
Hi,

i think i found & fixed a bug in mesa concerning tests for big-endian
machines. The defines tested don't exist or are wrongly defined so the
test (probably) never fires. The gcc defines on my machine concerning
big-endian are

jochen@mac-mini:~/sources/mesa$ gcc -dM -E - < /dev/null | grep BIG
#define __BIGGEST_ALIGNMENT__ 16
#define __BIG_ENDIAN__ 1
#define __FLOAT_WORD_ORDER__ __ORDER_BIG_ENDIAN__
#define _BIG_ENDIAN 1
#define __ORDER_BIG_ENDIAN__ 4321
#define __BYTE_ORDER__ __ORDER_BIG_ENDIAN__

The tested values in current mesa are quite different :-)

The following patch fixes this.

diff --git a/src/mesa/main/compiler.h b/src/mesa/main/compiler.h
index c5ee741..99c63cb 100644
--- a/src/mesa/main/compiler.h
+++ b/src/mesa/main/compiler.h
@@ -52,7 +52,7 @@ extern "C" {
   * Try to use a runtime test instead.
   * For now, only used by some DRI hardware drivers for color/texel
packing.
   */
-#if defined(BYTE_ORDER) && defined(BIG_ENDIAN) && BYTE_ORDER == BIG_ENDIAN
+#if defined(__BYTE_ORDER__) && defined(__BIG_ENDIAN__) &&
__BYTE_ORDER__ == __ORDER_BIG_ENDIAN__
  #if defined(__linux__)
  #include <byteswap.h>
  #define CPU_TO_LE32( x )       bswap_32( x )

Note that on some platforms this file would include endian.h - which
defines those BYTE_ORDER etc. values. Albeit it includes this _after_
these ifdefs...
But don't ask me how this is really supposed to work...

Roland
<stdlib.h> includes <bits/waitstatus.h> which includes <endian.h>

However, this depends on the c/h files to include <stdlib.h> before
including "compiler.h", which doesn't always happen (e.g
dummy_errors.c) and it is a very fragile situation.

So I think this is a good fix and this patch is:
Reviewed-by: Oded Gabbay <oded.gab...@gmail.com>

Jochen,

Note that I downloaded this patch from pw and it was malformed. I
don't know if its a pw problem or a problem in how you sent the patch
to the ml.

     Oded



_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-dev
Well, i just copied it from the git-diff-terminal and pasted it into my mail-client. Maybe a newline problem ? Anyway, i attached the patch (and patched my local mesa with it before, which worked :-) ).

Cheers

Jochen
diff --git a/src/mesa/main/compiler.h b/src/mesa/main/compiler.h
index c5ee741..99c63cb 100644
--- a/src/mesa/main/compiler.h
+++ b/src/mesa/main/compiler.h
@@ -52,7 +52,7 @@ extern "C" {
  * Try to use a runtime test instead.
  * For now, only used by some DRI hardware drivers for color/texel packing.
  */
-#if defined(BYTE_ORDER) && defined(BIG_ENDIAN) && BYTE_ORDER == BIG_ENDIAN
+#if defined(__BYTE_ORDER__) && defined(__BIG_ENDIAN__) && __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__
 #if defined(__linux__)
 #include <byteswap.h>
 #define CPU_TO_LE32( x )       bswap_32( x )
_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to