Buildroot Archive on lore.kernel.org
 help / color / mirror / Atom feed
* [Buildroot] [PATCH v3 1/2] ext-toolchain-wrapper: fix typo on s/BR2_FPU/BR_FPU/
@ 2013-07-19 23:31 Spenser Gilliland
  2013-07-19 23:31 ` [Buildroot] [PATCH v3 2/2] ext-toolchain-wrapper: fix uboot/linux with hardfp Spenser Gilliland
                   ` (2 more replies)
  0 siblings, 3 replies; 6+ messages in thread
From: Spenser Gilliland @ 2013-07-19 23:31 UTC (permalink / raw)
  To: buildroot


Signed-off-by: Spenser Gilliland <spenser@gillilanding.com>
---
 toolchain/toolchain-external/ext-toolchain-wrapper.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/toolchain/toolchain-external/ext-toolchain-wrapper.c b/toolchain/toolchain-external/ext-toolchain-wrapper.c
index 460f255..dc473be 100644
--- a/toolchain/toolchain-external/ext-toolchain-wrapper.c
+++ b/toolchain/toolchain-external/ext-toolchain-wrapper.c
@@ -41,7 +41,7 @@ static char *predef_args[] = {
 #ifdef BR_FLOAT_ABI
 	"-mfloat-abi=" BR_FLOAT_ABI,
 #endif
-#ifdef BR2_FPU
+#ifdef BR_FPU
 	"-mfpu=" BR_FPU,
 #endif
 #ifdef BR_SOFTFLOAT
-- 
1.8.1.2

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

* [Buildroot] [PATCH v3 2/2] ext-toolchain-wrapper: fix uboot/linux with hardfp
  2013-07-19 23:31 [Buildroot] [PATCH v3 1/2] ext-toolchain-wrapper: fix typo on s/BR2_FPU/BR_FPU/ Spenser Gilliland
@ 2013-07-19 23:31 ` Spenser Gilliland
  2013-07-20 10:36   ` Yann E. MORIN
  2013-07-20 22:59   ` Peter Korsgaard
  2013-07-20  9:58 ` [Buildroot] [PATCH v3 1/2] ext-toolchain-wrapper: fix typo on s/BR2_FPU/BR_FPU/ Yann E. MORIN
  2013-07-20 22:14 ` Peter Korsgaard
  2 siblings, 2 replies; 6+ messages in thread
From: Spenser Gilliland @ 2013-07-19 23:31 UTC (permalink / raw)
  To: buildroot

The linux kernel and uboot specify -msoft-float in order to prevent floating
point code from being generated.  This causes a conflict when -mfloat-abi=hard
or -mfloat-abi options are specified in the wrapper. This patch removes the
-mfloat-abi option from the options generated by the wrapper only when -msoft-float, -mhard-float or -mfloat-abi are specified by the user.

Signed-off-by: Spenser Gilliland <spenser@gillilanding.com>
---
 .../toolchain-external/ext-toolchain-wrapper.c     | 37 +++++++++++++++++++---
 1 file changed, 33 insertions(+), 4 deletions(-)

diff --git a/toolchain/toolchain-external/ext-toolchain-wrapper.c b/toolchain/toolchain-external/ext-toolchain-wrapper.c
index dc473be..3b70610 100644
--- a/toolchain/toolchain-external/ext-toolchain-wrapper.c
+++ b/toolchain/toolchain-external/ext-toolchain-wrapper.c
@@ -8,6 +8,7 @@
  * (C) 2011 Peter Korsgaard <jacmet@sunsite.dk>
  * (C) 2011 Daniel Nystr?m <daniel.nystrom@timeterminal.se>
  * (C) 2012 Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be>
+ * (C) 2013 Spenser Gilliland <spenser@gillilanding.com>
  *
  * This file is licensed under the terms of the GNU General Public License
  * version 2.  This program is licensed "as is" without any warranty of any
@@ -38,9 +39,6 @@ static char *predef_args[] = {
 #ifdef BR_ABI
 	"-mabi=" BR_ABI,
 #endif
-#ifdef BR_FLOAT_ABI
-	"-mfloat-abi=" BR_FLOAT_ABI,
-#endif
 #ifdef BR_FPU
 	"-mfpu=" BR_FPU,
 #endif
@@ -61,6 +59,25 @@ static char *predef_args[] = {
 #endif
 };
 
+/* use_default_float_abi - determine if the user is trying to override the
+ * floating point abi.
+ *  return 0 if the user is attempting to override the float abi
+ *  otherwise return 1
+ */
+int use_default_float_abi(int argc, char **argv) {
+	int arg;
+	for (arg = 1; arg < argc; arg++) {
+		if (strncmp(argv[arg],"-mfloat-abi=", sizeof("-mfloat-abi=")/sizeof(char)-1) == 0 ||
+			strcmp(argv[arg],"-msoft-float") == 0 ||
+			strcmp(argv[arg],"-mhard-float") == 0 ) {
+			printf("DETECTED FLOAT ABI\n");
+			return 0;
+		}
+	}
+	
+	return 1;
+}
+
 int main(int argc, char **argv)
 {
 	char **args, **cur;
@@ -68,6 +85,11 @@ int main(int argc, char **argv)
 	char *progpath = argv[0];
 	char *basename;
 	int ret, i, count = 0;
+	int set_float_abi = 0;
+
+#ifdef BR_FLOAT_ABI
+	set_float_abi = use_default_float_abi(argc,argv);
+#endif
 
 	/* Calculate the relative paths */
 	basename = strrchr(progpath, '/');
@@ -119,7 +141,8 @@ int main(int argc, char **argv)
 		return 3;
 	}
 
-	cur = args = malloc(sizeof(predef_args) + (sizeof(char *) * argc));
+	cur = args = malloc(sizeof(predef_args) +
+		(sizeof(char *) * (argc + set_float_abi)));
 	if (args == NULL) {
 		perror(__FILE__ ": malloc");
 		return 2;
@@ -129,6 +152,12 @@ int main(int argc, char **argv)
 	memcpy(cur, predef_args, sizeof(predef_args));
 	cur += sizeof(predef_args) / sizeof(predef_args[0]);
 
+	/* add float abi if neccessary */
+	if (set_float_abi) {
+		*cur = "-mfloat-abi=" BR_FLOAT_ABI;
+		cur++;
+	}
+
 	/* append forward args */
 	memcpy(cur, &argv[1], sizeof(char *) * (argc - 1));
 	cur += argc - 1;
-- 
1.8.1.2

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

* [Buildroot] [PATCH v3 1/2] ext-toolchain-wrapper: fix typo on s/BR2_FPU/BR_FPU/
  2013-07-19 23:31 [Buildroot] [PATCH v3 1/2] ext-toolchain-wrapper: fix typo on s/BR2_FPU/BR_FPU/ Spenser Gilliland
  2013-07-19 23:31 ` [Buildroot] [PATCH v3 2/2] ext-toolchain-wrapper: fix uboot/linux with hardfp Spenser Gilliland
@ 2013-07-20  9:58 ` Yann E. MORIN
  2013-07-20 22:14 ` Peter Korsgaard
  2 siblings, 0 replies; 6+ messages in thread
From: Yann E. MORIN @ 2013-07-20  9:58 UTC (permalink / raw)
  To: buildroot

On 2013-07-19 18:31 -0500, Spenser Gilliland spake thusly:
> 
> Signed-off-by: Spenser Gilliland <spenser@gillilanding.com>

Acked-by: "Yann E. MORIN" <yann.morin.1998@free.fr>

> ---
>  toolchain/toolchain-external/ext-toolchain-wrapper.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/toolchain/toolchain-external/ext-toolchain-wrapper.c b/toolchain/toolchain-external/ext-toolchain-wrapper.c
> index 460f255..dc473be 100644
> --- a/toolchain/toolchain-external/ext-toolchain-wrapper.c
> +++ b/toolchain/toolchain-external/ext-toolchain-wrapper.c
> @@ -41,7 +41,7 @@ static char *predef_args[] = {
>  #ifdef BR_FLOAT_ABI
>  	"-mfloat-abi=" BR_FLOAT_ABI,
>  #endif
> -#ifdef BR2_FPU
> +#ifdef BR_FPU
>  	"-mfpu=" BR_FPU,
>  #endif
>  #ifdef BR_SOFTFLOAT
> -- 
> 1.8.1.2
> 
> _______________________________________________
> buildroot mailing list
> buildroot at busybox.net
> http://lists.busybox.net/mailman/listinfo/buildroot

-- 
.-----------------.--------------------.------------------.--------------------.
|  Yann E. MORIN  | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: |
| +33 662 376 056 | Software  Designer | \ / CAMPAIGN     |  ___               |
| +33 223 225 172 `------------.-------:  X  AGAINST      |  \e/  There is no  |
| http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL    |   v   conspiracy.  |
'------------------------------^-------^------------------^--------------------'

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

* [Buildroot] [PATCH v3 2/2] ext-toolchain-wrapper: fix uboot/linux with hardfp
  2013-07-19 23:31 ` [Buildroot] [PATCH v3 2/2] ext-toolchain-wrapper: fix uboot/linux with hardfp Spenser Gilliland
@ 2013-07-20 10:36   ` Yann E. MORIN
  2013-07-20 22:59   ` Peter Korsgaard
  1 sibling, 0 replies; 6+ messages in thread
From: Yann E. MORIN @ 2013-07-20 10:36 UTC (permalink / raw)
  To: buildroot

Spenser, All,

On 2013-07-19 18:31 -0500, Spenser Gilliland spake thusly:
> The linux kernel and uboot specify -msoft-float in order to prevent floating
> point code from being generated.  This causes a conflict when -mfloat-abi=hard
> or -mfloat-abi options are specified in the wrapper. This patch removes the
> -mfloat-abi option from the options generated by the wrapper only when -msoft-float, -mhard-float or -mfloat-abi are specified by the user.

Please, wrap your commit log at <80 chars.

> 
> Signed-off-by: Spenser Gilliland <spenser@gillilanding.com>

Tested-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
Reviewed-by: "Yann E. MORIN" <yann.morin.1998@free.fr>

Yet a few minor nits below.

Regards,
Yann E. MORIN.

> ---
>  .../toolchain-external/ext-toolchain-wrapper.c     | 37 +++++++++++++++++++---
>  1 file changed, 33 insertions(+), 4 deletions(-)
> 
> diff --git a/toolchain/toolchain-external/ext-toolchain-wrapper.c b/toolchain/toolchain-external/ext-toolchain-wrapper.c
> index dc473be..3b70610 100644
> --- a/toolchain/toolchain-external/ext-toolchain-wrapper.c
> +++ b/toolchain/toolchain-external/ext-toolchain-wrapper.c
[--SNIP--]
> @@ -61,6 +59,25 @@ static char *predef_args[] = {
>  #endif
>  };
>  
> +/* use_default_float_abi - determine if the user is trying to override the
> + * floating point abi.
> + *  return 0 if the user is attempting to override the float abi
> + *  otherwise return 1

I'd state it differently:

  use_default_float_abi - check whether we should pass our own float ABI
  flags, or use the ones provided on the command line
  Returns:
    0: do not add our -float-abi= flag
    1: do add our -mfloat-abi= flags

> + */
> +int use_default_float_abi(int argc, char **argv) {
> +	int arg;
> +	for (arg = 1; arg < argc; arg++) {
> +		if (strncmp(argv[arg],"-mfloat-abi=", sizeof("-mfloat-abi=")/sizeof(char)-1) == 0 ||

I think that we can assume that sizeof(char) == 1 everywhere Buildroot
is expected to run, no? ;-)

> +			strcmp(argv[arg],"-msoft-float") == 0 ||
> +			strcmp(argv[arg],"-mhard-float") == 0 ) {
> +			printf("DETECTED FLOAT ABI\n");
> +			return 0;
> +		}
> +	}
> +	

No spaces/tabs on empty lines.

Otherwise, loogs good, and most importantly, fixes my kernel build!
Hurray! :-)

Regards,
Yann E. MORIN.

-- 
.-----------------.--------------------.------------------.--------------------.
|  Yann E. MORIN  | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: |
| +33 662 376 056 | Software  Designer | \ / CAMPAIGN     |  ___               |
| +33 223 225 172 `------------.-------:  X  AGAINST      |  \e/  There is no  |
| http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL    |   v   conspiracy.  |
'------------------------------^-------^------------------^--------------------'

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

* [Buildroot] [PATCH v3 1/2] ext-toolchain-wrapper: fix typo on s/BR2_FPU/BR_FPU/
  2013-07-19 23:31 [Buildroot] [PATCH v3 1/2] ext-toolchain-wrapper: fix typo on s/BR2_FPU/BR_FPU/ Spenser Gilliland
  2013-07-19 23:31 ` [Buildroot] [PATCH v3 2/2] ext-toolchain-wrapper: fix uboot/linux with hardfp Spenser Gilliland
  2013-07-20  9:58 ` [Buildroot] [PATCH v3 1/2] ext-toolchain-wrapper: fix typo on s/BR2_FPU/BR_FPU/ Yann E. MORIN
@ 2013-07-20 22:14 ` Peter Korsgaard
  2 siblings, 0 replies; 6+ messages in thread
From: Peter Korsgaard @ 2013-07-20 22:14 UTC (permalink / raw)
  To: buildroot

>>>>> "Spenser" == Spenser Gilliland <spenser@gillilanding.com> writes:

 Spenser> Signed-off-by: Spenser Gilliland <spenser@gillilanding.com>

Committed, thanks.

-- 
Bye, Peter Korsgaard

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

* [Buildroot] [PATCH v3 2/2] ext-toolchain-wrapper: fix uboot/linux with hardfp
  2013-07-19 23:31 ` [Buildroot] [PATCH v3 2/2] ext-toolchain-wrapper: fix uboot/linux with hardfp Spenser Gilliland
  2013-07-20 10:36   ` Yann E. MORIN
@ 2013-07-20 22:59   ` Peter Korsgaard
  1 sibling, 0 replies; 6+ messages in thread
From: Peter Korsgaard @ 2013-07-20 22:59 UTC (permalink / raw)
  To: buildroot

>>>>> "Spenser" == Spenser Gilliland <spenser@gillilanding.com> writes:

 Spenser> The linux kernel and uboot specify -msoft-float in order to
 Spenser> prevent floating point code from being generated.  This causes
 Spenser> a conflict when -mfloat-abi=hard or -mfloat-abi options are
 Spenser> specified in the wrapper. This patch removes the -mfloat-abi
 Spenser> option from the options generated by the wrapper only when
 Spenser> -msoft-float, -mhard-float or -mfloat-abi are specified by the
 Spenser> user.

Committed with some changes (see below) - Thanks.

 Spenser> +/* use_default_float_abi - determine if the user is trying to override the
 Spenser> + * floating point abi.
 Spenser> + *  return 0 if the user is attempting to override the float abi
 Spenser> + *  otherwise return 1
 Spenser> + */
 Spenser> +int use_default_float_abi(int argc, char **argv) {
 Spenser> +	int arg;
 Spenser> +	for (arg = 1; arg < argc; arg++) {
 Spenser> +		if (strncmp(argv[arg],"-mfloat-abi=", sizeof("-mfloat-abi=")/sizeof(char)-1) == 0 ||
 Spenser> +			strcmp(argv[arg],"-msoft-float") == 0 ||
 Spenser> +			strcmp(argv[arg],"-mhard-float") == 0 ) {
 Spenser> +			printf("DETECTED FLOAT ABI\n");

This debug line shouldn't be here.

The entire function should be inside an #ifdef BR_FLOAT_ABI so we don't
get warnings about unused functions on !arm.

 Spenser> +			return 0;
 Spenser> +		}
 Spenser> +	}
 Spenser> +	
 Spenser> +	return 1;
 Spenser> +}
 Spenser> +
 Spenser>  int main(int argc, char **argv)
 Spenser>  {
 Spenser>  	char **args, **cur;
 Spenser> @@ -68,6 +85,11 @@ int main(int argc, char **argv)
 Spenser>  	char *progpath = argv[0];
 Spenser>  	char *basename;
 Spenser>  	int ret, i, count = 0;
 Spenser> +	int set_float_abi = 0;
 Spenser> +
 Spenser> +#ifdef BR_FLOAT_ABI
 Spenser> +	set_float_abi = use_default_float_abi(argc,argv);
 Spenser> +#endif
 
 Spenser>  	/* Calculate the relative paths */
 Spenser>  	basename = strrchr(progpath, '/');
 Spenser> @@ -119,7 +141,8 @@ int main(int argc, char **argv)
 Spenser>  		return 3;
 Spenser>  	}
 
 Spenser> -	cur = args = malloc(sizeof(predef_args) + (sizeof(char *) * argc));
 Spenser> +	cur = args = malloc(sizeof(predef_args) +
 Spenser> +		(sizeof(char *) * (argc + set_float_abi)));
 Spenser>  	if (args == NULL) {
 Spenser>  		perror(__FILE__ ": malloc");
 Spenser>  		return 2;
 Spenser> @@ -129,6 +152,12 @@ int main(int argc, char **argv)
 Spenser>  	memcpy(cur, predef_args, sizeof(predef_args));
 Spenser>  	cur += sizeof(predef_args) / sizeof(predef_args[0]);
 
 Spenser> +	/* add float abi if neccessary */

It's more 'if not overridden by the wrapper arguments'

 Spenser> +	if (set_float_abi) {
 Spenser> +		*cur = "-mfloat-abi=" BR_FLOAT_ABI;
 Spenser> +		cur++;
 Spenser> +	}

This should also have been inside an #ifdef BR_FLOAT_ABI, because now it
won't build on archs not using BR_FLOAT_ABI.

To limit the number of ifdefs, I simply moved the
use_default_float_abi() function inline here.

-- 
Bye, Peter Korsgaard

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

end of thread, other threads:[~2013-07-20 22:59 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2013-07-19 23:31 [Buildroot] [PATCH v3 1/2] ext-toolchain-wrapper: fix typo on s/BR2_FPU/BR_FPU/ Spenser Gilliland
2013-07-19 23:31 ` [Buildroot] [PATCH v3 2/2] ext-toolchain-wrapper: fix uboot/linux with hardfp Spenser Gilliland
2013-07-20 10:36   ` Yann E. MORIN
2013-07-20 22:59   ` Peter Korsgaard
2013-07-20  9:58 ` [Buildroot] [PATCH v3 1/2] ext-toolchain-wrapper: fix typo on s/BR2_FPU/BR_FPU/ Yann E. MORIN
2013-07-20 22:14 ` Peter Korsgaard

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