summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--docs/manual/customize-toolchain.txt11
-rw-r--r--toolchain/toolchain-external/ext-toolchain-wrapper.c25
2 files changed, 28 insertions, 8 deletions
diff --git a/docs/manual/customize-toolchain.txt b/docs/manual/customize-toolchain.txt
index 811a6dc..82ecc28 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 565e36b..dfdfcff 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))