diff mbox series

pahole: New version 1.25 release?

Message ID CA+icZUVbv2T7SExVULn6Bh1mB=VpmYGbH-4U63PKrHPyi6uULQ@mail.gmail.com (mailing list archive)
State RFC
Headers show
Series pahole: New version 1.25 release? | expand

Checks

Context Check Description
netdev/tree_selection success Not a local patch

Commit Message

Sedat Dilek Jan. 20, 2023, 5:40 p.m. UTC
Hi Arnaldo,

I use CONFIG_DEBUG_INFO_BTF=y with LLVM-15.

Darkly, I remember I needed some post-v1.24 fixes.

Currently, I use:

$ git describe
v1.24-26-gb72f5188856d

commit b72f5188856d
"dwarves: Zero-initialize struct cu in cu__new() to prevent incorrect BTF types"

Any plans to release a pahole version 1.25?

Thanks.

Best regards,
-Sedat-

P.S.: I still carry this diff around (attached as diff as Gmail might
truncate the following lines):

$ cd /path/to/pahole.git

$ git diff dwarf_loader.c
{
@@ -2827,7 +2827,7 @@ static bool cus__merging_cu(Dwarf *dw, Elf *elf)
                       size_t name_off, desc_off, offset = 0;
                       GElf_Nhdr hdr;
                       while ((offset = gelf_getnote(data, offset,
&hdr, &name_off, &desc_off)) != 0) {
-                               if (hdr.n_type != LINUX_ELFNOTE_BUILD_LTO)
+                               if (hdr.n_type != LINUX_ELFNOTE_LTO_INFO)
                                       continue;

                               /* owner is Linux */

$ cd /path/to/linux.git

$ git describe
v6.2-rc4-77-gd368967cb103

$ git grep LINUX_ELFNOTE_LTO_INFO include/linux/elfnote-lto.h
include/linux/elfnote-lto.h:#define LINUX_ELFNOTE_LTO_INFO      0x101
include/linux/elfnote-lto.h:#define BUILD_LTO_INFO
ELFNOTE32("Linux", LINUX_ELFNOTE_LTO_INFO, 1)
include/linux/elfnote-lto.h:#define BUILD_LTO_INFO
ELFNOTE32("Linux", LINUX_ELFNOTE_LTO_INFO, 0)
dileks@iniza:~/src/linux/git$ git describe
v6.2-rc4-195-gf609936e078d

-EOT-

Comments

Arnaldo Carvalho de Melo Jan. 20, 2023, 5:46 p.m. UTC | #1
Em Fri, Jan 20, 2023 at 06:40:38PM +0100, Sedat Dilek escreveu:
> Hi Arnaldo,
> 
> I use CONFIG_DEBUG_INFO_BTF=y with LLVM-15.
> 
> Darkly, I remember I needed some post-v1.24 fixes.
> 
> Currently, I use:
> 
> $ git describe
> v1.24-26-gb72f5188856d
> 
> commit b72f5188856d
> "dwarves: Zero-initialize struct cu in cu__new() to prevent incorrect BTF types"
> 
> Any plans to release a pahole version 1.25?

Probably next week, I just have to differentiate a file with split dwarf
to remove a slight hack I have right now.

- Arnaldo
 
> Thanks.
> 
> Best regards,
> -Sedat-
> 
> P.S.: I still carry this diff around (attached as diff as Gmail might
> truncate the following lines):

Ok, that is in the same function I have to differentiate if the file
makes reference to another DWARF file (the split dwarf, .dwz thing),
I'll check this patch, thanks!
 
> $ cd /path/to/pahole.git
> 
> $ git diff dwarf_loader.c
> diff --git a/dwarf_loader.c b/dwarf_loader.c
> index 5a74035c5708..96ce5db4f5bc 100644
> --- a/dwarf_loader.c
> +++ b/dwarf_loader.c
> @@ -2808,8 +2808,8 @@ static int __cus__load_debug_types(struct
> conf_load *conf, Dwfl_Module *mod, Dwa
>        return 0;
> }
> 
> -/* Match the define in linux:include/linux/elfnote.h */
> -#define LINUX_ELFNOTE_BUILD_LTO                0x101
> +/* Match the define in linux:include/linux/elfnote-lto.h */
> +#define LINUX_ELFNOTE_LTO_INFO         0x101
> 
> static bool cus__merging_cu(Dwarf *dw, Elf *elf)
> {
> @@ -2827,7 +2827,7 @@ static bool cus__merging_cu(Dwarf *dw, Elf *elf)
>                        size_t name_off, desc_off, offset = 0;
>                        GElf_Nhdr hdr;
>                        while ((offset = gelf_getnote(data, offset,
> &hdr, &name_off, &desc_off)) != 0) {
> -                               if (hdr.n_type != LINUX_ELFNOTE_BUILD_LTO)
> +                               if (hdr.n_type != LINUX_ELFNOTE_LTO_INFO)
>                                        continue;
> 
>                                /* owner is Linux */
> 
> $ cd /path/to/linux.git
> 
> $ git describe
> v6.2-rc4-77-gd368967cb103
> 
> $ git grep LINUX_ELFNOTE_LTO_INFO include/linux/elfnote-lto.h
> include/linux/elfnote-lto.h:#define LINUX_ELFNOTE_LTO_INFO      0x101
> include/linux/elfnote-lto.h:#define BUILD_LTO_INFO
> ELFNOTE32("Linux", LINUX_ELFNOTE_LTO_INFO, 1)
> include/linux/elfnote-lto.h:#define BUILD_LTO_INFO
> ELFNOTE32("Linux", LINUX_ELFNOTE_LTO_INFO, 0)
> dileks@iniza:~/src/linux/git$ git describe
> v6.2-rc4-195-gf609936e078d
> 
> -EOT-

> diff --git a/dwarf_loader.c b/dwarf_loader.c
> index 5a74035c5708..96ce5db4f5bc 100644
> --- a/dwarf_loader.c
> +++ b/dwarf_loader.c
> @@ -2808,8 +2808,8 @@ static int __cus__load_debug_types(struct conf_load *conf, Dwfl_Module *mod, Dwa
>  	return 0;
>  }
>  
> -/* Match the define in linux:include/linux/elfnote.h */
> -#define LINUX_ELFNOTE_BUILD_LTO		0x101
> +/* Match the define in linux:include/linux/elfnote-lto.h */
> +#define LINUX_ELFNOTE_LTO_INFO		0x101
>  
>  static bool cus__merging_cu(Dwarf *dw, Elf *elf)
>  {
> @@ -2827,7 +2827,7 @@ static bool cus__merging_cu(Dwarf *dw, Elf *elf)
>  			size_t name_off, desc_off, offset = 0;
>  			GElf_Nhdr hdr;
>  			while ((offset = gelf_getnote(data, offset, &hdr, &name_off, &desc_off)) != 0) {
> -				if (hdr.n_type != LINUX_ELFNOTE_BUILD_LTO)
> +				if (hdr.n_type != LINUX_ELFNOTE_LTO_INFO)
>  					continue;
>  
>  				/* owner is Linux */
Yonghong Song Jan. 20, 2023, 7:15 p.m. UTC | #2
On 1/20/23 9:40 AM, Sedat Dilek wrote:
> Hi Arnaldo,
> 
> I use CONFIG_DEBUG_INFO_BTF=y with LLVM-15.
> 
> Darkly, I remember I needed some post-v1.24 fixes.
> 
> Currently, I use:
> 
> $ git describe
> v1.24-26-gb72f5188856d
> 
> commit b72f5188856d
> "dwarves: Zero-initialize struct cu in cu__new() to prevent incorrect BTF types"
> 
> Any plans to release a pahole version 1.25?
> 
> Thanks.
> 
> Best regards,
> -Sedat-
> 
> P.S.: I still carry this diff around (attached as diff as Gmail might
> truncate the following lines):
> 
> $ cd /path/to/pahole.git
> 
> $ git diff dwarf_loader.c
> diff --git a/dwarf_loader.c b/dwarf_loader.c
> index 5a74035c5708..96ce5db4f5bc 100644
> --- a/dwarf_loader.c
> +++ b/dwarf_loader.c
> @@ -2808,8 +2808,8 @@ static int __cus__load_debug_types(struct
> conf_load *conf, Dwfl_Module *mod, Dwa
>         return 0;
> }
> 
> -/* Match the define in linux:include/linux/elfnote.h */
> -#define LINUX_ELFNOTE_BUILD_LTO                0x101
> +/* Match the define in linux:include/linux/elfnote-lto.h */
> +#define LINUX_ELFNOTE_LTO_INFO         0x101
> 
> static bool cus__merging_cu(Dwarf *dw, Elf *elf)
> {
> @@ -2827,7 +2827,7 @@ static bool cus__merging_cu(Dwarf *dw, Elf *elf)
>                         size_t name_off, desc_off, offset = 0;
>                         GElf_Nhdr hdr;
>                         while ((offset = gelf_getnote(data, offset,
> &hdr, &name_off, &desc_off)) != 0) {
> -                               if (hdr.n_type != LINUX_ELFNOTE_BUILD_LTO)
> +                               if (hdr.n_type != LINUX_ELFNOTE_LTO_INFO)
>                                         continue;
> 
>                                 /* owner is Linux */

Ya, LINUX_ELFNOTE_BUILD_LTO is initially proposed macro name but later
the formal kernel patch used LINUX_ELFNOTE_LTO_INFO. Could you submit
a pahole for this so it is consistent with kernel? Thanks!

> 
> $ cd /path/to/linux.git
> 
> $ git describe
> v6.2-rc4-77-gd368967cb103
> 
> $ git grep LINUX_ELFNOTE_LTO_INFO include/linux/elfnote-lto.h
> include/linux/elfnote-lto.h:#define LINUX_ELFNOTE_LTO_INFO      0x101
> include/linux/elfnote-lto.h:#define BUILD_LTO_INFO
> ELFNOTE32("Linux", LINUX_ELFNOTE_LTO_INFO, 1)
> include/linux/elfnote-lto.h:#define BUILD_LTO_INFO
> ELFNOTE32("Linux", LINUX_ELFNOTE_LTO_INFO, 0)
> dileks@iniza:~/src/linux/git$ git describe
> v6.2-rc4-195-gf609936e078d
> 
> -EOT-
Sedat Dilek Jan. 20, 2023, 8:15 p.m. UTC | #3
On Fri, Jan 20, 2023 at 8:15 PM Yonghong Song <yhs@meta.com> wrote:
>
>
>
> On 1/20/23 9:40 AM, Sedat Dilek wrote:
> > Hi Arnaldo,
> >
> > I use CONFIG_DEBUG_INFO_BTF=y with LLVM-15.
> >
> > Darkly, I remember I needed some post-v1.24 fixes.
> >
> > Currently, I use:
> >
> > $ git describe
> > v1.24-26-gb72f5188856d
> >
> > commit b72f5188856d
> > "dwarves: Zero-initialize struct cu in cu__new() to prevent incorrect BTF types"
> >
> > Any plans to release a pahole version 1.25?
> >
> > Thanks.
> >
> > Best regards,
> > -Sedat-
> >
> > P.S.: I still carry this diff around (attached as diff as Gmail might
> > truncate the following lines):
> >
> > $ cd /path/to/pahole.git
> >
> > $ git diff dwarf_loader.c
> > diff --git a/dwarf_loader.c b/dwarf_loader.c
> > index 5a74035c5708..96ce5db4f5bc 100644
> > --- a/dwarf_loader.c
> > +++ b/dwarf_loader.c
> > @@ -2808,8 +2808,8 @@ static int __cus__load_debug_types(struct
> > conf_load *conf, Dwfl_Module *mod, Dwa
> >         return 0;
> > }
> >
> > -/* Match the define in linux:include/linux/elfnote.h */
> > -#define LINUX_ELFNOTE_BUILD_LTO                0x101
> > +/* Match the define in linux:include/linux/elfnote-lto.h */
> > +#define LINUX_ELFNOTE_LTO_INFO         0x101
> >
> > static bool cus__merging_cu(Dwarf *dw, Elf *elf)
> > {
> > @@ -2827,7 +2827,7 @@ static bool cus__merging_cu(Dwarf *dw, Elf *elf)
> >                         size_t name_off, desc_off, offset = 0;
> >                         GElf_Nhdr hdr;
> >                         while ((offset = gelf_getnote(data, offset,
> > &hdr, &name_off, &desc_off)) != 0) {
> > -                               if (hdr.n_type != LINUX_ELFNOTE_BUILD_LTO)
> > +                               if (hdr.n_type != LINUX_ELFNOTE_LTO_INFO)
> >                                         continue;
> >
> >                                 /* owner is Linux */
>
> Ya, LINUX_ELFNOTE_BUILD_LTO is initially proposed macro name but later
> the formal kernel patch used LINUX_ELFNOTE_LTO_INFO. Could you submit
> a pahole for this so it is consistent with kernel? Thanks!
>

Patch sent, see:

https://lore.kernel.org/all/20230120201203.10785-1-sedat.dilek@gmail.com/

-Sedat-

> >
> > $ cd /path/to/linux.git
> >
> > $ git describe
> > v6.2-rc4-77-gd368967cb103
> >
> > $ git grep LINUX_ELFNOTE_LTO_INFO include/linux/elfnote-lto.h
> > include/linux/elfnote-lto.h:#define LINUX_ELFNOTE_LTO_INFO      0x101
> > include/linux/elfnote-lto.h:#define BUILD_LTO_INFO
> > ELFNOTE32("Linux", LINUX_ELFNOTE_LTO_INFO, 1)
> > include/linux/elfnote-lto.h:#define BUILD_LTO_INFO
> > ELFNOTE32("Linux", LINUX_ELFNOTE_LTO_INFO, 0)
> > dileks@iniza:~/src/linux/git$ git describe
> > v6.2-rc4-195-gf609936e078d
> >
> > -EOT-
Sedat Dilek Feb. 2, 2023, 12:08 a.m. UTC | #4
On Fri, Jan 20, 2023 at 6:46 PM Arnaldo Carvalho de Melo
<arnaldo.melo@gmail.com> wrote:
>
> Probably next week, I just have to differentiate a file with split dwarf
> to remove a slight hack I have right now.
>

Thanks for pushing "dwarf_loader: Sync with LINUX_ELFNOTE_LTO_INFO
macro from kernel".

I see some updates in pahole.git#next with some Tested.by#s of you.
So, we are very close to a pre-1.25 release :-)?
Planning to test with Linux-v6.2-rc7...

-Sedat-

[1] https://git.kernel.org/pub/scm/devel/pahole/pahole.git/log/?h=next
diff mbox series

Patch

diff --git a/dwarf_loader.c b/dwarf_loader.c
index 5a74035c5708..96ce5db4f5bc 100644
--- a/dwarf_loader.c
+++ b/dwarf_loader.c
@@ -2808,8 +2808,8 @@  static int __cus__load_debug_types(struct conf_load *conf, Dwfl_Module *mod, Dwa
 	return 0;
 }
 
-/* Match the define in linux:include/linux/elfnote.h */
-#define LINUX_ELFNOTE_BUILD_LTO		0x101
+/* Match the define in linux:include/linux/elfnote-lto.h */
+#define LINUX_ELFNOTE_LTO_INFO		0x101
 
 static bool cus__merging_cu(Dwarf *dw, Elf *elf)
 {
@@ -2827,7 +2827,7 @@  static bool cus__merging_cu(Dwarf *dw, Elf *elf)
 			size_t name_off, desc_off, offset = 0;
 			GElf_Nhdr hdr;
 			while ((offset = gelf_getnote(data, offset, &hdr, &name_off, &desc_off)) != 0) {
-				if (hdr.n_type != LINUX_ELFNOTE_BUILD_LTO)
+				if (hdr.n_type != LINUX_ELFNOTE_LTO_INFO)
 					continue;
 
 				/* owner is Linux */