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