Re: ANNOUNCE: pahole v1.12 (BTF edition)

From: Arnaldo Carvalho de Melo
Date: Fri Aug 17 2018 - 10:38:32 EST


Em Thu, Aug 16, 2018 at 11:49:38PM +0200, Jan Engelhardt escreveu:
> On Thursday 2018-08-16 22:09, Arnaldo Carvalho de Melo wrote:
>
> > After a long time without announces, here is pahole 1.12,
> >available at:
> >
> > https://fedorapeople.org/~acme/dwarves/dwarves-1.12.tar.bz2
> >
> > git://git.kernel.org/pub/scm/devel/pahole/pahole.git
> >
> > Some distros haven't picked 1.11, that comes with several
> >goodies, my bad for not having announced it at that time more widely,
>
> Missing announcements can be forgiven. But there are automatic tools
> that scrape the web for updates (usually something tries to scan
> the enclosing directory of the last known URL), so uploads are
> essential.
> Since 1.11 was never uploaded, it did not find its way..
> (One had to grab a tarball gitweb generated from the tag,
> but had to know there was a 1.11, too).
>
>
> Can we have signatures for the release tarballs?
> (Only if you think it's worth having.)

Yeah, I think I can create a file with sha256 for the tarball and sign
it, just like I signed the v1.12 tag:

https://git.kernel.org/pub/scm/devel/pahole/pahole.git/tag/?h=v1.12

> >Please report any problems to me, I'll try and get problems fixed.
>
> Here's one (or six):

Yeah, C++ has been a second class citizen for all pahole's life, with
progress being made mostly when I collaborate with folks at the ATLAS
project at CERN that had tons of C++ code being ported from 32-bit based
clusters to 64-bit ones.

I'll try to work some time on the reports below to see if we get a bit
more progress there.

> $ cat x.cpp
> #include <utility>
> struct F {
> template<typename T, typename... A> F(T &, T &&, A &&...x) { }
> F clone() const && { int q; return F(q, 3, 4); }
> int xpub() { return xprot(); }
> protected:
> int xprot() { return xpriv(); }
> private:
> int xpriv() { return 0; }
> };
> int z;
> F f(z,2,3,4);
> int main()
> {
> f.xpub();
> std::move(f).clone();
> }
>
>
> $ g++-7 x.cpp -c -ggdb3 -Wall && pahole x.o
> die__process_function: tag not supported 0x2f (template_type_parameter)!
> //expected: handle type
> die__process_function: tag not supported 0x4107 (GNU_template_parameter_pack)!
> //expected: handle type
> die__process_function: tag not supported 0x4108 (GNU_formal_parameter_pack)!
> //expected: handle type
> ftype__recode_dwarf_types: couldn't find 0x321 abstract_origin for 0x397 (formal_parameter)!
> //expected: handle type
> ftype__recode_dwarf_types: couldn't find 0x326 abstract_origin for 0x39f (formal_parameter)!
> ftype__recode_dwarf_types: couldn't find 0x3e0 abstract_origin for 0x447 (formal_parameter)!
> struct F {
> class F clone(const class F *);
> //expected: "struct F clone(const struct F *&&);"
>
> int xpub(class F *);
>
> protected:
>
> int xprot(class F *);
>
> private:
>
> int xpriv(class F *);
>
> //expected: "public:"
>
> void F<int, int, int>(class F *, int &, , , );
> //expected: "void F<int, int, int>(struct F *, int &, int &&, int &&, int &&);
>
> void F<int, int>(class F *, int &, , );
> //expected: "void F<int, int, int>(struct F *, int &, int &&, int &&);
>
> /* size: 1, cachelines: 0, members: 0 */
> /* last cacheline: 1 bytes */
> };