All of lore.kernel.org
 help / color / mirror / Atom feed
* [Buildroot] [PATCH] imx-usb-loader: fix build with older gcc
@ 2018-06-19 14:44 Baruch Siach
  2018-06-19 20:52 ` Peter Korsgaard
  0 siblings, 1 reply; 4+ messages in thread
From: Baruch Siach @ 2018-06-19 14:44 UTC (permalink / raw)
  To: buildroot

Since the last version bump imx-usb-loader uses __builtin_bswap16 which
is not universally available in gcc older than version 4.8. Add a patch
switching to a local 16-bit bytes swap implementation.

Should fix:
http://autobuild.buildroot.net/results/a63/a63b593b7ef3b6d32e755afe42b77d47dbf0276e/
http://autobuild.buildroot.net/results/48c/48c95cfc65f99fa02be81a11303ba8999f57091a/
http://autobuild.buildroot.net/results/c9d/c9d4f99b49ddb9b2ce08fce7672dd7c70cf62912/

Cc: Adam Duskett <aduskett@gmail.com>
Signed-off-by: Baruch Siach <baruch@tkos.co.il>
---
 ....h-fix-build-with-gcc-older-than-4.8.patch | 42 +++++++++++++++++++
 1 file changed, 42 insertions(+)
 create mode 100644 package/imx-usb-loader/0001-portable.h-fix-build-with-gcc-older-than-4.8.patch

diff --git a/package/imx-usb-loader/0001-portable.h-fix-build-with-gcc-older-than-4.8.patch b/package/imx-usb-loader/0001-portable.h-fix-build-with-gcc-older-than-4.8.patch
new file mode 100644
index 000000000000..c0aabed542c6
--- /dev/null
+++ b/package/imx-usb-loader/0001-portable.h-fix-build-with-gcc-older-than-4.8.patch
@@ -0,0 +1,42 @@
+From c581e6037ec7ab2f9cd615f6ffa149b4d0a5638c Mon Sep 17 00:00:00 2001
+From: Baruch Siach <baruch@tkos.co.il>
+Date: Tue, 19 Jun 2018 15:31:52 +0300
+Subject: [PATCH] portable.h: fix build with gcc older than 4.8
+
+__builtin_bswap16 is available in all gcc architectures only since
+version 4.8. Older gcc versions fail to build:
+
+imx_sdp.o: In function `perform_dcd':
+.../imx_sdp.c:1138: undefined reference to `__builtin_bswap16'
+imx_sdp.o: In function `write_dcd_table_ivt':
+.../imx_sdp.c:457: undefined reference to `__builtin_bswap16'
+imx_sdp.o: In function `write_dcd':
+.../imx_sdp.c:410: undefined reference to `__builtin_bswap16'
+imx_sdp.o: In function `init_header':
+.../imx_sdp.c:1075: undefined reference to `__builtin_bswap16'
+
+Use a local implementation instead.
+
+Signed-off-by: Baruch Siach <baruch@tkos.co.il>
+---
+Upstream status: https://github.com/boundarydevices/imx_usb_loader/pull/82
+
+ portable.h | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/portable.h b/portable.h
+index 364fe47b212a..364832b5ea69 100644
+--- a/portable.h
++++ b/portable.h
+@@ -58,7 +58,7 @@ extern int debugmode;
+ #ifdef __GNUC__
+ #if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__
+ #define BE32(x) __builtin_bswap32(x)
+-#define BE16(x) __builtin_bswap16(x)
++#define BE16(x) (x<<8 | x>>8)
+ #else
+ #define BE32(x) x
+ #define BE16(x) x
+-- 
+2.17.1
+
-- 
2.17.1

^ permalink raw reply related	[flat|nested] 4+ messages in thread

* [Buildroot] [PATCH] imx-usb-loader: fix build with older gcc
  2018-06-19 14:44 [Buildroot] [PATCH] imx-usb-loader: fix build with older gcc Baruch Siach
@ 2018-06-19 20:52 ` Peter Korsgaard
  2018-06-21 21:56   ` Arnout Vandecappelle
  0 siblings, 1 reply; 4+ messages in thread
From: Peter Korsgaard @ 2018-06-19 20:52 UTC (permalink / raw)
  To: buildroot

>>>>> "Baruch" == Baruch Siach <baruch@tkos.co.il> writes:

 > Since the last version bump imx-usb-loader uses __builtin_bswap16 which
 > is not universally available in gcc older than version 4.8. Add a patch
 > switching to a local 16-bit bytes swap implementation.

 > Should fix:
 > http://autobuild.buildroot.net/results/a63/a63b593b7ef3b6d32e755afe42b77d47dbf0276e/
 > http://autobuild.buildroot.net/results/48c/48c95cfc65f99fa02be81a11303ba8999f57091a/
 > http://autobuild.buildroot.net/results/c9d/c9d4f99b49ddb9b2ce08fce7672dd7c70cf62912/

 > Cc: Adam Duskett <aduskett@gmail.com>
 > Signed-off-by: Baruch Siach <baruch@tkos.co.il>
 > ---
 >  ....h-fix-build-with-gcc-older-than-4.8.patch | 42 +++++++++++++++++++
 >  1 file changed, 42 insertions(+)
 >  create mode 100644 package/imx-usb-loader/0001-portable.h-fix-build-with-gcc-older-than-4.8.patch

 > diff --git
 > a/package/imx-usb-loader/0001-portable.h-fix-build-with-gcc-older-than-4.8.patch
 > b/package/imx-usb-loader/0001-portable.h-fix-build-with-gcc-older-than-4.8.patch
 > new file mode 100644
 > index 000000000000..c0aabed542c6
 > --- /dev/null
 > +++ b/package/imx-usb-loader/0001-portable.h-fix-build-with-gcc-older-than-4.8.patch
 > @@ -0,0 +1,42 @@
 > +From c581e6037ec7ab2f9cd615f6ffa149b4d0a5638c Mon Sep 17 00:00:00 2001
 > +From: Baruch Siach <baruch@tkos.co.il>
 > +Date: Tue, 19 Jun 2018 15:31:52 +0300
 > +Subject: [PATCH] portable.h: fix build with gcc older than 4.8
 > +
 > +__builtin_bswap16 is available in all gcc architectures only since
 > +version 4.8. Older gcc versions fail to build:
 > +
 > +imx_sdp.o: In function `perform_dcd':
 > +.../imx_sdp.c:1138: undefined reference to `__builtin_bswap16'
 > +imx_sdp.o: In function `write_dcd_table_ivt':
 > +.../imx_sdp.c:457: undefined reference to `__builtin_bswap16'
 > +imx_sdp.o: In function `write_dcd':
 > +.../imx_sdp.c:410: undefined reference to `__builtin_bswap16'
 > +imx_sdp.o: In function `init_header':
 > +.../imx_sdp.c:1075: undefined reference to `__builtin_bswap16'
 > +
 > +Use a local implementation instead.
 > +
 > +Signed-off-by: Baruch Siach <baruch@tkos.co.il>
 > +---
 > +Upstream status: https://github.com/boundarydevices/imx_usb_loader/pull/82
 > +
 > + portable.h | 2 +-
 > + 1 file changed, 1 insertion(+), 1 deletion(-)
 > +
 > +diff --git a/portable.h b/portable.h
 > +index 364fe47b212a..364832b5ea69 100644
 > +--- a/portable.h
 > ++++ b/portable.h
 > +@@ -58,7 +58,7 @@ extern int debugmode;
 > + #ifdef __GNUC__
 > + #if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__
 > + #define BE32(x) __builtin_bswap32(x)
 > +-#define BE16(x) __builtin_bswap16(x)
 > ++#define BE16(x) (x<<8 | x>>8)

I take it this is never called on anything where the double evaluation
causes any side effects?

Committed, thanks.

-- 
Bye, Peter Korsgaard

^ permalink raw reply	[flat|nested] 4+ messages in thread

* [Buildroot] [PATCH] imx-usb-loader: fix build with older gcc
  2018-06-19 20:52 ` Peter Korsgaard
@ 2018-06-21 21:56   ` Arnout Vandecappelle
  2018-06-22 10:22     ` Peter Korsgaard
  0 siblings, 1 reply; 4+ messages in thread
From: Arnout Vandecappelle @ 2018-06-21 21:56 UTC (permalink / raw)
  To: buildroot



On 19-06-18 22:52, Peter Korsgaard wrote:
>>>>>> "Baruch" == Baruch Siach <baruch@tkos.co.il> writes:
> 
>  > Since the last version bump imx-usb-loader uses __builtin_bswap16 which
>  > is not universally available in gcc older than version 4.8. Add a patch
>  > switching to a local 16-bit bytes swap implementation.
> 
>  > Should fix:
>  > http://autobuild.buildroot.net/results/a63/a63b593b7ef3b6d32e755afe42b77d47dbf0276e/
>  > http://autobuild.buildroot.net/results/48c/48c95cfc65f99fa02be81a11303ba8999f57091a/
>  > http://autobuild.buildroot.net/results/c9d/c9d4f99b49ddb9b2ce08fce7672dd7c70cf62912/
> 
>  > Cc: Adam Duskett <aduskett@gmail.com>
>  > Signed-off-by: Baruch Siach <baruch@tkos.co.il>
>  > ---
>  >  ....h-fix-build-with-gcc-older-than-4.8.patch | 42 +++++++++++++++++++
>  >  1 file changed, 42 insertions(+)
>  >  create mode 100644 package/imx-usb-loader/0001-portable.h-fix-build-with-gcc-older-than-4.8.patch
> 
>  > diff --git
>  > a/package/imx-usb-loader/0001-portable.h-fix-build-with-gcc-older-than-4.8.patch
>  > b/package/imx-usb-loader/0001-portable.h-fix-build-with-gcc-older-than-4.8.patch
>  > new file mode 100644
>  > index 000000000000..c0aabed542c6
>  > --- /dev/null
>  > +++ b/package/imx-usb-loader/0001-portable.h-fix-build-with-gcc-older-than-4.8.patch
>  > @@ -0,0 +1,42 @@
>  > +From c581e6037ec7ab2f9cd615f6ffa149b4d0a5638c Mon Sep 17 00:00:00 2001
>  > +From: Baruch Siach <baruch@tkos.co.il>
>  > +Date: Tue, 19 Jun 2018 15:31:52 +0300
>  > +Subject: [PATCH] portable.h: fix build with gcc older than 4.8
>  > +
>  > +__builtin_bswap16 is available in all gcc architectures only since
>  > +version 4.8. Older gcc versions fail to build:
>  > +
>  > +imx_sdp.o: In function `perform_dcd':
>  > +.../imx_sdp.c:1138: undefined reference to `__builtin_bswap16'
>  > +imx_sdp.o: In function `write_dcd_table_ivt':
>  > +.../imx_sdp.c:457: undefined reference to `__builtin_bswap16'
>  > +imx_sdp.o: In function `write_dcd':
>  > +.../imx_sdp.c:410: undefined reference to `__builtin_bswap16'
>  > +imx_sdp.o: In function `init_header':
>  > +.../imx_sdp.c:1075: undefined reference to `__builtin_bswap16'
>  > +
>  > +Use a local implementation instead.
>  > +
>  > +Signed-off-by: Baruch Siach <baruch@tkos.co.il>
>  > +---
>  > +Upstream status: https://github.com/boundarydevices/imx_usb_loader/pull/82
>  > +
>  > + portable.h | 2 +-
>  > + 1 file changed, 1 insertion(+), 1 deletion(-)
>  > +
>  > +diff --git a/portable.h b/portable.h
>  > +index 364fe47b212a..364832b5ea69 100644
>  > +--- a/portable.h
>  > ++++ b/portable.h
>  > +@@ -58,7 +58,7 @@ extern int debugmode;
>  > + #ifdef __GNUC__
>  > + #if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__
>  > + #define BE32(x) __builtin_bswap32(x)
>  > +-#define BE16(x) __builtin_bswap16(x)
>  > ++#define BE16(x) (x<<8 | x>>8)
> 
> I take it this is never called on anything where the double evaluation
> causes any side effects?

 Even so, x without parenthesis around it is extremely dangerous...

 Since this is inside __GNUC__, we could just use an expression statement like
in the kernel:

#define BE16(x) \
({ \
	typeof(x) __x = (x); \
	(__x<<8 | __x>>8); \
})

 Regards,
 Arnout

> 
> Committed, thanks.
> 

-- 
Arnout Vandecappelle                          arnout at mind be
Senior Embedded Software Architect            +32-16-286500
Essensium/Mind                                http://www.mind.be
G.Geenslaan 9, 3001 Leuven, Belgium           BE 872 984 063 RPR Leuven
LinkedIn profile: http://www.linkedin.com/in/arnoutvandecappelle
GPG fingerprint:  7493 020B C7E3 8618 8DEC 222C 82EB F404 F9AC 0DDF

^ permalink raw reply	[flat|nested] 4+ messages in thread

* [Buildroot] [PATCH] imx-usb-loader: fix build with older gcc
  2018-06-21 21:56   ` Arnout Vandecappelle
@ 2018-06-22 10:22     ` Peter Korsgaard
  0 siblings, 0 replies; 4+ messages in thread
From: Peter Korsgaard @ 2018-06-22 10:22 UTC (permalink / raw)
  To: buildroot

>>>>> "Arnout" == Arnout Vandecappelle <arnout@mind.be> writes:

Hi,

 >> > ++#define BE16(x) (x<<8 | x>>8)
 >> 
 >> I take it this is never called on anything where the double evaluation
 >> causes any side effects?

 >  Even so, x without parenthesis around it is extremely dangerous...

 >  Since this is inside __GNUC__, we could just use an expression statement like
 > in the kernel:

 > #define BE16(x) \
 > ({ \
 > 	typeof(x) __x = (x); \
 > 	(__x<<8 | __x>>8); \
 > })

Correct. Baruch, will you send an update (here and upstream)?

-- 
Bye, Peter Korsgaard

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2018-06-22 10:22 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-06-19 14:44 [Buildroot] [PATCH] imx-usb-loader: fix build with older gcc Baruch Siach
2018-06-19 20:52 ` Peter Korsgaard
2018-06-21 21:56   ` Arnout Vandecappelle
2018-06-22 10:22     ` Peter Korsgaard

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.