diff --git a/docs/manual/customize-toolchain.txt b/docs/manual/customize-toolchain.txt index 811a6dc7f9..82ecc28431 100644 --- a/docs/manual/customize-toolchain.txt +++ b/docs/manual/customize-toolchain.txt @@ -17,6 +17,17 @@ generate it. It also requires to set the Buildroot settings according to the toolchain ones (see xref:external-toolchain-backend[]). +When using an external toolchain, Buildroot generates a wrapper program, that +passes the appropriate options (according to the configuration) to the +external toolchain programs. In case you need to debug this wrapper, you can +set the environment variable BR_DEBUG_WRAPPER to either one of: + +* +0+, empty or not set: no debug + +* +1+: trace all arguments on a single line + +* +2+: trace one argument per line + Using the internal Buildroot toolchain backend ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ diff --git a/toolchain/toolchain-external/ext-toolchain-wrapper.c b/toolchain/toolchain-external/ext-toolchain-wrapper.c index 565e36bfd1..dfdfcffbf5 100644 --- a/toolchain/toolchain-external/ext-toolchain-wrapper.c +++ b/toolchain/toolchain-external/ext-toolchain-wrapper.c @@ -74,7 +74,8 @@ int main(int argc, char **argv) char *relbasedir, *absbasedir; char *progpath = argv[0]; char *basename; - int ret, i, count = 0; + char *env_debug; + int ret, i, count = 0, debug; /* Calculate the relative paths */ basename = strrchr(progpath, '/'); @@ -157,13 +158,21 @@ int main(int argc, char **argv) /* finish with NULL termination */ *cur = NULL; - if (getenv("BR_DEBUG_WRAPPER")) { - fprintf(stderr, "Executing"); - - for (i = 0; args[i]; i++) - fprintf(stderr, " %s", args[i]); - - fprintf(stderr, "\n"); + /* Debug the wrapper to see actual arguments passed to + * the compiler: + * unset, empty, or 0: do not trace + * set to 1 : trace all arguments on a single line + * set to 2 : trace one argument per line + */ + if ((env_debug = getenv("BR_DEBUG_WRAPPER"))) { + debug = atoi(env_debug); + if (debug > 0) { + fprintf(stderr, "Toolchain wrapper executing:"); + for (i = 0; args[i]; i++) + fprintf(stderr, "%s'%s'", + (debug == 2)?"\n ":" ", args[i]); + fprintf(stderr, "\n"); + } } if (execv(path, args))