Commit ab0350c7 authored by James Hilliard's avatar James Hilliard Committed by Alexei Starovoitov

selftests/bpf: Fix conflicts with built-in functions in bpf_iter_ksym

Both tolower and toupper are built in c functions, we should not
redefine them as this can result in a build error.

Fixes the following errors:
progs/bpf_iter_ksym.c:10:20: error: conflicting types for built-in function 'tolower'; expected 'int(int)' [-Werror=builtin-declaration-mismatch]
   10 | static inline char tolower(char c)
      |                    ^~~~~~~
progs/bpf_iter_ksym.c:5:1: note: 'tolower' is declared in header '<ctype.h>'
    4 | #include <bpf/bpf_helpers.h>
  +++ |+#include <ctype.h>
    5 |
progs/bpf_iter_ksym.c:17:20: error: conflicting types for built-in function 'toupper'; expected 'int(int)' [-Werror=builtin-declaration-mismatch]
   17 | static inline char toupper(char c)
      |                    ^~~~~~~
progs/bpf_iter_ksym.c:17:20: note: 'toupper' is declared in header '<ctype.h>'

See background on this sort of issue:
https://stackoverflow.com/a/20582607
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=12213

(C99, 7.1.3p1) "All identifiers with external linkage in any of the
following subclauses (including the future library directions) are
always reserved for use as identifiers with external linkage."

This is documented behavior in GCC:
https://gcc.gnu.org/onlinedocs/gcc/Other-Builtins.html#index-std-2Signed-off-by: default avatarJames Hilliard <james.hilliard1@gmail.com>
Acked-by: default avatarAndrii Nakryiko <andrii@kernel.org>
Link: https://lore.kernel.org/r/20221203010847.2191265-1-james.hilliard1@gmail.comSigned-off-by: default avatarAlexei Starovoitov <ast@kernel.org>
parent 0a182f8d
...@@ -7,14 +7,14 @@ char _license[] SEC("license") = "GPL"; ...@@ -7,14 +7,14 @@ char _license[] SEC("license") = "GPL";
unsigned long last_sym_value = 0; unsigned long last_sym_value = 0;
static inline char tolower(char c) static inline char to_lower(char c)
{ {
if (c >= 'A' && c <= 'Z') if (c >= 'A' && c <= 'Z')
c += ('a' - 'A'); c += ('a' - 'A');
return c; return c;
} }
static inline char toupper(char c) static inline char to_upper(char c)
{ {
if (c >= 'a' && c <= 'z') if (c >= 'a' && c <= 'z')
c -= ('a' - 'A'); c -= ('a' - 'A');
...@@ -54,7 +54,7 @@ int dump_ksym(struct bpf_iter__ksym *ctx) ...@@ -54,7 +54,7 @@ int dump_ksym(struct bpf_iter__ksym *ctx)
type = iter->type; type = iter->type;
if (iter->module_name[0]) { if (iter->module_name[0]) {
type = iter->exported ? toupper(type) : tolower(type); type = iter->exported ? to_upper(type) : to_lower(type);
BPF_SEQ_PRINTF(seq, "0x%llx %c %s [ %s ] ", BPF_SEQ_PRINTF(seq, "0x%llx %c %s [ %s ] ",
value, type, iter->name, iter->module_name); value, type, iter->name, iter->module_name);
} else { } else {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment