modpost: add PATTERNS() helper macro
authorMasahiro Yamada <masahiroy@kernel.org>
Mon, 1 Aug 2022 09:39:00 +0000 (18:39 +0900)
committerMasahiro Yamada <masahiroy@kernel.org>
Thu, 4 Aug 2022 11:32:13 +0000 (20:32 +0900)
This will be useful to define a NULL-terminated array inside a function
call.

Currently, string arrays passed to match() are defined in separate
places:

    static const char *const init_sections[] = { ALL_INIT_SECTIONS, NULL };
    static const char *const text_sections[] = { ALL_TEXT_SECTIONS, NULL };
    static const char *const optim_symbols[] = { "*.constprop.*", NULL };

            ...

            /* Check for pattern 5 */
            if (match(fromsec, text_sections) &&
                match(tosec, init_sections) &&
                match(fromsym, optim_symbols))
                    return 0;

With the new helper macro, you can list the patterns directly in the
function call, like this:

            /* Check for pattern 5 */
            if (match(fromsec, PATTERNS(ALL_TEXT_SECTIONS)) &&
                match(tosec, PATTERNS(ALL_INIT_SECTIONS)) &&
                match(fromsym, PATTERNS("*.contprop.*")))
                    return 0;

Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>
scripts/mod/modpost.c

index 9e8ae2636ec1e7757294467ad9e58d1cf7981534..c2949a1a0d5e34616649a918d0673161cd9f56a1 100644 (file)
@@ -746,6 +746,13 @@ static bool match(const char *string, const char *const patterns[])
        return false;
 }
 
+/* useful to pass patterns to match() directly */
+#define PATTERNS(...) \
+       ({ \
+               static const char *const patterns[] = {__VA_ARGS__, NULL}; \
+               patterns; \
+       })
+
 /* sections that we do not want to do full section mismatch check on */
 static const char *const section_white_list[] =
 {