Hi Richard,

Thanks for your reply.

The sysroot of /dev/null is basically to force the user or build system to pass a valid --sysroot argument. This helps us to ensure that we only link against known libraries (that are in a specific location) and there isn't any leakage from the host system.

I'm not sure if we're using sysroot the way it was intended, but it is 
certainly helping us to maintain some sanity in our build.

It seems to me like the sysroot that the user passes in as an argument to gcc 
should definitely be forwarded to cc1plus.

Etienne


On 4/12/12 1:21 AM, Richard Biener wrote:
On Mon, Dec 3, 2012 at 9:03 PM, Etienne Le Sueur <elesu...@vmware.com> wrote:
First ping... anyone?
A sysroot of /dev/null does not sound like something that we should support.
If we do the semantics of this setting should be documented somewhere.

Richard.

On 28/11/12 1:21 PM, Etienne Le Sueur wrote:
Hi,

With a sysroot of /dev/null, passing a .i file to cc1plus causes it to
attempt to open /dev/null/usr/include, which fails. This causes problems for
ccache and distcc. There is an open bugzilla ticket at [1].

The patch below applies on to 4.6.3, but it appears the bug is still
present in 4.7.2.

If this is not the correct way to solve this problem, please suggest a
better approach.

Regards,
Etienne Le Sueur

[1] http://gcc.gnu.org/bugzilla/show_bug.cgi?id=54560


diff --git a/gcc-4.6.3/gcc/cp/lang-specs.h b/gcc-4.6.3/gcc/cp/lang-specs.h
index a73aba3..873609a 100644
--- a/gcc-4.6.3/gcc/cp/lang-specs.h
+++ b/gcc-4.6.3/gcc/cp/lang-specs.h
@@ -64,5 +64,5 @@ along with GCC; see the file COPYING3.  If not see
    {".ii", "@c++-cpp-output", 0, 0, 0},
    {"@c++-cpp-output",
     "%{!M:%{!MM:%{!E:\
-    cc1plus -fpreprocessed %i %(cc1_options) %2\
+    cc1plus -fpreprocessed %i %I %(cc1_options) %2\
      %{!fsyntax-only:%(invoke_as)}}}}", 0, 0, 0},
diff --git a/gcc-4.6.3/gcc/gcc.c b/gcc-4.6.3/gcc/gcc.c
index 75f522e..214ef29 100644
--- a/gcc-4.6.3/gcc/gcc.c
+++ b/gcc-4.6.3/gcc/gcc.c
@@ -950,7 +950,7 @@ static const struct compiler default_compilers[] =
                      %W{o*:--output-pch=%*}}%V}}}}}}", 0, 0, 0},
    {".i", "@cpp-output", 0, 0, 0},
    {"@cpp-output",
-   "%{!M:%{!MM:%{!E:cc1 -fpreprocessed %i %(cc1_options)
%{!fsyntax-only:%(invoke_as)}}}}", 0, 0, 0},
+   "%{!M:%{!MM:%{!E:cc1 -fpreprocessed %i %I %(cc1_options)
%{!fsyntax-only:%(invoke_as)}}}}", 0, 0, 0},
    {".s", "@assembler", 0, 0, 0},
    {"@assembler",
     "%{!M:%{!MM:%{!E:%{!S:as %(asm_debug) %(asm_options) %i %A }}}}", 0,
0, 0},


Reply via email to