2023-06-27 06:41:03

by Namhyung Kim

[permalink] [raw]
Subject: [PATCH] perf test: Fix a compile error on pe-file-parsing.c

The dso__find_symbol_by_name() should be have idx pointer argument.
Found during the build-test.

$ make build-test
...
CC /tmp/tmp.6JwPK1xbWG/tests/pe-file-parsing.o
tests/pe-file-parsing.c: In function ‘run_dir’:
tests/pe-file-parsing.c:64:15: error: too few arguments to function ‘dso__find_symbol_by_name’
64 | sym = dso__find_symbol_by_name(dso, "main");
| ^~~~~~~~~~~~~~~~~~~~~~~~
In file included from tests/pe-file-parsing.c:16:
/usr/local/google/home/namhyung/project/linux/tools/perf/util/symbol.h:135:16: note: declared here
135 | struct symbol *dso__find_symbol_by_name(struct dso *dso, const char *name, size_t *idx);
| ^~~~~~~~~~~~~~~~~~~~~~~~

Fixes: 259dce914e93 ("perf symbol: Remove symbol_name_rb_node")
Signed-off-by: Namhyung Kim <[email protected]>
---
tools/perf/Makefile.config | 13 ++++++++++---
tools/perf/tests/pe-file-parsing.c | 3 ++-
2 files changed, 12 insertions(+), 4 deletions(-)

diff --git a/tools/perf/Makefile.config b/tools/perf/Makefile.config
index 78411252b72a..0609c19caabd 100644
--- a/tools/perf/Makefile.config
+++ b/tools/perf/Makefile.config
@@ -315,6 +315,9 @@ FEATURE_CHECK_LDFLAGS-libpython := $(PYTHON_EMBED_LDOPTS)

FEATURE_CHECK_LDFLAGS-libaio = -lrt

+FEATURE_CHECK_LDFLAGS-disassembler-four-args = -lbfd -lopcodes -ldl
+FEATURE_CHECK_LDFLAGS-disassembler-init-styled = -lbfd -lopcodes -ldl
+
CORE_CFLAGS += -fno-omit-frame-pointer
CORE_CFLAGS += -ggdb3
CORE_CFLAGS += -funwind-tables
@@ -344,8 +347,8 @@ ifneq ($(TCMALLOC),)
endif

ifeq ($(FEATURES_DUMP),)
-# We will display at the end of this Makefile.config, using $(call feature_display_entries),
-# as we may retry some feature detection here.
+# We will display at the end of this Makefile.config, using $(call feature_display_entries)
+# As we may retry some feature detection here, see the disassembler-four-args case, for instance
FEATURE_DISPLAY_DEFERRED := 1
include $(srctree)/tools/build/Makefile.feature
else
@@ -907,9 +910,13 @@ ifdef BUILD_NONDISTRO

ifeq ($(feature-libbfd-liberty), 1)
EXTLIBS += -lbfd -lopcodes -liberty
+ FEATURE_CHECK_LDFLAGS-disassembler-four-args += -liberty -ldl
+ FEATURE_CHECK_LDFLAGS-disassembler-init-styled += -liberty -ldl
else
ifeq ($(feature-libbfd-liberty-z), 1)
EXTLIBS += -lbfd -lopcodes -liberty -lz
+ FEATURE_CHECK_LDFLAGS-disassembler-four-args += -liberty -lz -ldl
+ FEATURE_CHECK_LDFLAGS-disassembler-init-styled += -liberty -lz -ldl
endif
endif
$(call feature_check,disassembler-four-args)
@@ -1333,6 +1340,6 @@ endif

# re-generate FEATURE-DUMP as we may have called feature_check, found out
# extra libraries to add to LDFLAGS of some other test and then redo those
-# tests.
+# tests, see the block about libbfd, disassembler-four-args, for instance.
$(shell rm -f $(FEATURE_DUMP_FILENAME))
$(foreach feat,$(FEATURE_TESTS),$(shell echo "$(call feature_assign,$(feat))" >> $(FEATURE_DUMP_FILENAME)))
diff --git a/tools/perf/tests/pe-file-parsing.c b/tools/perf/tests/pe-file-parsing.c
index c09a9fae1689..fff58b220c07 100644
--- a/tools/perf/tests/pe-file-parsing.c
+++ b/tools/perf/tests/pe-file-parsing.c
@@ -34,6 +34,7 @@ static int run_dir(const char *d)
struct dso *dso;
struct symbol *sym;
int ret;
+ size_t idx;

scnprintf(filename, PATH_MAX, "%s/pe-file.exe", d);
ret = filename__read_build_id(filename, &bid);
@@ -61,7 +62,7 @@ static int run_dir(const char *d)
TEST_ASSERT_VAL("Failed to load symbols", ret == 0);

dso__sort_by_name(dso);
- sym = dso__find_symbol_by_name(dso, "main");
+ sym = dso__find_symbol_by_name(dso, "main", &idx);
TEST_ASSERT_VAL("Failed to find main", sym);
dso__delete(dso);

--
2.41.0.162.gfafddb0af9-goog



2023-06-27 15:47:32

by Ian Rogers

[permalink] [raw]
Subject: Re: [PATCH] perf test: Fix a compile error on pe-file-parsing.c

On Mon, Jun 26, 2023 at 11:33 PM Namhyung Kim <[email protected]> wrote:
>
> The dso__find_symbol_by_name() should be have idx pointer argument.
> Found during the build-test.
>
> $ make build-test
> ...
> CC /tmp/tmp.6JwPK1xbWG/tests/pe-file-parsing.o
> tests/pe-file-parsing.c: In function ‘run_dir’:
> tests/pe-file-parsing.c:64:15: error: too few arguments to function ‘dso__find_symbol_by_name’
> 64 | sym = dso__find_symbol_by_name(dso, "main");
> | ^~~~~~~~~~~~~~~~~~~~~~~~
> In file included from tests/pe-file-parsing.c:16:
> /usr/local/google/home/namhyung/project/linux/tools/perf/util/symbol.h:135:16: note: declared here
> 135 | struct symbol *dso__find_symbol_by_name(struct dso *dso, const char *name, size_t *idx);
> | ^~~~~~~~~~~~~~~~~~~~~~~~
>
> Fixes: 259dce914e93 ("perf symbol: Remove symbol_name_rb_node")
> Signed-off-by: Namhyung Kim <[email protected]>

Acked-by: Ian Rogers <[email protected]>

Thanks,
Ian

> ---
> tools/perf/Makefile.config | 13 ++++++++++---
> tools/perf/tests/pe-file-parsing.c | 3 ++-
> 2 files changed, 12 insertions(+), 4 deletions(-)
>
> diff --git a/tools/perf/Makefile.config b/tools/perf/Makefile.config
> index 78411252b72a..0609c19caabd 100644
> --- a/tools/perf/Makefile.config
> +++ b/tools/perf/Makefile.config
> @@ -315,6 +315,9 @@ FEATURE_CHECK_LDFLAGS-libpython := $(PYTHON_EMBED_LDOPTS)
>
> FEATURE_CHECK_LDFLAGS-libaio = -lrt
>
> +FEATURE_CHECK_LDFLAGS-disassembler-four-args = -lbfd -lopcodes -ldl
> +FEATURE_CHECK_LDFLAGS-disassembler-init-styled = -lbfd -lopcodes -ldl
> +
> CORE_CFLAGS += -fno-omit-frame-pointer
> CORE_CFLAGS += -ggdb3
> CORE_CFLAGS += -funwind-tables
> @@ -344,8 +347,8 @@ ifneq ($(TCMALLOC),)
> endif
>
> ifeq ($(FEATURES_DUMP),)
> -# We will display at the end of this Makefile.config, using $(call feature_display_entries),
> -# as we may retry some feature detection here.
> +# We will display at the end of this Makefile.config, using $(call feature_display_entries)
> +# As we may retry some feature detection here, see the disassembler-four-args case, for instance
> FEATURE_DISPLAY_DEFERRED := 1
> include $(srctree)/tools/build/Makefile.feature
> else
> @@ -907,9 +910,13 @@ ifdef BUILD_NONDISTRO
>
> ifeq ($(feature-libbfd-liberty), 1)
> EXTLIBS += -lbfd -lopcodes -liberty
> + FEATURE_CHECK_LDFLAGS-disassembler-four-args += -liberty -ldl
> + FEATURE_CHECK_LDFLAGS-disassembler-init-styled += -liberty -ldl
> else
> ifeq ($(feature-libbfd-liberty-z), 1)
> EXTLIBS += -lbfd -lopcodes -liberty -lz
> + FEATURE_CHECK_LDFLAGS-disassembler-four-args += -liberty -lz -ldl
> + FEATURE_CHECK_LDFLAGS-disassembler-init-styled += -liberty -lz -ldl
> endif
> endif
> $(call feature_check,disassembler-four-args)
> @@ -1333,6 +1340,6 @@ endif
>
> # re-generate FEATURE-DUMP as we may have called feature_check, found out
> # extra libraries to add to LDFLAGS of some other test and then redo those
> -# tests.
> +# tests, see the block about libbfd, disassembler-four-args, for instance.
> $(shell rm -f $(FEATURE_DUMP_FILENAME))
> $(foreach feat,$(FEATURE_TESTS),$(shell echo "$(call feature_assign,$(feat))" >> $(FEATURE_DUMP_FILENAME)))
> diff --git a/tools/perf/tests/pe-file-parsing.c b/tools/perf/tests/pe-file-parsing.c
> index c09a9fae1689..fff58b220c07 100644
> --- a/tools/perf/tests/pe-file-parsing.c
> +++ b/tools/perf/tests/pe-file-parsing.c
> @@ -34,6 +34,7 @@ static int run_dir(const char *d)
> struct dso *dso;
> struct symbol *sym;
> int ret;
> + size_t idx;
>
> scnprintf(filename, PATH_MAX, "%s/pe-file.exe", d);
> ret = filename__read_build_id(filename, &bid);
> @@ -61,7 +62,7 @@ static int run_dir(const char *d)
> TEST_ASSERT_VAL("Failed to load symbols", ret == 0);
>
> dso__sort_by_name(dso);
> - sym = dso__find_symbol_by_name(dso, "main");
> + sym = dso__find_symbol_by_name(dso, "main", &idx);
> TEST_ASSERT_VAL("Failed to find main", sym);
> dso__delete(dso);
>
> --
> 2.41.0.162.gfafddb0af9-goog
>

2023-06-27 20:10:55

by Namhyung Kim

[permalink] [raw]
Subject: Re: [PATCH] perf test: Fix a compile error on pe-file-parsing.c

On Tue, Jun 27, 2023 at 7:56 AM Ian Rogers <[email protected]> wrote:
>
> On Mon, Jun 26, 2023 at 11:33 PM Namhyung Kim <[email protected]> wrote:
> >
> > The dso__find_symbol_by_name() should be have idx pointer argument.
> > Found during the build-test.
> >
> > $ make build-test
> > ...
> > CC /tmp/tmp.6JwPK1xbWG/tests/pe-file-parsing.o
> > tests/pe-file-parsing.c: In function ‘run_dir’:
> > tests/pe-file-parsing.c:64:15: error: too few arguments to function ‘dso__find_symbol_by_name’
> > 64 | sym = dso__find_symbol_by_name(dso, "main");
> > | ^~~~~~~~~~~~~~~~~~~~~~~~
> > In file included from tests/pe-file-parsing.c:16:
> > /usr/local/google/home/namhyung/project/linux/tools/perf/util/symbol.h:135:16: note: declared here
> > 135 | struct symbol *dso__find_symbol_by_name(struct dso *dso, const char *name, size_t *idx);
> > | ^~~~~~~~~~~~~~~~~~~~~~~~
> >
> > Fixes: 259dce914e93 ("perf symbol: Remove symbol_name_rb_node")
> > Signed-off-by: Namhyung Kim <[email protected]>
>
> Acked-by: Ian Rogers <[email protected]>

Applied to perf-tools-next, thanks!