From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751983AbbFZEYz (ORCPT ); Fri, 26 Jun 2015 00:24:55 -0400 Received: from szxga01-in.huawei.com ([58.251.152.64]:38764 "EHLO szxga01-in.huawei.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751278AbbFZEYt (ORCPT ); Fri, 26 Jun 2015 00:24:49 -0400 Message-ID: <558CD3CF.9000706@huawei.com> Date: Fri, 26 Jun 2015 12:23:43 +0800 From: "Wangnan (F)" User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:31.0) Gecko/20100101 Thunderbird/31.6.0 MIME-Version: 1.0 To: , , , , , , , , , , CC: , , , , Subject: Re: [RFC PATCH v8 46/49] perf tools: Add prologue for BPF programs for fetching arguments References: <1435149113-51142-1-git-send-email-wangnan0@huawei.com> <1435149113-51142-47-git-send-email-wangnan0@huawei.com> In-Reply-To: <1435149113-51142-47-git-send-email-wangnan0@huawei.com> Content-Type: text/plain; charset="utf-8"; format=flowed Content-Transfer-Encoding: 7bit X-Originating-IP: [10.111.66.109] X-CFilter-Loop: Reflected Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 2015/6/24 20:31, Wang Nan wrote: [SNIP] > diff --git a/tools/perf/util/bpf-prologue.h b/tools/perf/util/bpf-prologue.h > new file mode 100644 > index 0000000..3f77606 > --- /dev/null > +++ b/tools/perf/util/bpf-prologue.h > @@ -0,0 +1,19 @@ > +/* > + * Copyright (C) 2015, He Kuang > + * Copyright (C) 2015, Huawei Inc. > + */ > +#ifndef __BPF_PROLOGUE_H > +#define __BPF_PROLOGUE_H > + > +#include > +#include "probe-event.h" > + > +#define BPF_PROLOGUE_MAX_ARGS 3 > +#define BPF_PROLOGUE_START_ARG_REG BPF_REG_3 > +#define BPF_PROLOGUE_FETCH_RESULT_REG BPF_REG_2 > + > +int bpf__gen_prologue(struct probe_trace_arg *args, int nargs, > + struct bpf_insn *new_prog, size_t *new_cnt, > + size_t cnt_space); > + Here is a problem: if CONFIG_BPF_PROLOGUE is not set, a missing symbol problem will be triggered. I have updated this part in my patchset: +/* + * Copyright (C) 2015, He Kuang + * Copyright (C) 2015, Huawei Inc. + */ +#ifndef __BPF_PROLOGUE_H +#define __BPF_PROLOGUE_H + +#include +#include +#include "probe-event.h" + +#define BPF_PROLOGUE_MAX_ARGS 3 +#define BPF_PROLOGUE_START_ARG_REG BPF_REG_3 +#define BPF_PROLOGUE_FETCH_RESULT_REG BPF_REG_2 + +#ifdef HAVE_BPF_PROLOGUE +int bpf__gen_prologue(struct probe_trace_arg *args, int nargs, + struct bpf_insn *new_prog, size_t *new_cnt, + size_t cnt_space); +#else +static inline int +bpf__gen_prologue(struct probe_trace_arg *args __maybe_unused, + int nargs __maybe_unused, + struct bpf_insn *new_prog __maybe_unused, + size_t *new_cnt, + size_t cnt_space __maybe_unused) +{ + if (!new_cnt) + return -EINVAL; + *new_cnt = 0; + return 0; +} +#endif +#endif /* __BPF_PROLOGUE_H */ > +#endif /* __BPF_PROLOGUE_H */