Buildroot Archive on lore.kernel.org
 help / color / mirror / Atom feed
* [Buildroot] [PATCH] dt: fix binary operation errors
@ 2016-03-05  0:52 Sergio Prado
  2016-03-08 13:51 ` Gustavo Zacarias
  0 siblings, 1 reply; 2+ messages in thread
From: Sergio Prado @ 2016-03-05  0:52 UTC (permalink / raw)
  To: buildroot

Some GCC toolchains does not define _BSD_SOURCE when passing -D_GNU_SOURCE, and
that is causing the declaration of large_t as double.

In that case, GCC is complaining in some binary operations like the code below:

dtgen.c:1653:59: error: invalid operands to binary % (have ?large_t? and ?u_int32?)
   (dip->di_data_limit != INFINITY) && (dip->di_data_limit % dip->di_dsize) ) {
                                                           ^

This patch adds a statement in the include file to define large_t as
"long long int" when __GNUC__ is defined.

Fixes:
http://autobuild.buildroot.net/results/e7b803bd007c125e23eeae351acfc08628333706
http://autobuild.buildroot.net/results/72ca2970db41463435765b90c069417b8bb8a3fd
http://autobuild.buildroot.net/results/22d18f0ca19898be02118c64e615ffbbb23ee46d
http://autobuild.buildroot.net/results/ab50d1d4af47b026da77a81224500a4627c718ac
...

Signed-off-by: Sergio Prado <sergio.prado@e-labworks.com>
---
 package/dt/0002-Fix-binary-operations-errors.patch | 50 ++++++++++++++++++++++
 1 file changed, 50 insertions(+)
 create mode 100644 package/dt/0002-Fix-binary-operations-errors.patch

diff --git a/package/dt/0002-Fix-binary-operations-errors.patch b/package/dt/0002-Fix-binary-operations-errors.patch
new file mode 100644
index 000000000000..ed938ec98e47
--- /dev/null
+++ b/package/dt/0002-Fix-binary-operations-errors.patch
@@ -0,0 +1,50 @@
+From 80bbf34b032bf11647d87ea07c1a0c5cf7f87957 Mon Sep 17 00:00:00 2001
+From: Sergio Prado <sergio.prado@e-labworks.com>
+Date: Fri, 4 Mar 2016 21:25:02 -0300
+Subject: [PATCH] Fix binary operations errors
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Some GCC toolchains does not define _BSD_SOURCE when passing -D_GNU_SOURCE, and that is causing the declaration of large_t as double.
+
+In that case, GCC is complaining in some binary operations like the code below:
+
+dtgen.c:1653:59: error: invalid operands to binary % (have ?large_t? and ?u_int32?)
+   (dip->di_data_limit != INFINITY) && (dip->di_data_limit % dip->di_dsize) ) {
+                                                           ^
+
+So we need to add a statement to force large_t as "long long int" when __GNUC__ is defined.
+
+Signed-off-by: Sergio Prado <sergio.prado@e-labworks.com>
+---
+ common.h | 9 ++++++++-
+ 1 file changed, 8 insertions(+), 1 deletion(-)
+
+diff --git a/common.h b/common.h
+index 0cf9dc2145ee..a702d2d8dcff 100644
+--- a/common.h
++++ b/common.h
+@@ -170,11 +170,18 @@ typedef volatile slarge_t 	 v_slarge;
+ #define FUF	 LUF 
+ #define FXF	 LXF 
+ 
+-#else /* !defined(MACHINE_64BITS) && !defined(__GNUC__) */
++#else /* !defined(MACHINE_64BITS) */
+ 
++#if (defined(__GNUC__))
++#define QuadIsLongLong
++typedef unsigned long long int  large_t;
++typedef signed long long int    slarge_t;
++#else
+ #define QuadIsDouble
+ typedef double			large_t;
+ typedef double			slarge_t;
++#endif
++
+ typedef volatile large_t	v_large;
+ typedef volatile slarge_t	v_slarge;
+ 
+-- 
+1.9.1
+
-- 
1.9.1

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

* [Buildroot] [PATCH] dt: fix binary operation errors
  2016-03-05  0:52 [Buildroot] [PATCH] dt: fix binary operation errors Sergio Prado
@ 2016-03-08 13:51 ` Gustavo Zacarias
  0 siblings, 0 replies; 2+ messages in thread
From: Gustavo Zacarias @ 2016-03-08 13:51 UTC (permalink / raw)
  To: buildroot

On 04/03/16 21:52, Sergio Prado wrote:

> Some GCC toolchains does not define _BSD_SOURCE when passing -D_GNU_SOURCE, and
> that is causing the declaration of large_t as double.
>
> In that case, GCC is complaining in some binary operations like the code below:
>
> dtgen.c:1653:59: error: invalid operands to binary % (have ?large_t? and ?u_int32?)
>     (dip->di_data_limit != INFINITY) && (dip->di_data_limit % dip->di_dsize) ) {
>                                                             ^
>
> This patch adds a statement in the include file to define large_t as
> "long long int" when __GNUC__ is defined.
>
> Fixes:
> http://autobuild.buildroot.net/results/e7b803bd007c125e23eeae351acfc08628333706
> http://autobuild.buildroot.net/results/72ca2970db41463435765b90c069417b8bb8a3fd
> http://autobuild.buildroot.net/results/22d18f0ca19898be02118c64e615ffbbb23ee46d
> http://autobuild.buildroot.net/results/ab50d1d4af47b026da77a81224500a4627c718ac
> ...
>
> Signed-off-by: Sergio Prado <sergio.prado@e-labworks.com>

Hi Sergio.
Actually the correct fix is detecting/using _DEFAULT_SOURCE :
http://pkgs.fedoraproject.org/cgit/rpms/dt.git/commit/dt-default-source-define.patch?id=a3107b34a3efc6af66a5f892514f233bb66eb6b5
See: http://man7.org/linux/man-pages/man7/feature_test_macros.7.html 
regarding _BSD_SOURCE deprecation and _DEFAULT_SOURCE.
Care to spin a v2 with the proper fix?
Regards.

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

end of thread, other threads:[~2016-03-08 13:51 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2016-03-05  0:52 [Buildroot] [PATCH] dt: fix binary operation errors Sergio Prado
2016-03-08 13:51 ` Gustavo Zacarias

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox