https://gcc.gnu.org/bugzilla/show_bug.cgi?id=111527
--- Comment #7 from Deepthi H <deepadeepthi98 at gmail dot com> --- We've a solution for this issue. When gcc/g++ is called using the @response-file.rsp syntax, gcc should forward the argument to its subprocesses. Previously the files were expanded which could lead to excessively long argument lists and 'cc1: execv: Argument list too long' errors. In particular, CMake and Ninja tend to create a lot of '-isystem' include directories, requiring allowing the forwarding in spec files by using %@{i*}. In xputenv method, If the ENV variable size greater then 128kb then we split the ENV variable(i.e COLLECT_GCC_OPTIONS) where each chunk will be 128kb in length. GCC passes the entire command line, including expanded @rsp-files to the collect2 in environment variable COLLECT_GCC_OPTIONS. This can exceed the build environment's kernel's environment variable length limit. In this workaround, environment variables longer than 128kb are split into multiple variables and stitched back together in collect2. The patch is attached here. And, the patch output of the example code given in 'Description' as below: ======= sunild@BFT-LPT-I-051:~$ $GCC_PATH/gcc -c a.c -DA=$big_100k_var -DB=$big_100k_var -v Using built-in specs. COLLECT_GCC=/home/sunild/GCC_Driver/bin/home/sunild/GCC_Driver/build/bin/gcc Target: x86_64-pc-linux-gnu Configured with: ../gcc/configure --prefix=/home/sunild/GCC_Driver/build --enable-languages=c --disable-multilib Thread model: posix Supported LTO compression algorithms: zlib gcc version 14.0.1 20240426 (experimental) (GCC) COLLECT_GCC_OPTIONS_0='-c' '-D' 'A=00000000000000000000000000000000000000000000000000000000 COLLECT_GCC_OPTIONS_1=000000000000000000000000000000000000000000000000000000000000000000000 COLLECT_GCC_OPTIONS_COUNT=2 ======= Let us know your comments on this solution. Such a solution is acceptable to change the gcc driver?