summaryrefslogtreecommitdiff
path: root/toolchain
diff options
context:
space:
mode:
authorYann E. MORIN <yann.morin.1998@free.fr>2016-12-04 10:21:56 +0100
committerThomas Petazzoni <thomas.petazzoni@free-electrons.com>2016-12-11 15:45:06 +0100
commit3eccf762016d2e75911a20bf319e7f15776ae159 (patch)
tree9f7873b59dbd607a5c70b1e8a5415fe52253077c /toolchain
parent31c093e6d094194ca61ed476016ed1649c972382 (diff)
toolchain/wrapper: use the {str, len} tuples for the unsafe paths
In 61cb120 (toolchain/wrapper: extend paranoid check to -isystem), we introduced a {str,len} tuple to check the various arguments pased to gcc, to avoid hard-coding an ever-growing, long list of those args directly in the condition check. Now, we're left with a long list of unsafe paths, somehow hidden within the code, which can use the same mechanism we use for arguments. Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr> Cc: Thomas Petazzoni <thomas.petazzoni@free-electrons.com> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Diffstat (limited to 'toolchain')
-rw-r--r--toolchain/toolchain-wrapper.c23
1 files changed, 17 insertions, 6 deletions
diff --git a/toolchain/toolchain-wrapper.c b/toolchain/toolchain-wrapper.c
index 8bc000782..100aa181c 100644
--- a/toolchain/toolchain-wrapper.c
+++ b/toolchain/toolchain-wrapper.c
@@ -98,6 +98,20 @@ struct str_len_s {
*/
#define STR_LEN(s) { #s, sizeof(#s)-1 }
+/* List of paths considered unsafe for cross-compilation.
+ *
+ * An unsafe path is one that points to a directory with libraries or
+ * headers for the build machine, which are not suitable for the target.
+ */
+static const struct str_len_s unsafe_paths[] = {
+ STR_LEN(/lib),
+ STR_LEN(/usr/include),
+ STR_LEN(/usr/lib),
+ STR_LEN(/usr/local/include),
+ STR_LEN(/usr/local/lib),
+ { NULL, 0 },
+};
+
/* Unsafe options are options that specify a potentialy unsafe path,
* that will be checked by check_unsafe_path(), below.
*/
@@ -126,13 +140,10 @@ static void check_unsafe_path(const char *arg,
int paranoid,
int arg_has_path)
{
- char **c;
- static char *unsafe_paths[] = {
- "/lib", "/usr/include", "/usr/lib", "/usr/local/include", "/usr/local/lib", NULL,
- };
+ const struct str_len_s *p;
- for (c = unsafe_paths; *c != NULL; c++) {
- if (strncmp(path, *c, strlen(*c)))
+ for (p=unsafe_paths; p->str; p++) {
+ if (strncmp(path, p->str, p->len))
continue;
fprintf(stderr,
"%s: %s: unsafe header/library path used in cross-compilation: '%s%s%s'\n",