• Arnaldo Carvalho de Melo's avatar
    perf bpf: Don't warn about unavailability of builtin clang, just fallback · 87252323
    Arnaldo Carvalho de Melo authored
    When clang is not linked with 'perf' we should just add a debug message
    about that before doing the fallback to calling the external compiler.
    
    I.e. just the "-95" warning below gets turned into a debug message:
    
      # cat sys_enter_open.c
      #include "bpf.h"
    
      SEC("syscalls:sys_enter_open")
      int func(void *ctx)
      {
    	struct {
    		char *ptr;
    		char path[256];
    	} filename = {
    		.ptr = *((char **)(ctx + 16)),
    	};
    	int len = bpf_probe_read_str(filename.path, sizeof(filename.path), filename.ptr);
    	if (len > 0) {
    		if (len == 1)
    			perf_event_output(ctx, &__bpf_stdout__, BPF_F_CURRENT_CPU, &filename, len + sizeof(filename.ptr));
    		else if (len < 256)
    			perf_event_output(ctx, &__bpf_stdout__, BPF_F_CURRENT_CPU, &filename, len + sizeof(filename.ptr));
            }
    	return 0;
      }
      # trace -e open,sys_enter_open.c
      bpf: builtin compilation failed: -95, try external compiler
         0.000 (         ): __bpf_stdout__:@......./proc/self/task/11160/comm..)
         0.014 ( 0.116 ms): qemu-system-x8/6721 open(filename: /proc/self/task/11160/comm, flags: RDWR) = 91
      2335.411 (         ): __bpf_stdout__:FB..~.../etc/resolv.conf....)
      2335.421 ( 0.030 ms): chronyd/883 open(filename: /etc/resolv.conf, flags: CLOEXEC) = 5
    ^C#
    
    Cc: Adrian Hunter <adrian.hunter@intel.com>
    Cc: David Ahern <dsahern@gmail.com>
    Cc: Jiri Olsa <jolsa@kernel.org>
    Cc: Namhyung Kim <namhyung@kernel.org>
    Cc: Wang Nan <wangnan0@huawei.com>
    Link: https://lkml.kernel.org/n/tip-z5aak9oay448ffj37giz94yr@git.kernel.orgSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
    87252323
bpf-loader.c 39.9 KB