This is the mail archive of the
newlib@sourceware.org
mailing list for the newlib project.
[PATCH, newlib/ARM] Fix elf-nano.specs to work without -save-temps
- From: Thomas Preudhomme <thomas dot preudhomme at foss dot arm dot com>
- To: newlib at sourceware dot org
- Date: Wed, 15 Feb 2017 11:32:33 +0000
- Subject: [PATCH, newlib/ARM] Fix elf-nano.specs to work without -save-temps
- Authentication-results: sourceware.org; auth=none
Hi,
it turns out that the changes in
af272aca591fe1dc0f1be64ae5bda147ea98a047 only works when using gcc/g++
with -E or -save-temps, otherwise newlib's newlib.h gets used even if
-specs=nano.specs is specified [1]. This is because the driver only
use cpp_options spec for the external cpp tool, not for the integrated
one.
[1] Guess the options I used to test the change...
This patch uses instead cpp_unique_options which is used in all cases:
it is used directly when the integrated preprocessor is used, and
indirectly by expansion of cpp_options otherwise.
Tested by running the following C program when building it with gcc or g++ with
and without -specs=nano.specs and/or -save-temps:
#include <stdio.h>
int
main (void)
{
printf ("%x\n", sizeof (struct _reent));
return 0;
}
Is this ok for master?
Best regards,
Thomas
>From 36d3da3126cf70a500b4ef54710569e414f7a7ea Mon Sep 17 00:00:00 2001
From: Thomas Preud'homme <thomas.preudhomme@arm.com>
Date: Wed, 15 Feb 2017 10:51:54 +0000
Subject: [PATCH] Fix elf-nano.specs to work without -save-temps
The changes in af272aca591fe1dc0f1be64ae5bda147ea98a047 only works when
using gcc/g++ with -E or -save-temps, otherwise newlib's newlib.h gets
used even if -specs=nano.specs is specified. This is because the driver
only use cpp_options spec for the external cpp tool, not for the
integrated one.
This patch uses instead cpp_unique_options which is used in all cases:
it is used directly when the integrated preprocessor is used, and
indirectly by expansion of cpp_options otherwise.
---
libgloss/arm/elf-nano.specs | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/libgloss/arm/elf-nano.specs b/libgloss/arm/elf-nano.specs
index 324107e..82594bd 100644
--- a/libgloss/arm/elf-nano.specs
+++ b/libgloss/arm/elf-nano.specs
@@ -1,9 +1,9 @@
%rename link nano_link
%rename link_gcc_c_sequence nano_link_gcc_c_sequence
-%rename cpp_options nano_cpp_options
+%rename cpp_unique_options nano_cpp_unique_options
-*cpp_options:
--isystem =/include/newlib-nano %(nano_cpp_options)
+*cpp_unique_options:
+-isystem =/include/newlib-nano %(nano_cpp_unique_options)
*nano_libc:
-lc_nano
--
1.9.1