public inbox for libabigail@sourceware.org
 help / color / mirror / Atom feed
* [PATCH] ctf-reader: Fix multiple var-decl in anonymous struct/uninons
@ 2021-12-16  5:20 Guillermo E. Martinez
  2022-04-06 16:59 ` [PATCH v2] " Guillermo E. Martinez
  0 siblings, 1 reply; 5+ messages in thread
From: Guillermo E. Martinez @ 2021-12-16  5:20 UTC (permalink / raw)
  To: libabigail

Hello libabigail team,

This patch fix multiple `var-decl' node  in anonymous struct/uninons in
ctf-reader.

Comments will be appreciated.

Thanks in advanced!,
Guillermo

This patch avoid multiple inclusion of `var-decl' node for the same
field in anonymous struct/union declaration in the abixml, e.g:

  struct uprobe_task {
   union {
    struct {
     unsigned long vaddr;
    };

    struct {
     int dup_xol_work;
    };
   };
  };

Three `var-decl' nodes are written in abixml file, expected a single
one:
  <var-decl name='dup_xol_work' .../>

	* src/abg-ctf-reader.cc (process_ctf_sou_members): Remove
	CTF_MN_RECURSE flag.
	* tests/data/Makefile.am: Add new input test files.
	* tests/data/test-read-ctf/test-anonymous-fields.c: New
	test file.
	* tests/data/test-read-ctf/test-anonymous-fields.o: New
	expected test output.
	* tests/data/test-read-ctf/test-anonymous-fields.o.abi:
	Likewise.
	* tests/test-read-ctf.cc: Add new test.

Signed-off-by: Guillermo E. Martinez <guillermo.e.martinez@oracle.com>
---
 src/abg-ctf-reader.cc                         |   2 +-
 .../test-read-ctf/test-anonymous-fields.c     |  19 ++++++++++
 .../test-read-ctf/test-anonymous-fields.o     | Bin 0 -> 1408 bytes
 .../test-read-ctf/test-anonymous-fields.o.abi |  33 ++++++++++++++++++
 tests/test-read-ctf.cc                        |   8 +++++
 5 files changed, 61 insertions(+), 1 deletion(-)
 create mode 100644 tests/data/test-read-ctf/test-anonymous-fields.c
 create mode 100644 tests/data/test-read-ctf/test-anonymous-fields.o
 create mode 100644 tests/data/test-read-ctf/test-anonymous-fields.o.abi

diff --git a/src/abg-ctf-reader.cc b/src/abg-ctf-reader.cc
index fbf6baef..8151bfbb 100644
--- a/src/abg-ctf-reader.cc
+++ b/src/abg-ctf-reader.cc
@@ -321,7 +321,7 @@ process_ctf_sou_members(read_context *ctxt,
   while ((member_size = ctf_member_next(ctf_dictionary, ctf_type,
                                         &member_next, &member_name,
                                         &member_ctf_type,
-                                        CTF_MN_RECURSE)) >= 0)
+                                        0 /* flags */)) >= 0)
     {
       ctf_membinfo_t membinfo;
 
diff --git a/tests/data/test-read-ctf/test-anonymous-fields.c b/tests/data/test-read-ctf/test-anonymous-fields.c
new file mode 100644
index 00000000..be97bfa3
--- /dev/null
+++ b/tests/data/test-read-ctf/test-anonymous-fields.c
@@ -0,0 +1,19 @@
+/*
+ * test single var-decl in anonymous struct/union
+ * gcc -gctf -c tests/data/test-read- ctf/test-anonymous-fields.c \
+ *    -o tests/data/test-read-ctf/test-anonymous-fields.o
+*/
+struct uprobe_task {
+ union {
+  struct {
+   unsigned long vaddr;
+  };
+
+  struct {
+   int dup_xol_work;
+  };
+ };
+};
+
+struct uprobe_task t;
+
diff --git a/tests/data/test-read-ctf/test-anonymous-fields.o b/tests/data/test-read-ctf/test-anonymous-fields.o
new file mode 100644
index 0000000000000000000000000000000000000000..452a8122c5cf4fa8fb81772bdfd824dfa92954ce
GIT binary patch
literal 1408
zcmbVL&5qMB5S}ch{9Raa;YXlwVi$<h_JGhHP^1;?3L$PBQRO7wZqy{MVh5TN55bii
zFS1X7cmtjRUI1niyR}TYFw%Iw`DVVUJxV{leDi8A2*6qZFJPNl7T{uUi<2HEa09Nx
zuOFjL<@vS+Mu^F;8o!D03;JjDG5Ry(gvszX?^5rrJ_Dek<{o3>6T?#<&Ao4O!gmHd
zCL9_W>K~BKnwiz7m+*XyPP5#e%Tz68y$IV{6^mNrVNq-N!1KHTLV3HIuVp#^D4Qj;
zt45|`uDM!*hWK1oB2K%si)F*JQpBps;<8A2S}b@`M(s-JM(`@uLTMG}T=O1ANaj(d
z&xVZGvhFI`s_3i`Wv*BTaB_Tn6ds(seRmj6XKcbI;cPOSPSL{yv0jO$s6?%Kd5G6H
zI{<nMDsYd%1##8_le_z{H8)ay1V4Yf9AVn^KF|gS+w6~?745ja24JeIG*2<=W{Bq&
zX|dM8Xc@p#rGVig@Q@X~2v{w(VEBwkX`U@jzNlM<yT^Cy&R*lc<2_W;TkUsf2PGDG
z(cjxctP{80$RJ3D@Ym_<A7KaW@L&4Pe$6C5e~P?6lUfrx&@!*+r7*=F;wIGW*jLl|
z#Nh~9y^Ti>=eB;c4KBH(_cd}?(CPo~+IOS(@8!Rr+I($4$B?IH=rz-4^|u|~-#wL1
Yjh?;_*ZgPgV{w;0Gy3<g7_qPa16<>NRR910

literal 0
HcmV?d00001

diff --git a/tests/data/test-read-ctf/test-anonymous-fields.o.abi b/tests/data/test-read-ctf/test-anonymous-fields.o.abi
new file mode 100644
index 00000000..0419c29c
--- /dev/null
+++ b/tests/data/test-read-ctf/test-anonymous-fields.o.abi
@@ -0,0 +1,33 @@
+<abi-corpus version='2.1' path='data/test-read-ctf/test-anonymous-fields.o'>
+  <elf-variable-symbols>
+    <elf-symbol name='t' size='8' type='object-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
+  </elf-variable-symbols>
+  <abi-instr address-size='64' language='LANG_C'>
+    <class-decl name='' size-in-bits='64' alignment-in-bits='64' is-struct='yes' is-anonymous='yes' visibility='default' id='type-id-1'>
+      <data-member access='public' layout-offset-in-bits='0'>
+        <var-decl name='vaddr' type-id='type-id-2' visibility='default'/>
+      </data-member>
+    </class-decl>
+    <class-decl name='' size-in-bits='32' alignment-in-bits='32' is-struct='yes' is-anonymous='yes' visibility='default' id='type-id-3'>
+      <data-member access='public' layout-offset-in-bits='0'>
+        <var-decl name='dup_xol_work' type-id='type-id-4' visibility='default'/>
+      </data-member>
+    </class-decl>
+    <class-decl name='uprobe_task' size-in-bits='64' alignment-in-bits='64' is-struct='yes' visibility='default' id='type-id-5'>
+      <data-member access='public' layout-offset-in-bits='0'>
+        <var-decl name='' type-id='type-id-6' visibility='default'/>
+      </data-member>
+    </class-decl>
+    <type-decl name='int' size-in-bits='32' alignment-in-bits='32' id='type-id-4'/>
+    <union-decl name='' size-in-bits='64' is-anonymous='yes' visibility='default' id='type-id-6'>
+      <data-member access='public'>
+        <var-decl name='' type-id='type-id-1' visibility='default'/>
+      </data-member>
+      <data-member access='public'>
+        <var-decl name='' type-id='type-id-3' visibility='default'/>
+      </data-member>
+    </union-decl>
+    <type-decl name='unsigned long int' size-in-bits='64' alignment-in-bits='64' id='type-id-2'/>
+    <var-decl name='t' type-id='type-id-5' mangled-name='t' visibility='default'/>
+  </abi-instr>
+</abi-corpus>
diff --git a/tests/test-read-ctf.cc b/tests/test-read-ctf.cc
index b448ddc5..4b11cca6 100644
--- a/tests/test-read-ctf.cc
+++ b/tests/test-read-ctf.cc
@@ -212,6 +212,14 @@ static InOutSpec in_out_specs[] =
     "data/test-read-ctf/test-dynamic-array.o.abi",
     "output/test-read-ctf/test-dynamic-array.o.abi"
   },
+  {
+    "data/test-read-ctf/test-anonymous-fields.o",
+    "",
+    "",
+    SEQUENCE_TYPE_ID_STYLE,
+    "data/test-read-ctf/test-anonymous-fields.o.abi",
+    "output/test-read-ctf/test-anonymous-fields.o.abi"
+  },
   {
     "data/test-read-common/PR27700/test-PR27700.o",
     "",
-- 
2.34.1


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

* [PATCH v2] ctf-reader: Fix multiple var-decl in anonymous struct/uninons
  2021-12-16  5:20 [PATCH] ctf-reader: Fix multiple var-decl in anonymous struct/uninons Guillermo E. Martinez
@ 2022-04-06 16:59 ` Guillermo E. Martinez
  2022-04-25 18:38   ` Guillermo E. Martinez
  2022-04-29 14:05   ` [PATCH v3] " Guillermo E. Martinez
  0 siblings, 2 replies; 5+ messages in thread
From: Guillermo E. Martinez @ 2022-04-06 16:59 UTC (permalink / raw)
  To: libabigail

Hello libabigail team,

This is the v2 patch to fix multiple `var-decl' node  in anonymous
struct/uninons in ctf-reader, changes from v1:

	* Update tests/data/Makefile.am

Comments will be appreciated.

Thanks in advanced!,
Guillermo

This patch avoid multiple inclusion of `var-decl' node for the same
field in anonymous struct/union declaration in the abixml, e.g:

  struct uprobe_task {
   union {
    struct {
     unsigned long vaddr;
    };

    struct {
     int dup_xol_work;
    };
   };
  };

Three `var-decl' nodes are written in abixml file, expected a single
one:
  <var-decl name='dup_xol_work' .../>

	* src/abg-ctf-reader.cc (process_ctf_sou_members): Remove
	CTF_MN_RECURSE flag.
	* tests/data/Makefile.am: Add new input test files.
	* tests/data/test-read-ctf/test-anonymous-fields.c: New
	test file.
	* tests/data/test-read-ctf/test-anonymous-fields.o: New
	expected test output.
	* tests/data/test-read-ctf/test-anonymous-fields.o.abi:
	Likewise.
	* tests/test-read-ctf.cc: Add new test.

Signed-off-by: Guillermo E. Martinez <guillermo.e.martinez@oracle.com>
---
 src/abg-ctf-reader.cc                         |   2 +-
 tests/data/Makefile.am                        |   3 ++
 .../test-read-ctf/test-anonymous-fields.c     |  18 ++++++++++
 .../test-read-ctf/test-anonymous-fields.o     | Bin 0 -> 1408 bytes
 .../test-read-ctf/test-anonymous-fields.o.abi |  33 ++++++++++++++++++
 tests/test-read-ctf.cc                        |   8 +++++
 6 files changed, 63 insertions(+), 1 deletion(-)
 create mode 100644 tests/data/test-read-ctf/test-anonymous-fields.c
 create mode 100644 tests/data/test-read-ctf/test-anonymous-fields.o
 create mode 100644 tests/data/test-read-ctf/test-anonymous-fields.o.abi

diff --git a/src/abg-ctf-reader.cc b/src/abg-ctf-reader.cc
index e5ea0ca2..9c4726a6 100644
--- a/src/abg-ctf-reader.cc
+++ b/src/abg-ctf-reader.cc
@@ -350,7 +350,7 @@ process_ctf_sou_members(read_context *ctxt,
   while ((member_size = ctf_member_next(ctf_dictionary, ctf_type,
                                         &member_next, &member_name,
                                         &member_ctf_type,
-                                        CTF_MN_RECURSE)) >= 0)
+                                        0 /* flags */)) >= 0)
     {
       ctf_membinfo_t membinfo;
 
diff --git a/tests/data/Makefile.am b/tests/data/Makefile.am
index a7eb7ff0..243be3ba 100644
--- a/tests/data/Makefile.am
+++ b/tests/data/Makefile.am
@@ -666,6 +666,9 @@ test-read-ctf/test-list-struct.abi	\
 test-read-ctf/test-callback2.c		\
 test-read-ctf/test-callback2.o		\
 test-read-ctf/test-callback2.abi	\
+test-read-ctf/test-anonymous-fields.c	\
+test-read-ctf/test-anonymous-fields.o	\
+test-read-ctf/test-anonymous-fields.o.abi	\
 \
 test-annotate/test0.abi			\
 test-annotate/test1.abi			\
diff --git a/tests/data/test-read-ctf/test-anonymous-fields.c b/tests/data/test-read-ctf/test-anonymous-fields.c
new file mode 100644
index 00000000..25c21047
--- /dev/null
+++ b/tests/data/test-read-ctf/test-anonymous-fields.c
@@ -0,0 +1,18 @@
+/*
+ * test single var-decl in anonymous struct/union
+ * gcc -gctf -c tests/data/test-read- ctf/test-anonymous-fields.c \
+ *    -o tests/data/test-read-ctf/test-anonymous-fields.o
+*/
+struct uprobe_task {
+ union {
+  struct {
+   unsigned long vaddr;
+  };
+
+  struct {
+   int dup_xol_work;
+  };
+ };
+};
+
+struct uprobe_task t;
diff --git a/tests/data/test-read-ctf/test-anonymous-fields.o b/tests/data/test-read-ctf/test-anonymous-fields.o
new file mode 100644
index 0000000000000000000000000000000000000000..452a8122c5cf4fa8fb81772bdfd824dfa92954ce
GIT binary patch
literal 1408
zcmbVL&5qMB5S}ch{9Raa;YXlwVi$<h_JGhHP^1;?3L$PBQRO7wZqy{MVh5TN55bii
zFS1X7cmtjRUI1niyR}TYFw%Iw`DVVUJxV{leDi8A2*6qZFJPNl7T{uUi<2HEa09Nx
zuOFjL<@vS+Mu^F;8o!D03;JjDG5Ry(gvszX?^5rrJ_Dek<{o3>6T?#<&Ao4O!gmHd
zCL9_W>K~BKnwiz7m+*XyPP5#e%Tz68y$IV{6^mNrVNq-N!1KHTLV3HIuVp#^D4Qj;
zt45|`uDM!*hWK1oB2K%si)F*JQpBps;<8A2S}b@`M(s-JM(`@uLTMG}T=O1ANaj(d
z&xVZGvhFI`s_3i`Wv*BTaB_Tn6ds(seRmj6XKcbI;cPOSPSL{yv0jO$s6?%Kd5G6H
zI{<nMDsYd%1##8_le_z{H8)ay1V4Yf9AVn^KF|gS+w6~?745ja24JeIG*2<=W{Bq&
zX|dM8Xc@p#rGVig@Q@X~2v{w(VEBwkX`U@jzNlM<yT^Cy&R*lc<2_W;TkUsf2PGDG
z(cjxctP{80$RJ3D@Ym_<A7KaW@L&4Pe$6C5e~P?6lUfrx&@!*+r7*=F;wIGW*jLl|
z#Nh~9y^Ti>=eB;c4KBH(_cd}?(CPo~+IOS(@8!Rr+I($4$B?IH=rz-4^|u|~-#wL1
Yjh?;_*ZgPgV{w;0Gy3<g7_qPa16<>NRR910

literal 0
HcmV?d00001

diff --git a/tests/data/test-read-ctf/test-anonymous-fields.o.abi b/tests/data/test-read-ctf/test-anonymous-fields.o.abi
new file mode 100644
index 00000000..0419c29c
--- /dev/null
+++ b/tests/data/test-read-ctf/test-anonymous-fields.o.abi
@@ -0,0 +1,33 @@
+<abi-corpus version='2.1' path='data/test-read-ctf/test-anonymous-fields.o'>
+  <elf-variable-symbols>
+    <elf-symbol name='t' size='8' type='object-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
+  </elf-variable-symbols>
+  <abi-instr address-size='64' language='LANG_C'>
+    <class-decl name='' size-in-bits='64' alignment-in-bits='64' is-struct='yes' is-anonymous='yes' visibility='default' id='type-id-1'>
+      <data-member access='public' layout-offset-in-bits='0'>
+        <var-decl name='vaddr' type-id='type-id-2' visibility='default'/>
+      </data-member>
+    </class-decl>
+    <class-decl name='' size-in-bits='32' alignment-in-bits='32' is-struct='yes' is-anonymous='yes' visibility='default' id='type-id-3'>
+      <data-member access='public' layout-offset-in-bits='0'>
+        <var-decl name='dup_xol_work' type-id='type-id-4' visibility='default'/>
+      </data-member>
+    </class-decl>
+    <class-decl name='uprobe_task' size-in-bits='64' alignment-in-bits='64' is-struct='yes' visibility='default' id='type-id-5'>
+      <data-member access='public' layout-offset-in-bits='0'>
+        <var-decl name='' type-id='type-id-6' visibility='default'/>
+      </data-member>
+    </class-decl>
+    <type-decl name='int' size-in-bits='32' alignment-in-bits='32' id='type-id-4'/>
+    <union-decl name='' size-in-bits='64' is-anonymous='yes' visibility='default' id='type-id-6'>
+      <data-member access='public'>
+        <var-decl name='' type-id='type-id-1' visibility='default'/>
+      </data-member>
+      <data-member access='public'>
+        <var-decl name='' type-id='type-id-3' visibility='default'/>
+      </data-member>
+    </union-decl>
+    <type-decl name='unsigned long int' size-in-bits='64' alignment-in-bits='64' id='type-id-2'/>
+    <var-decl name='t' type-id='type-id-5' mangled-name='t' visibility='default'/>
+  </abi-instr>
+</abi-corpus>
diff --git a/tests/test-read-ctf.cc b/tests/test-read-ctf.cc
index e7a87186..94e65197 100644
--- a/tests/test-read-ctf.cc
+++ b/tests/test-read-ctf.cc
@@ -212,6 +212,14 @@ static InOutSpec in_out_specs[] =
     "data/test-read-ctf/test-dynamic-array.o.abi",
     "output/test-read-ctf/test-dynamic-array.o.abi"
   },
+  {
+    "data/test-read-ctf/test-anonymous-fields.o",
+    "",
+    "",
+    SEQUENCE_TYPE_ID_STYLE,
+    "data/test-read-ctf/test-anonymous-fields.o.abi",
+    "output/test-read-ctf/test-anonymous-fields.o.abi"
+  },
   {
     "data/test-read-common/PR27700/test-PR27700.o",
     "",
-- 
2.35.1


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

* Re: [PATCH v2] ctf-reader: Fix multiple var-decl in anonymous struct/uninons
  2022-04-06 16:59 ` [PATCH v2] " Guillermo E. Martinez
@ 2022-04-25 18:38   ` Guillermo E. Martinez
  2022-04-29 14:05   ` [PATCH v3] " Guillermo E. Martinez
  1 sibling, 0 replies; 5+ messages in thread
From: Guillermo E. Martinez @ 2022-04-25 18:38 UTC (permalink / raw)
  To: libabigail

On Wednesday, April 6, 2022 11:59:07 AM CDT Guillermo E. Martinez wrote:
Hello libabigail team,

Any comment about this patch?

Thanks in advanced!,
Guillermo
 
> This patch avoid multiple inclusion of `var-decl' node for the same
> field in anonymous struct/union declaration in the abixml, e.g:
> 
>   struct uprobe_task {
>    union {
>     struct {
>      unsigned long vaddr;
>     };
> 
>     struct {
>      int dup_xol_work;
>     };
>    };
>   };
> [...]



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

* [PATCH v3] ctf-reader: Fix multiple var-decl in anonymous struct/uninons
  2022-04-06 16:59 ` [PATCH v2] " Guillermo E. Martinez
  2022-04-25 18:38   ` Guillermo E. Martinez
@ 2022-04-29 14:05   ` Guillermo E. Martinez
  2022-05-02 15:51     ` Dodji Seketeli
  1 sibling, 1 reply; 5+ messages in thread
From: Guillermo E. Martinez @ 2022-04-29 14:05 UTC (permalink / raw)
  To: libabigail

Hello libabigail team,

This is the v3 patch to fix multiple `var-decl' node  in anonymous
struct/uninons in ctf-reader, changes from v2:

        * rebase from master commit 6716aa04

I'll appreciate your feedback.

Thanks in advanced!,
Guillermo

This patch avoid multiple inclusion of `var-decl' node for the same
field in anonymous struct/union declaration in the abixml, e.g:

  struct uprobe_task {
   union {
    struct {
     unsigned long vaddr;
    };

    struct {
     int dup_xol_work;
    };
   };
  };

Three `var-decl' nodes are written in abixml file, expected a single
one:
  <var-decl name='dup_xol_work' .../>

	* src/abg-ctf-reader.cc (process_ctf_sou_members): Remove
	CTF_MN_RECURSE flag.
	* tests/data/Makefile.am: Add new input test files.
	* tests/data/test-read-ctf/test-anonymous-fields.c: New
	test file.
	* tests/data/test-read-ctf/test-anonymous-fields.o: New
	expected test output.
	* tests/data/test-read-ctf/test-anonymous-fields.o.abi:
	Likewise.
	* tests/test-read-ctf.cc: Add new test.

Signed-off-by: Guillermo E. Martinez <guillermo.e.martinez@oracle.com>
---
 src/abg-ctf-reader.cc                         |   2 +-
 tests/data/Makefile.am                        |   3 ++
 .../test-read-ctf/test-anonymous-fields.c     |  18 ++++++++++
 .../test-read-ctf/test-anonymous-fields.o     | Bin 0 -> 1408 bytes
 .../test-read-ctf/test-anonymous-fields.o.abi |  33 ++++++++++++++++++
 tests/test-read-ctf.cc                        |   8 +++++
 6 files changed, 63 insertions(+), 1 deletion(-)
 create mode 100644 tests/data/test-read-ctf/test-anonymous-fields.c
 create mode 100644 tests/data/test-read-ctf/test-anonymous-fields.o
 create mode 100644 tests/data/test-read-ctf/test-anonymous-fields.o.abi

diff --git a/src/abg-ctf-reader.cc b/src/abg-ctf-reader.cc
index f8cdf6be..2c6839cb 100644
--- a/src/abg-ctf-reader.cc
+++ b/src/abg-ctf-reader.cc
@@ -350,7 +350,7 @@ process_ctf_sou_members(read_context *ctxt,
   while ((member_size = ctf_member_next(ctf_dictionary, ctf_type,
                                         &member_next, &member_name,
                                         &member_ctf_type,
-                                        CTF_MN_RECURSE)) >= 0)
+                                        0 /* flags */)) >= 0)
     {
       ctf_membinfo_t membinfo;
 
diff --git a/tests/data/Makefile.am b/tests/data/Makefile.am
index 8f71fcbf..ee23aff6 100644
--- a/tests/data/Makefile.am
+++ b/tests/data/Makefile.am
@@ -669,6 +669,9 @@ test-read-ctf/test-list-struct.abi	\
 test-read-ctf/test-callback2.c		\
 test-read-ctf/test-callback2.o		\
 test-read-ctf/test-callback2.abi	\
+test-read-ctf/test-anonymous-fields.c	\
+test-read-ctf/test-anonymous-fields.o	\
+test-read-ctf/test-anonymous-fields.o.abi	\
 \
 test-annotate/test0.abi			\
 test-annotate/test1.abi			\
diff --git a/tests/data/test-read-ctf/test-anonymous-fields.c b/tests/data/test-read-ctf/test-anonymous-fields.c
new file mode 100644
index 00000000..25c21047
--- /dev/null
+++ b/tests/data/test-read-ctf/test-anonymous-fields.c
@@ -0,0 +1,18 @@
+/*
+ * test single var-decl in anonymous struct/union
+ * gcc -gctf -c tests/data/test-read- ctf/test-anonymous-fields.c \
+ *    -o tests/data/test-read-ctf/test-anonymous-fields.o
+*/
+struct uprobe_task {
+ union {
+  struct {
+   unsigned long vaddr;
+  };
+
+  struct {
+   int dup_xol_work;
+  };
+ };
+};
+
+struct uprobe_task t;
diff --git a/tests/data/test-read-ctf/test-anonymous-fields.o b/tests/data/test-read-ctf/test-anonymous-fields.o
new file mode 100644
index 0000000000000000000000000000000000000000..452a8122c5cf4fa8fb81772bdfd824dfa92954ce
GIT binary patch
literal 1408
zcmbVL&5qMB5S}ch{9Raa;YXlwVi$<h_JGhHP^1;?3L$PBQRO7wZqy{MVh5TN55bii
zFS1X7cmtjRUI1niyR}TYFw%Iw`DVVUJxV{leDi8A2*6qZFJPNl7T{uUi<2HEa09Nx
zuOFjL<@vS+Mu^F;8o!D03;JjDG5Ry(gvszX?^5rrJ_Dek<{o3>6T?#<&Ao4O!gmHd
zCL9_W>K~BKnwiz7m+*XyPP5#e%Tz68y$IV{6^mNrVNq-N!1KHTLV3HIuVp#^D4Qj;
zt45|`uDM!*hWK1oB2K%si)F*JQpBps;<8A2S}b@`M(s-JM(`@uLTMG}T=O1ANaj(d
z&xVZGvhFI`s_3i`Wv*BTaB_Tn6ds(seRmj6XKcbI;cPOSPSL{yv0jO$s6?%Kd5G6H
zI{<nMDsYd%1##8_le_z{H8)ay1V4Yf9AVn^KF|gS+w6~?745ja24JeIG*2<=W{Bq&
zX|dM8Xc@p#rGVig@Q@X~2v{w(VEBwkX`U@jzNlM<yT^Cy&R*lc<2_W;TkUsf2PGDG
z(cjxctP{80$RJ3D@Ym_<A7KaW@L&4Pe$6C5e~P?6lUfrx&@!*+r7*=F;wIGW*jLl|
z#Nh~9y^Ti>=eB;c4KBH(_cd}?(CPo~+IOS(@8!Rr+I($4$B?IH=rz-4^|u|~-#wL1
Yjh?;_*ZgPgV{w;0Gy3<g7_qPa16<>NRR910

literal 0
HcmV?d00001

diff --git a/tests/data/test-read-ctf/test-anonymous-fields.o.abi b/tests/data/test-read-ctf/test-anonymous-fields.o.abi
new file mode 100644
index 00000000..0419c29c
--- /dev/null
+++ b/tests/data/test-read-ctf/test-anonymous-fields.o.abi
@@ -0,0 +1,33 @@
+<abi-corpus version='2.1' path='data/test-read-ctf/test-anonymous-fields.o'>
+  <elf-variable-symbols>
+    <elf-symbol name='t' size='8' type='object-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
+  </elf-variable-symbols>
+  <abi-instr address-size='64' language='LANG_C'>
+    <class-decl name='' size-in-bits='64' alignment-in-bits='64' is-struct='yes' is-anonymous='yes' visibility='default' id='type-id-1'>
+      <data-member access='public' layout-offset-in-bits='0'>
+        <var-decl name='vaddr' type-id='type-id-2' visibility='default'/>
+      </data-member>
+    </class-decl>
+    <class-decl name='' size-in-bits='32' alignment-in-bits='32' is-struct='yes' is-anonymous='yes' visibility='default' id='type-id-3'>
+      <data-member access='public' layout-offset-in-bits='0'>
+        <var-decl name='dup_xol_work' type-id='type-id-4' visibility='default'/>
+      </data-member>
+    </class-decl>
+    <class-decl name='uprobe_task' size-in-bits='64' alignment-in-bits='64' is-struct='yes' visibility='default' id='type-id-5'>
+      <data-member access='public' layout-offset-in-bits='0'>
+        <var-decl name='' type-id='type-id-6' visibility='default'/>
+      </data-member>
+    </class-decl>
+    <type-decl name='int' size-in-bits='32' alignment-in-bits='32' id='type-id-4'/>
+    <union-decl name='' size-in-bits='64' is-anonymous='yes' visibility='default' id='type-id-6'>
+      <data-member access='public'>
+        <var-decl name='' type-id='type-id-1' visibility='default'/>
+      </data-member>
+      <data-member access='public'>
+        <var-decl name='' type-id='type-id-3' visibility='default'/>
+      </data-member>
+    </union-decl>
+    <type-decl name='unsigned long int' size-in-bits='64' alignment-in-bits='64' id='type-id-2'/>
+    <var-decl name='t' type-id='type-id-5' mangled-name='t' visibility='default'/>
+  </abi-instr>
+</abi-corpus>
diff --git a/tests/test-read-ctf.cc b/tests/test-read-ctf.cc
index 8ed8ac1a..fdf49e90 100644
--- a/tests/test-read-ctf.cc
+++ b/tests/test-read-ctf.cc
@@ -212,6 +212,14 @@ static InOutSpec in_out_specs[] =
     "data/test-read-ctf/test-dynamic-array.o.abi",
     "output/test-read-ctf/test-dynamic-array.o.abi"
   },
+  {
+    "data/test-read-ctf/test-anonymous-fields.o",
+    "",
+    "",
+    SEQUENCE_TYPE_ID_STYLE,
+    "data/test-read-ctf/test-anonymous-fields.o.abi",
+    "output/test-read-ctf/test-anonymous-fields.o.abi"
+  },
   {
     "data/test-read-common/PR27700/test-PR27700.o",
     "",
-- 
2.35.1


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

* Re: [PATCH v3] ctf-reader: Fix multiple var-decl in anonymous struct/uninons
  2022-04-29 14:05   ` [PATCH v3] " Guillermo E. Martinez
@ 2022-05-02 15:51     ` Dodji Seketeli
  0 siblings, 0 replies; 5+ messages in thread
From: Dodji Seketeli @ 2022-05-02 15:51 UTC (permalink / raw)
  To: Guillermo E. Martinez via Libabigail

Hello Guillermo,

"Guillermo E. Martinez via Libabigail" <libabigail@sourceware.org> a
écrit:

[...]

>
> 	* src/abg-ctf-reader.cc (process_ctf_sou_members): Remove
> 	CTF_MN_RECURSE flag.
> 	* tests/data/Makefile.am: Add new input test files.
> 	* tests/data/test-read-ctf/test-anonymous-fields.c: New
> 	test file.
> 	* tests/data/test-read-ctf/test-anonymous-fields.o: New
> 	expected test output.
> 	* tests/data/test-read-ctf/test-anonymous-fields.o.abi:
> 	Likewise.
> 	* tests/test-read-ctf.cc: Add new test.
>
> Signed-off-by: Guillermo E. Martinez <guillermo.e.martinez@oracle.com>

Applied to master, thanks!

[...]

Cheers,

-- 
		Dodji

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

end of thread, other threads:[~2022-05-02 15:51 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-12-16  5:20 [PATCH] ctf-reader: Fix multiple var-decl in anonymous struct/uninons Guillermo E. Martinez
2022-04-06 16:59 ` [PATCH v2] " Guillermo E. Martinez
2022-04-25 18:38   ` Guillermo E. Martinez
2022-04-29 14:05   ` [PATCH v3] " Guillermo E. Martinez
2022-05-02 15:51     ` Dodji Seketeli

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 read-only IMAP folder(s) and NNTP newsgroup(s).