dwarves.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v2 0/6] improve expanded header
@ 2021-12-07 17:31 Douglas RAILLARD
  2021-12-07 17:31 ` [PATCH v2 1/6] Revert "fprintf: Allow making struct/enum/union anonymous" Douglas RAILLARD
                   ` (6 more replies)
  0 siblings, 7 replies; 17+ messages in thread
From: Douglas RAILLARD @ 2021-12-07 17:31 UTC (permalink / raw)
  To: acme; +Cc: dwarves, douglas.raillard

From: Douglas Raillard <douglas.raillard@arm.com>

Improve headers generated with -E in a few ways:

  * Print each type only once, to avoid redefinitions

  * --forward_decl: Generate forward declaration for struct and union so
    that uses of pointers will work.

  * --expanded_prefix: Allow prefixing names of types added by -E (all
    the ones not explicitly requested with -C) so they can be namespaced
    manually. This is important in order to be able to mix
    pahole-generated headers with existing headers without clash or
    maintenance.


types.txt:

  t1
  t4

Original printed type with "-C types.txt -E":

  struct t1 {
    struct t2 *a;
    struct t3 {
      int a;
    } b;
  };

  struct t4 {
    struct t3 {
      int a;
    } a;
  };

After this series and with
"-C types.txt -E --expanded_prefix __pahole --forward_decl":

  struct t1
  struct t2;
  struct t3;

  struct t1 {
    struct t2 *a;
    struct __pahole_t3 {
      int a;
    } b;
  };

  struct t4 {
    struct __pahole_t3 a;
  };


This header can be freely mixed with any other header as long as they
don't define t1 or t4 (if there is a clash, then pahole is not necessary
and the user can just use the header in the first place).

TODOs:

  * Define types on their first use even when they are first used as
    pointers. Currently, if a type is only used as pointer it will never
    get defined, which will still compile thanks to --forward_decl but
    won't allow easy use of the values.

  * The prefix system allocates memory to rename types and never frees
    it. I don't think it's a big issue for now as it's done inside
    pahole.c and type names are likely necessary until the end of the
    process anyway, but it makes valgrind angry and could therefore mask
    other problems. There is another implementation of prefix that
    modifies dwarves_fprintf.c instead of changing the name but it was
    very invasive and impossible to check if prefixable spots were
    missed.


This series is to be applied on the "next" branch as it includes reverts
of the --inner_anonymous series, which is dropped since it could not
cope with recursive types.


Douglas Raillard (6):
  Revert "fprintf: Allow making struct/enum/union anonymous"
  Revert "pahole.c: Add --inner_anonymous option"
  fprintf: Print types only once
  pahole.c: Add prefix to expanded type names
  pahole.c: Add --expanded_prefix option
  pahole.c: Add --forward_decl option

 dwarves.h          | 12 ++++--
 dwarves_emit.c     |  2 +-
 dwarves_fprintf.c  | 77 +++++++++++++++++-------------------
 man-pages/pahole.1 |  8 ++--
 pahole.c           | 98 ++++++++++++++++++++++++++++++++++------------
 5 files changed, 121 insertions(+), 76 deletions(-)

-- 
2.25.1


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

end of thread, other threads:[~2021-12-17 18:40 UTC | newest]

Thread overview: 17+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-12-07 17:31 [PATCH v2 0/6] improve expanded header Douglas RAILLARD
2021-12-07 17:31 ` [PATCH v2 1/6] Revert "fprintf: Allow making struct/enum/union anonymous" Douglas RAILLARD
2021-12-07 17:31 ` [PATCH v2 2/6] Revert "pahole.c: Add --inner_anonymous option" Douglas RAILLARD
2021-12-07 17:31 ` [PATCH v2 3/6] fprintf: Print types only once Douglas RAILLARD
2021-12-14 14:02   ` Arnaldo Carvalho de Melo
2021-12-14 17:54     ` Douglas Raillard
2021-12-14 14:06   ` Arnaldo Carvalho de Melo
2021-12-14 18:23     ` Douglas Raillard
2021-12-17 18:40       ` Arnaldo Carvalho de Melo
2021-12-07 17:31 ` [PATCH v2 4/6] pahole.c: Add prefix to expanded type names Douglas RAILLARD
2021-12-14 14:55   ` Arnaldo Carvalho de Melo
2021-12-14 17:50     ` Douglas Raillard
2021-12-14 19:13       ` Arnaldo Carvalho de Melo
2021-12-14 19:18       ` Arnaldo Carvalho de Melo
2021-12-07 17:31 ` [PATCH v2 5/6] pahole.c: Add --expanded_prefix option Douglas RAILLARD
2021-12-07 17:31 ` [PATCH v2 6/6] pahole.c: Add --forward_decl option Douglas RAILLARD
2021-12-08 11:55 ` [PATCH v2 0/6] improve expanded header Arnaldo Carvalho de Melo

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).