]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
selftests/nolibc: avoid function pointer comparisons
authorThomas Weißschuh <linux@weissschuh.net>
Tue, 7 Apr 2026 12:04:08 +0000 (14:04 +0200)
committerThomas Weißschuh <linux@weissschuh.net>
Sun, 3 May 2026 14:37:13 +0000 (16:37 +0200)
The upcoming parisc support would require libgcc to implement function
pointer comparisons. As we try to avoid the libgcc dependency rework
the logic to work without such comparisons.

Signed-off-by: Thomas Weißschuh <linux@weissschuh.net>
Acked-by: Willy Tarreau <w@1wt.eu>
Link: https://patch.msgid.link/20260428-nolibc-hppa-v5-1-d843d573111a@weissschuh.net
tools/testing/selftests/nolibc/nolibc-test.c

index 08610cacf03080ac36537cc3a0b19f2860070d3b..1db6e8d55c16fbc56e3986c70de99879296a569c 100644 (file)
@@ -649,20 +649,25 @@ int expect_str_buf_eq(size_t expr, const char *buf, size_t val, int llen, const
        return 0;
 }
 
+enum strtox_func {
+       strtox_func_strtol,
+       strtox_func_strtoul,
+};
+
 #define EXPECT_STRTOX(cond, func, input, base, expected, chars, expected_errno)                                \
-       do { if (!(cond)) result(llen, SKIPPED); else ret += expect_strtox(llen, func, input, base, expected, chars, expected_errno); } while (0)
+       do { if (!(cond)) result(llen, SKIPPED); else ret += expect_strtox(llen, strtox_func_ ## func, input, base, expected, chars, expected_errno); } while (0)
 
 static __attribute__((unused))
-int expect_strtox(int llen, void *func, const char *input, int base, intmax_t expected, int expected_chars, int expected_errno)
+int expect_strtox(int llen, enum strtox_func func, const char *input, int base, intmax_t expected, int expected_chars, int expected_errno)
 {
        char *endptr;
        int actual_errno, actual_chars;
        intmax_t r;
 
        errno = 0;
-       if (func == strtol) {
+       if (func == strtox_func_strtol) {
                r = strtol(input, &endptr, base);
-       } else if (func == strtoul) {
+       } else if (func == strtox_func_strtoul) {
                r = strtoul(input, &endptr, base);
        } else {
                result(llen, FAIL);