[PATCH v1 0/6] Simplify linking against tools/perf code

Ian Rogers irogers at google.com
Tue Mar 28 09:14:51 PDT 2023


On Tue, Mar 28, 2023 at 6:24 AM Adrian Hunter <adrian.hunter at intel.com> wrote:
>
> On 28/03/23 04:40, Ian Rogers wrote:
> > When fuzzing something like parse-events, having the main function in
> > perf.c alongside global variables like input_name means that
> > input_name must be redeclared with the fuzzer function's
> > main. However, as the fuzzer is using the tools/perf code as a library
> > this causes backward linking reference that the linker may warn
> > about. Reorganize perf.c and perf.h to avoid potential backward
> > references, or so that the declaration/definition locations are more
> > consistent.
> >
>
> Seems like it could be a pain to maintain.
>
> Did you consider just adding:
>
> diff --git a/tools/perf/perf.c b/tools/perf/perf.c
> index 82bbe0ca858b..a75dd47d68ee 100644
> --- a/tools/perf/perf.c
> +++ b/tools/perf/perf.c
> @@ -456,6 +456,7 @@ static int libperf_print(enum libperf_print_level level,
>         return veprintf(level, verbose, fmt, ap);
>  }
>
> +#ifndef CUSTOM_MAIN
>  int main(int argc, const char **argv)
>  {
>         int err;
> @@ -576,3 +577,4 @@ int main(int argc, const char **argv)
>  out:
>         return 1;
>  }
> +#endif
>

It's possible. Would need to make the static functions not warn about
being declared and not used. I still think that just aligning
definitions and declarations yields the most expected code and will
lead to fewer problems in the long run.

Thanks,
Ian



More information about the linux-arm-kernel mailing list