linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 0/4] perf: Fix archive/debugcache PE files
@ 2021-02-10 19:17 Nicholas Fraser
  2021-02-16 20:37 ` [PATCH 1/2] perf report: Remove redundant libbfd checks Nicholas Fraser
  2021-02-16 20:38 ` [PATCH 2/2] perf buildid-cache: Add test for 16-byte build-id Nicholas Fraser
  0 siblings, 2 replies; 10+ messages in thread
From: Nicholas Fraser @ 2021-02-10 19:17 UTC (permalink / raw)
  To: Peter Zijlstra, Ingo Molnar, Arnaldo Carvalho de Melo,
	Mark Rutland, Alexander Shishkin, Jiri Olsa, Namhyung Kim,
	Ian Rogers, Frank Ch. Eigler, Song Liu, Adrian Hunter,
	Kim Phillips, Tommi Rantala, Remi Bernon, linux-kernel
  Cc: Ulrich Czekalla, Huw Davies

Hello perf maintainers,

I have some patches to get "perf archive" working with PE binaries (e.g.
Wine DLLs or Windows executables.) The PE support in perf is fairly new and
"perf archive" hasn't been updated to work with it. In getting this working
I've come across a number of bugs in perf that these patches aim to fix.
The patches are independent and can be committed in any order.

Some of these are because build-ids are now variable width. Build-ids in PE
files are always 16-byte GUIDs; much of the existing code still assumes a
20-byte SHA-1 build-id. I've tried to make the minimal amount of changes to
allow 16-byte build-ids to work with a debugcache from a perf archive.

I'm new to kernel development so I apologize if I'm doing this incorrectly.

Thanks,

Nick

Nicholas Fraser (4):
  perf buildid-cache: Don't skip 16-byte build-ids
  perf report: Load PE files from debug cache only
  perf archive: Fix filtering of empty build-ids
  perf report: Fix return value when loading PE DSO

 tools/perf/perf-archive.sh |  3 +--
 tools/perf/util/build-id.c |  5 +++--
 tools/perf/util/build-id.h |  4 +++-
 tools/perf/util/symbol.c   | 12 ++++--------
 4 files changed, 11 insertions(+), 13 deletions(-)

-- 
2.30.0


^ permalink raw reply	[flat|nested] 10+ messages in thread

* [PATCH 1/2] perf report: Remove redundant libbfd checks
  2021-02-10 19:17 [PATCH 0/4] perf: Fix archive/debugcache PE files Nicholas Fraser
@ 2021-02-16 20:37 ` Nicholas Fraser
  2021-02-16 21:05   ` Nicholas Fraser
  2021-02-18 19:39   ` [PATCH 1/2] perf report: Remove redundant libbfd checks Arnaldo Carvalho de Melo
  2021-02-16 20:38 ` [PATCH 2/2] perf buildid-cache: Add test for 16-byte build-id Nicholas Fraser
  1 sibling, 2 replies; 10+ messages in thread
From: Nicholas Fraser @ 2021-02-16 20:37 UTC (permalink / raw)
  To: Peter Zijlstra, Ingo Molnar, Arnaldo Carvalho de Melo,
	Mark Rutland, Alexander Shishkin, Jiri Olsa, Namhyung Kim,
	Ian Rogers, Frank Ch. Eigler, Song Liu, Adrian Hunter,
	Kim Phillips, Tommi Rantala, Remi Bernon, linux-kernel
  Cc: Ulrich Czekalla, Huw Davies

This removes the redundant checks bfd_check_format() and
bfd_target_elf_flavour. They were previously checking different files.
---
 tools/perf/util/symbol.c | 9 ---------
 1 file changed, 9 deletions(-)

diff --git a/tools/perf/util/symbol.c b/tools/perf/util/symbol.c
index 492c873713cc..08f6f57c84fd 100644
--- a/tools/perf/util/symbol.c
+++ b/tools/perf/util/symbol.c
@@ -1586,15 +1586,6 @@ int dso__load_bfd_symbols(struct dso *dso, const char *debugfile)
 	if (section)
 		dso->text_offset = section->vma - section->filepos;
 
-	if (!bfd_check_format(abfd, bfd_object)) {
-		pr_debug2("%s: cannot read %s bfd file.\n", __func__,
-			  debugfile);
-		goto out_close;
-	}
-
-	if (bfd_get_flavour(abfd) == bfd_target_elf_flavour)
-		goto out_close;
-
 	symbols_size = bfd_get_symtab_upper_bound(abfd);
 	if (symbols_size == 0) {
 		bfd_close(abfd);
-- 
2.30.1

^ permalink raw reply related	[flat|nested] 10+ messages in thread

* [PATCH 2/2] perf buildid-cache: Add test for 16-byte build-id
  2021-02-10 19:17 [PATCH 0/4] perf: Fix archive/debugcache PE files Nicholas Fraser
  2021-02-16 20:37 ` [PATCH 1/2] perf report: Remove redundant libbfd checks Nicholas Fraser
@ 2021-02-16 20:38 ` Nicholas Fraser
  2021-02-16 21:04   ` Nicholas Fraser
  1 sibling, 1 reply; 10+ messages in thread
From: Nicholas Fraser @ 2021-02-16 20:38 UTC (permalink / raw)
  To: Peter Zijlstra, Ingo Molnar, Arnaldo Carvalho de Melo,
	Mark Rutland, Alexander Shishkin, Jiri Olsa, Namhyung Kim,
	Ian Rogers, Frank Ch. Eigler, Song Liu, Adrian Hunter,
	Kim Phillips, Tommi Rantala, Remi Bernon, linux-kernel
  Cc: Ulrich Czekalla, Huw Davies

tests/shell/buildid.sh added an ELF executable with an MD5 build-id to
the perf debug cache but did not check whether the object was printed
by a subsequent call to "perf buildid-cache -l". It was being omitted
from the list.

A previous commit fixed the bug that left it out of the list. This adds
a test for it.
---
 tools/perf/tests/shell/buildid.sh | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/tools/perf/tests/shell/buildid.sh b/tools/perf/tests/shell/buildid.sh
index 4861a20edee2..de02a23b7c7b 100755
--- a/tools/perf/tests/shell/buildid.sh
+++ b/tools/perf/tests/shell/buildid.sh
@@ -50,6 +50,12 @@ check()
 		exit 1
 	fi
 
+	${perf} buildid-cache -l|grep $id
+	if [ $? -ne 0 ]; then
+		echo "failed: ${id} is not reported by \"perf buildid-cache -l\""
+		exit 1
+	fi
+
 	echo "OK for ${1}"
 }
 
-- 
2.30.1



^ permalink raw reply related	[flat|nested] 10+ messages in thread

* Re: [PATCH 2/2] perf buildid-cache: Add test for 16-byte build-id
  2021-02-16 20:38 ` [PATCH 2/2] perf buildid-cache: Add test for 16-byte build-id Nicholas Fraser
@ 2021-02-16 21:04   ` Nicholas Fraser
  0 siblings, 0 replies; 10+ messages in thread
From: Nicholas Fraser @ 2021-02-16 21:04 UTC (permalink / raw)
  To: Peter Zijlstra, Ingo Molnar, Arnaldo Carvalho de Melo,
	Mark Rutland, Alexander Shishkin, Jiri Olsa, Namhyung Kim,
	Ian Rogers, Frank Ch. Eigler, Song Liu, Adrian Hunter,
	Kim Phillips, Tommi Rantala, Remi Bernon, linux-kernel
  Cc: Ulrich Czekalla, Huw Davies

Sorry, I just realized I forgot to run checkpatch.pl on these; they're
missing the --signoff. I'll re-send.

On 2021-02-16 3:38 p.m., Nicholas Fraser wrote:
> tests/shell/buildid.sh added an ELF executable with an MD5 build-id to
> the perf debug cache but did not check whether the object was printed
> by a subsequent call to "perf buildid-cache -l". It was being omitted
> from the list.
> 
> A previous commit fixed the bug that left it out of the list. This adds
> a test for it.
> ---
>  tools/perf/tests/shell/buildid.sh | 6 ++++++
>  1 file changed, 6 insertions(+)
> 
> diff --git a/tools/perf/tests/shell/buildid.sh b/tools/perf/tests/shell/buildid.sh
> index 4861a20edee2..de02a23b7c7b 100755
> --- a/tools/perf/tests/shell/buildid.sh
> +++ b/tools/perf/tests/shell/buildid.sh
> @@ -50,6 +50,12 @@ check()
>  		exit 1
>  	fi
>  
> +	${perf} buildid-cache -l|grep $id
> +	if [ $? -ne 0 ]; then
> +		echo "failed: ${id} is not reported by \"perf buildid-cache -l\""
> +		exit 1
> +	fi
> +
>  	echo "OK for ${1}"
>  }
>  
> 

^ permalink raw reply	[flat|nested] 10+ messages in thread

* [PATCH 1/2] perf report: Remove redundant libbfd checks
  2021-02-16 20:37 ` [PATCH 1/2] perf report: Remove redundant libbfd checks Nicholas Fraser
@ 2021-02-16 21:05   ` Nicholas Fraser
  2021-02-16 21:06     ` [PATCH 2/2] perf buildid-cache: Add test for 16-byte build-id Nicholas Fraser
  2021-02-18 19:39   ` [PATCH 1/2] perf report: Remove redundant libbfd checks Arnaldo Carvalho de Melo
  1 sibling, 1 reply; 10+ messages in thread
From: Nicholas Fraser @ 2021-02-16 21:05 UTC (permalink / raw)
  To: Peter Zijlstra, Ingo Molnar, Arnaldo Carvalho de Melo,
	Mark Rutland, Alexander Shishkin, Jiri Olsa, Namhyung Kim,
	Ian Rogers, Frank Ch. Eigler, Song Liu, Adrian Hunter,
	Kim Phillips, Tommi Rantala, Remi Bernon, linux-kernel
  Cc: Ulrich Czekalla, Huw Davies

This removes the redundant checks bfd_check_format() and
bfd_target_elf_flavour. They were previously checking different files.

Signed-off-by: Nicholas Fraser <nfraser@codeweavers.com>
---
 tools/perf/util/symbol.c | 9 ---------
 1 file changed, 9 deletions(-)

diff --git a/tools/perf/util/symbol.c b/tools/perf/util/symbol.c
index 492c873713cc..08f6f57c84fd 100644
--- a/tools/perf/util/symbol.c
+++ b/tools/perf/util/symbol.c
@@ -1586,15 +1586,6 @@ int dso__load_bfd_symbols(struct dso *dso, const char *debugfile)
 	if (section)
 		dso->text_offset = section->vma - section->filepos;
 
-	if (!bfd_check_format(abfd, bfd_object)) {
-		pr_debug2("%s: cannot read %s bfd file.\n", __func__,
-			  debugfile);
-		goto out_close;
-	}
-
-	if (bfd_get_flavour(abfd) == bfd_target_elf_flavour)
-		goto out_close;
-
 	symbols_size = bfd_get_symtab_upper_bound(abfd);
 	if (symbols_size == 0) {
 		bfd_close(abfd);
-- 
2.30.1


^ permalink raw reply related	[flat|nested] 10+ messages in thread

* [PATCH 2/2] perf buildid-cache: Add test for 16-byte build-id
  2021-02-16 21:05   ` Nicholas Fraser
@ 2021-02-16 21:06     ` Nicholas Fraser
  2021-02-17 19:53       ` Jiri Olsa
  0 siblings, 1 reply; 10+ messages in thread
From: Nicholas Fraser @ 2021-02-16 21:06 UTC (permalink / raw)
  To: Peter Zijlstra, Ingo Molnar, Arnaldo Carvalho de Melo,
	Mark Rutland, Alexander Shishkin, Jiri Olsa, Namhyung Kim,
	Ian Rogers, Frank Ch. Eigler, Song Liu, Adrian Hunter,
	Kim Phillips, Tommi Rantala, Remi Bernon, linux-kernel
  Cc: Ulrich Czekalla, Huw Davies

tests/shell/buildid.sh added an ELF executable with an MD5 build-id to
the perf debug cache but did not check whether the object was printed
by a subsequent call to "perf buildid-cache -l". It was being omitted
from the list.

A previous commit fixed the bug that left it out of the list. This adds
a test for it.

Signed-off-by: Nicholas Fraser <nfraser@codeweavers.com>
---
 tools/perf/tests/shell/buildid.sh | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/tools/perf/tests/shell/buildid.sh b/tools/perf/tests/shell/buildid.sh
index 4861a20edee2..de02a23b7c7b 100755
--- a/tools/perf/tests/shell/buildid.sh
+++ b/tools/perf/tests/shell/buildid.sh
@@ -50,6 +50,12 @@ check()
 		exit 1
 	fi
 
+	${perf} buildid-cache -l|grep $id
+	if [ $? -ne 0 ]; then
+		echo "failed: ${id} is not reported by \"perf buildid-cache -l\""
+		exit 1
+	fi
+
 	echo "OK for ${1}"
 }
 
-- 
2.30.1


^ permalink raw reply related	[flat|nested] 10+ messages in thread

* Re: [PATCH 2/2] perf buildid-cache: Add test for 16-byte build-id
  2021-02-16 21:06     ` [PATCH 2/2] perf buildid-cache: Add test for 16-byte build-id Nicholas Fraser
@ 2021-02-17 19:53       ` Jiri Olsa
  0 siblings, 0 replies; 10+ messages in thread
From: Jiri Olsa @ 2021-02-17 19:53 UTC (permalink / raw)
  To: Nicholas Fraser
  Cc: Peter Zijlstra, Ingo Molnar, Arnaldo Carvalho de Melo,
	Mark Rutland, Alexander Shishkin, Namhyung Kim, Ian Rogers,
	Frank Ch. Eigler, Song Liu, Adrian Hunter, Kim Phillips,
	Tommi Rantala, Remi Bernon, linux-kernel, Ulrich Czekalla,
	Huw Davies

On Tue, Feb 16, 2021 at 04:06:44PM -0500, Nicholas Fraser wrote:
> tests/shell/buildid.sh added an ELF executable with an MD5 build-id to
> the perf debug cache but did not check whether the object was printed
> by a subsequent call to "perf buildid-cache -l". It was being omitted
> from the list.
> 
> A previous commit fixed the bug that left it out of the list. This adds
> a test for it.
> 
> Signed-off-by: Nicholas Fraser <nfraser@codeweavers.com>

Acked-by: Jiri Olsa <jolsa@redhat.com>

few nits below

> ---
>  tools/perf/tests/shell/buildid.sh | 6 ++++++
>  1 file changed, 6 insertions(+)
> 
> diff --git a/tools/perf/tests/shell/buildid.sh b/tools/perf/tests/shell/buildid.sh
> index 4861a20edee2..de02a23b7c7b 100755
> --- a/tools/perf/tests/shell/buildid.sh
> +++ b/tools/perf/tests/shell/buildid.sh
> @@ -50,6 +50,12 @@ check()
>  		exit 1
>  	fi
>  
> +	${perf} buildid-cache -l|grep $id

please make space before and after '|'
and use ${id} instead of $id, we use that all over the script

thanks,
jirka


> +	if [ $? -ne 0 ]; then
> +		echo "failed: ${id} is not reported by \"perf buildid-cache -l\""
> +		exit 1
> +	fi
> +
>  	echo "OK for ${1}"
>  }
>  
> -- 
> 2.30.1
> 


^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH 1/2] perf report: Remove redundant libbfd checks
  2021-02-16 20:37 ` [PATCH 1/2] perf report: Remove redundant libbfd checks Nicholas Fraser
  2021-02-16 21:05   ` Nicholas Fraser
@ 2021-02-18 19:39   ` Arnaldo Carvalho de Melo
  2021-02-18 19:42     ` Nicholas Fraser
  1 sibling, 1 reply; 10+ messages in thread
From: Arnaldo Carvalho de Melo @ 2021-02-18 19:39 UTC (permalink / raw)
  To: Nicholas Fraser
  Cc: Peter Zijlstra, Ingo Molnar, Mark Rutland, Alexander Shishkin,
	Jiri Olsa, Namhyung Kim, Ian Rogers, Frank Ch. Eigler, Song Liu,
	Adrian Hunter, Kim Phillips, Tommi Rantala, Remi Bernon,
	linux-kernel, Ulrich Czekalla, Huw Davies

Em Tue, Feb 16, 2021 at 03:37:20PM -0500, Nicholas Fraser escreveu:
> This removes the redundant checks bfd_check_format() and
> bfd_target_elf_flavour. They were previously checking different files.

you forgot the:

Signed-off-by: Nicholas Fraser <nfraser@codeweavers.com>

I'm adding it, ok?

I'm also addressing Jiri's remark about spaces surrounding |

- Arnaldo
> ---
>  tools/perf/util/symbol.c | 9 ---------
>  1 file changed, 9 deletions(-)
> 
> diff --git a/tools/perf/util/symbol.c b/tools/perf/util/symbol.c
> index 492c873713cc..08f6f57c84fd 100644
> --- a/tools/perf/util/symbol.c
> +++ b/tools/perf/util/symbol.c
> @@ -1586,15 +1586,6 @@ int dso__load_bfd_symbols(struct dso *dso, const char *debugfile)
>  	if (section)
>  		dso->text_offset = section->vma - section->filepos;
>  
> -	if (!bfd_check_format(abfd, bfd_object)) {
> -		pr_debug2("%s: cannot read %s bfd file.\n", __func__,
> -			  debugfile);
> -		goto out_close;
> -	}
> -
> -	if (bfd_get_flavour(abfd) == bfd_target_elf_flavour)
> -		goto out_close;
> -
>  	symbols_size = bfd_get_symtab_upper_bound(abfd);
>  	if (symbols_size == 0) {
>  		bfd_close(abfd);
> -- 
> 2.30.1

-- 

- Arnaldo

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH 1/2] perf report: Remove redundant libbfd checks
  2021-02-18 19:39   ` [PATCH 1/2] perf report: Remove redundant libbfd checks Arnaldo Carvalho de Melo
@ 2021-02-18 19:42     ` Nicholas Fraser
  2021-02-18 19:45       ` Arnaldo Carvalho de Melo
  0 siblings, 1 reply; 10+ messages in thread
From: Nicholas Fraser @ 2021-02-18 19:42 UTC (permalink / raw)
  To: Arnaldo Carvalho de Melo
  Cc: Peter Zijlstra, Ingo Molnar, Mark Rutland, Alexander Shishkin,
	Jiri Olsa, Namhyung Kim, Ian Rogers, Frank Ch. Eigler, Song Liu,
	Adrian Hunter, Kim Phillips, Tommi Rantala, Remi Bernon,
	linux-kernel, Ulrich Czekalla, Huw Davies


On 2021-02-18 2:39 p.m., Arnaldo Carvalho de Melo wrote:
> you forgot the:
> 
> Signed-off-by: Nicholas Fraser <nfraser@codeweavers.com>
> 
> I'm adding it, ok?

Ah yes sorry about that, to be explicit here it is:

Signed-off-by: Nicholas Fraser <nfraser@codeweavers.com>

> 
> I'm also addressing Jiri's remark about spaces surrounding |
> 

Thanks. I included this fix in my follow-up patch though so
you might get a conflict.

Nick

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH 1/2] perf report: Remove redundant libbfd checks
  2021-02-18 19:42     ` Nicholas Fraser
@ 2021-02-18 19:45       ` Arnaldo Carvalho de Melo
  0 siblings, 0 replies; 10+ messages in thread
From: Arnaldo Carvalho de Melo @ 2021-02-18 19:45 UTC (permalink / raw)
  To: Nicholas Fraser
  Cc: Peter Zijlstra, Ingo Molnar, Mark Rutland, Alexander Shishkin,
	Jiri Olsa, Namhyung Kim, Ian Rogers, Frank Ch. Eigler, Song Liu,
	Adrian Hunter, Kim Phillips, Tommi Rantala, Remi Bernon,
	linux-kernel, Ulrich Czekalla, Huw Davies

Em Thu, Feb 18, 2021 at 02:42:17PM -0500, Nicholas Fraser escreveu:
> 
> On 2021-02-18 2:39 p.m., Arnaldo Carvalho de Melo wrote:
> > you forgot the:
> > 
> > Signed-off-by: Nicholas Fraser <nfraser@codeweavers.com>
> > 
> > I'm adding it, ok?
> 
> Ah yes sorry about that, to be explicit here it is:
> 
> Signed-off-by: Nicholas Fraser <nfraser@codeweavers.com>
> 
> > 
> > I'm also addressing Jiri's remark about spaces surrounding |
> > 
> 
> Thanks. I included this fix in my follow-up patch though so
> you might get a conflict.

I'm pushing to tmp.perf/core what I have, I think there are missing
patches and the latest test isn't applying. can you please take a look
and perhaps refresh patches?

I'll start the tests now so that I can move all this to perf/core
proper.

- Arnaldo

^ permalink raw reply	[flat|nested] 10+ messages in thread

end of thread, other threads:[~2021-02-18 20:00 UTC | newest]

Thread overview: 10+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-02-10 19:17 [PATCH 0/4] perf: Fix archive/debugcache PE files Nicholas Fraser
2021-02-16 20:37 ` [PATCH 1/2] perf report: Remove redundant libbfd checks Nicholas Fraser
2021-02-16 21:05   ` Nicholas Fraser
2021-02-16 21:06     ` [PATCH 2/2] perf buildid-cache: Add test for 16-byte build-id Nicholas Fraser
2021-02-17 19:53       ` Jiri Olsa
2021-02-18 19:39   ` [PATCH 1/2] perf report: Remove redundant libbfd checks Arnaldo Carvalho de Melo
2021-02-18 19:42     ` Nicholas Fraser
2021-02-18 19:45       ` Arnaldo Carvalho de Melo
2021-02-16 20:38 ` [PATCH 2/2] perf buildid-cache: Add test for 16-byte build-id Nicholas Fraser
2021-02-16 21:04   ` Nicholas Fraser

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).