public inbox for libabigail@sourceware.org
 help / color / mirror / Atom feed
* [Patch] Consider symbols with STB_GNU_UNIQUE binding as public
@ 2014-01-01  0:00 Sinny Kumari
  2014-01-01  0:00 ` Dodji Seketeli
  2014-01-01  0:00 ` Sinny Kumari
  0 siblings, 2 replies; 3+ messages in thread
From: Sinny Kumari @ 2014-01-01  0:00 UTC (permalink / raw)
  To: libabigail; +Cc: dodji

[-- Attachment #1: Type: text/plain, Size: 164 bytes --]

Hi,

Currently, libabigail doesn't consider symbols with binding STB_GNU_UNIQUE as 
public symbols. This patch (attachment in email) fixes it .

Thanks
Sinny Kumari

[-- Attachment #2: 0001-Consider-symbols-with-STB_GNU_UNIQUE-binding-as-publ.patch --]
[-- Type: text/x-patch, Size: 11255 bytes --]

From 7e0729a455337ad7c2e7300f8b824f908a3a7393 Mon Sep 17 00:00:00 2001
From: Sinny Kumari <skumari@redhat.com>
Date: Tue, 1 Jul 2014 17:31:20 +0530
Subject: [PATCH 1/1] Consider symbols with STB_GNU_UNIQUE binding as public

        * src/abg-ir.cc (is_public): Change in function to consider
        symbols with STB_GNU_UNIQUE binding as public
        * tests/data/test-read-dwarf/test6.cc: Test file to generate
        STB_GNU_UNIQUE binding symbols
        * tests/data/test-read-dwarf/test6.so: Test shared library having
        STB_GNU_UNIQUE binding symbols
        * tests/data/test-read-dwarf/test6.so.abi: XML file containing dwarf
        information from test6.so
        * tests/test-read-dwarf.cc (in_out_specs): Add the new test above
        * tests/Makefile.am: Add tests/data/test-read-dwarf/test6.cc,
        tests/data/test-read-dwarf/test6.so and tests/data/test-read-dwarf/test6.so.abi
        to the distribution

Signed-off-by: Sinny Kumari <skumari@redhat.com>
---
 src/abg-ir.cc                           |   3 ++-
 tests/Makefile.am                       |   2 ++
 tests/data/test-read-dwarf/test6.cc     |  38 ++++++++++++++++++++++++++++++++
 tests/data/test-read-dwarf/test6.so     | Bin 0 -> 9743 bytes
 tests/data/test-read-dwarf/test6.so.abi |  36 ++++++++++++++++++++++++++++++
 tests/test-read-dwarf.cc                |   5 +++++
 6 files changed, 83 insertions(+), 1 deletion(-)
 create mode 100644 tests/data/test-read-dwarf/test6.cc
 create mode 100755 tests/data/test-read-dwarf/test6.so
 create mode 100644 tests/data/test-read-dwarf/test6.so.abi

diff --git a/src/abg-ir.cc b/src/abg-ir.cc
index 9866c06..1ba7896 100644
--- a/src/abg-ir.cc
+++ b/src/abg-ir.cc
@@ -439,7 +439,8 @@ elf_symbol::is_public() const
 {
   return (get_is_defined()
 	  && (get_binding() == GLOBAL_BINDING
-	      || get_binding() == WEAK_BINDING));
+	      || get_binding() == WEAK_BINDING
+	      || get_binding() == GNU_UNIQUE_BINDING));
 }
 
 bool
diff --git a/tests/Makefile.am b/tests/Makefile.am
index fda85ad..076e166 100644
--- a/tests/Makefile.am
+++ b/tests/Makefile.am
@@ -181,6 +181,8 @@ tests/data/test-read-dwarf/test4.c		\
 tests/data/test-read-dwarf/test4.so		\
 tests/data/test-read-dwarf/test5.cc		\
 tests/data/test-read-dwarf/test5.so		\
+tests/data/test-read-dwarf/test6.cc		\
+tests/data/test-read-dwarf/test6.so		\
 \
 data/test-diff-filter/test0-v0.cc		\
 data/test-diff-filter/test0-v1.cc		\
diff --git a/tests/data/test-read-dwarf/test6.cc b/tests/data/test-read-dwarf/test6.cc
new file mode 100644
index 0000000..16151a7
--- /dev/null
+++ b/tests/data/test-read-dwarf/test6.cc
@@ -0,0 +1,38 @@
+// Test for crating symbols having binding STB_GNU_UNIQUE
+// build with g++ -fPIC -g -Wall -shared -o test6.so test6.cc
+
+struct A
+{
+   int i;
+};
+
+struct B
+{
+   int foo()
+     {
+        static A a;
+        return a.i;
+     }
+};
+
+int
+bar()
+{
+   B b;
+   return b.foo();
+}
+
+template<typename T>
+struct C
+{
+   static T bar;
+};
+
+template<typename T> T C<T>::bar = T();
+
+int
+bleh()
+{
+   C<int> c;
+   return c.bar;
+}
diff --git a/tests/data/test-read-dwarf/test6.so b/tests/data/test-read-dwarf/test6.so
new file mode 100755
index 0000000000000000000000000000000000000000..e64e0a73a105139c89e60a40fda829c5a40c303e
GIT binary patch
literal 9743
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

literal 0
HcmV?d00001

diff --git a/tests/data/test-read-dwarf/test6.so.abi b/tests/data/test-read-dwarf/test6.so.abi
new file mode 100644
index 0000000..70c65ca
--- /dev/null
+++ b/tests/data/test-read-dwarf/test6.so.abi
@@ -0,0 +1,36 @@
+<abi-corpus path='data/test-read-dwarf/test6.so'>
+  <elf-function-symbols>
+    <elf-symbol name='_fini' type='func-type' binding='global-binding' is-defined='yes'/>
+    <elf-symbol name='_Z4blehv' type='func-type' binding='global-binding' is-defined='yes'/>
+    <elf-symbol name='_init' type='func-type' binding='global-binding' is-defined='yes'/>
+    <elf-symbol name='_Z3barv' type='func-type' binding='global-binding' is-defined='yes'/>
+    <elf-symbol name='_ZN1B3fooEv' type='func-type' binding='weak-binding' is-defined='yes'/>
+  </elf-function-symbols>
+  <elf-variable-symbols>
+    <elf-symbol name='_ZZN1B3fooEvE1a' type='object-type' binding='gnu-unique-binding' is-defined='yes'/>
+    <elf-symbol name='_ZN1CIiE3barE' type='object-type' binding='gnu-unique-binding' is-defined='yes'/>
+  </elf-variable-symbols>
+  <abi-instr version='1.0' address-size='64' path='test6.cc'>
+    <class-decl name='B' size-in-bits='8' is-struct='yes' visibility='default' filepath='/home/skumari/Tasks/source_repo/dodji/libabigail/tests/data/test-read-dwarf/test6.cc' line='9' column='1' id='type-id-1'>
+      <member-function access='public'>
+        <function-decl name='foo' mangled-name='_ZN1B3fooEv' filepath='/home/skumari/Tasks/source_repo/dodji/libabigail/tests/data/test-read-dwarf/test6.cc' line='11' column='1' visibility='default' binding='global' size-in-bits='64' alignment-in-bits='64' elf-symbol-id='_ZN1B3fooEv'>
+          <parameter type-id='type-id-2' is-artificial='yes'/>
+          <return type-id='type-id-3'/>
+        </function-decl>
+      </member-function>
+    </class-decl>
+    <type-decl name='int' size-in-bits='32' alignment-in-bits='32' id='type-id-3'/>
+    <pointer-type-def type-id='type-id-1' size-in-bits='64' alignment-in-bits='64' id='type-id-2'/>
+    <function-decl name='bar' mangled-name='_Z3barv' filepath='/home/skumari/Tasks/source_repo/dodji/libabigail/tests/data/test-read-dwarf/test6.cc' line='19' column='1' visibility='default' binding='global' size-in-bits='64' alignment-in-bits='64' elf-symbol-id='_Z3barv'>
+      <return type-id='type-id-3'/>
+    </function-decl>
+    <function-decl name='bleh' mangled-name='_Z4blehv' filepath='/home/skumari/Tasks/source_repo/dodji/libabigail/tests/data/test-read-dwarf/test6.cc' line='34' column='1' visibility='default' binding='global' size-in-bits='64' alignment-in-bits='64' elf-symbol-id='_Z4blehv'>
+      <return type-id='type-id-3'/>
+    </function-decl>
+    <class-decl name='C&lt;int&gt;' size-in-bits='8' is-struct='yes' visibility='default' filepath='/home/skumari/Tasks/source_repo/dodji/libabigail/tests/data/test-read-dwarf/test6.cc' line='26' column='1' id='type-id-4'>
+      <data-member access='public' static='yes'>
+        <var-decl name='bar' type-id='type-id-3' mangled-name='_ZN1CIiE3barE' visibility='default' filepath='/home/skumari/Tasks/source_repo/dodji/libabigail/tests/data/test-read-dwarf/test6.cc' line='31' column='1' elf-symbol-id='_ZN1CIiE3barE'/>
+      </data-member>
+    </class-decl>
+  </abi-instr>
+</abi-corpus>
diff --git a/tests/test-read-dwarf.cc b/tests/test-read-dwarf.cc
index 0663658..7734d4b 100644
--- a/tests/test-read-dwarf.cc
+++ b/tests/test-read-dwarf.cc
@@ -80,6 +80,11 @@ InOutSpec in_out_specs[] =
     "data/test-read-dwarf/test5.o.abi",
     "output/test-read-dwarf/test5.o.abi"
   },
+  {
+    "data/test-read-dwarf/test6.so",
+    "data/test-read-dwarf/test6.so.abi",
+    "output/test-read-dwarf/test6.so.abi"
+  },
   // This should be the last entry.
   {NULL, NULL, NULL}
 };
-- 
1.8.3.1


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

* Re: [Patch] Consider symbols with STB_GNU_UNIQUE binding as public
  2014-01-01  0:00 [Patch] Consider symbols with STB_GNU_UNIQUE binding as public Sinny Kumari
@ 2014-01-01  0:00 ` Dodji Seketeli
  2014-01-01  0:00 ` Sinny Kumari
  1 sibling, 0 replies; 3+ messages in thread
From: Dodji Seketeli @ 2014-01-01  0:00 UTC (permalink / raw)
  To: Sinny Kumari; +Cc: libabigail

Sinny Kumari <skumari@redhat.com> a écrit:

>         * src/abg-ir.cc (is_public): Change in function to consider
>         symbols with STB_GNU_UNIQUE binding as public
>         * tests/data/test-read-dwarf/test6.cc: Test file to generate
>         STB_GNU_UNIQUE binding symbols
>         * tests/data/test-read-dwarf/test6.so: Test shared library having
>         STB_GNU_UNIQUE binding symbols
>         * tests/data/test-read-dwarf/test6.so.abi: XML file containing dwarf
>         information from test6.so
>         * tests/test-read-dwarf.cc (in_out_specs): Add the new test above
>         * tests/Makefile.am: Add tests/data/test-read-dwarf/test6.cc,
>         tests/data/test-read-dwarf/test6.so and tests/data/test-read-dwarf/test6.so.abi
>         to the distribution
>
> Signed-off-by: Sinny Kumari <skumari@redhat.com>

This is OK, thanks.  I have committed to master.

Sinny Kumari <skumari@redhat.com> a écrit:

> Sorry for having space instead of tab in commit log. Updated patch
> with tab.

Ah, no problem.  I edited the patch to replace the tabs before even
seeing this message from you :-)

Thank you for your dedication.

Cheers.

-- 
		Dodji

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

* Re: [Patch] Consider symbols with STB_GNU_UNIQUE binding as public
  2014-01-01  0:00 [Patch] Consider symbols with STB_GNU_UNIQUE binding as public Sinny Kumari
  2014-01-01  0:00 ` Dodji Seketeli
@ 2014-01-01  0:00 ` Sinny Kumari
  1 sibling, 0 replies; 3+ messages in thread
From: Sinny Kumari @ 2014-01-01  0:00 UTC (permalink / raw)
  To: libabigail; +Cc: dodji

[-- Attachment #1: Type: text/plain, Size: 310 bytes --]

Sorry for having space instead of tab in commit log. Updated patch with tab.

On Tuesday 01 Jul 2014 6:27:00 PM Sinny Kumari wrote:
> Hi,
> 
> Currently, libabigail doesn't consider symbols with binding STB_GNU_UNIQUE
> as public symbols. This patch (attachment in email) fixes it .
> 
> Thanks
> Sinny Kumari

[-- Attachment #2: 0001-Consider-symbols-with-STB_GNU_UNIQUE-binding-as-publ.patch --]
[-- Type: text/x-patch, Size: 11171 bytes --]

From 1b3a76b48892bf0bca6b7d61e84c0c3508d38650 Mon Sep 17 00:00:00 2001
From: Sinny Kumari <skumari@redhat.com>
Date: Tue, 1 Jul 2014 17:31:20 +0530
Subject: [PATCH 1/1] Consider symbols with STB_GNU_UNIQUE binding as public

	* src/abg-ir.cc (is_public): Change in function to consider
	symbols with STB_GNU_UNIQUE binding as public
	* tests/data/test-read-dwarf/test6.cc: Test file to generate
	STB_GNU_UNIQUE binding symbols
	* tests/data/test-read-dwarf/test6.so: Test shared library having
	STB_GNU_UNIQUE binding symbols
	* tests/data/test-read-dwarf/test6.so.abi: XML file containing dwarf
	information from test6.so
	* tests/test-read-dwarf.cc (in_out_specs): Add the new test above
	* tests/Makefile.am: Add tests/data/test-read-dwarf/test6.cc,
	tests/data/test-read-dwarf/test6.so and tests/data/test-read-dwarf/test6.so.abi
	to the distribution

Signed-off-by: Sinny Kumari <skumari@redhat.com>
---
 src/abg-ir.cc                           |   3 ++-
 tests/Makefile.am                       |   2 ++
 tests/data/test-read-dwarf/test6.cc     |  38 ++++++++++++++++++++++++++++++++
 tests/data/test-read-dwarf/test6.so     | Bin 0 -> 9743 bytes
 tests/data/test-read-dwarf/test6.so.abi |  36 ++++++++++++++++++++++++++++++
 tests/test-read-dwarf.cc                |   5 +++++
 6 files changed, 83 insertions(+), 1 deletion(-)
 create mode 100644 tests/data/test-read-dwarf/test6.cc
 create mode 100755 tests/data/test-read-dwarf/test6.so
 create mode 100644 tests/data/test-read-dwarf/test6.so.abi

diff --git a/src/abg-ir.cc b/src/abg-ir.cc
index 9866c06..1ba7896 100644
--- a/src/abg-ir.cc
+++ b/src/abg-ir.cc
@@ -439,7 +439,8 @@ elf_symbol::is_public() const
 {
   return (get_is_defined()
 	  && (get_binding() == GLOBAL_BINDING
-	      || get_binding() == WEAK_BINDING));
+	      || get_binding() == WEAK_BINDING
+	      || get_binding() == GNU_UNIQUE_BINDING));
 }
 
 bool
diff --git a/tests/Makefile.am b/tests/Makefile.am
index fda85ad..076e166 100644
--- a/tests/Makefile.am
+++ b/tests/Makefile.am
@@ -181,6 +181,8 @@ tests/data/test-read-dwarf/test4.c		\
 tests/data/test-read-dwarf/test4.so		\
 tests/data/test-read-dwarf/test5.cc		\
 tests/data/test-read-dwarf/test5.so		\
+tests/data/test-read-dwarf/test6.cc		\
+tests/data/test-read-dwarf/test6.so		\
 \
 data/test-diff-filter/test0-v0.cc		\
 data/test-diff-filter/test0-v1.cc		\
diff --git a/tests/data/test-read-dwarf/test6.cc b/tests/data/test-read-dwarf/test6.cc
new file mode 100644
index 0000000..16151a7
--- /dev/null
+++ b/tests/data/test-read-dwarf/test6.cc
@@ -0,0 +1,38 @@
+// Test for crating symbols having binding STB_GNU_UNIQUE
+// build with g++ -fPIC -g -Wall -shared -o test6.so test6.cc
+
+struct A
+{
+   int i;
+};
+
+struct B
+{
+   int foo()
+     {
+        static A a;
+        return a.i;
+     }
+};
+
+int
+bar()
+{
+   B b;
+   return b.foo();
+}
+
+template<typename T>
+struct C
+{
+   static T bar;
+};
+
+template<typename T> T C<T>::bar = T();
+
+int
+bleh()
+{
+   C<int> c;
+   return c.bar;
+}
diff --git a/tests/data/test-read-dwarf/test6.so b/tests/data/test-read-dwarf/test6.so
new file mode 100755
index 0000000000000000000000000000000000000000..e64e0a73a105139c89e60a40fda829c5a40c303e
GIT binary patch
literal 9743
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

literal 0
HcmV?d00001

diff --git a/tests/data/test-read-dwarf/test6.so.abi b/tests/data/test-read-dwarf/test6.so.abi
new file mode 100644
index 0000000..70c65ca
--- /dev/null
+++ b/tests/data/test-read-dwarf/test6.so.abi
@@ -0,0 +1,36 @@
+<abi-corpus path='data/test-read-dwarf/test6.so'>
+  <elf-function-symbols>
+    <elf-symbol name='_fini' type='func-type' binding='global-binding' is-defined='yes'/>
+    <elf-symbol name='_Z4blehv' type='func-type' binding='global-binding' is-defined='yes'/>
+    <elf-symbol name='_init' type='func-type' binding='global-binding' is-defined='yes'/>
+    <elf-symbol name='_Z3barv' type='func-type' binding='global-binding' is-defined='yes'/>
+    <elf-symbol name='_ZN1B3fooEv' type='func-type' binding='weak-binding' is-defined='yes'/>
+  </elf-function-symbols>
+  <elf-variable-symbols>
+    <elf-symbol name='_ZZN1B3fooEvE1a' type='object-type' binding='gnu-unique-binding' is-defined='yes'/>
+    <elf-symbol name='_ZN1CIiE3barE' type='object-type' binding='gnu-unique-binding' is-defined='yes'/>
+  </elf-variable-symbols>
+  <abi-instr version='1.0' address-size='64' path='test6.cc'>
+    <class-decl name='B' size-in-bits='8' is-struct='yes' visibility='default' filepath='/home/skumari/Tasks/source_repo/dodji/libabigail/tests/data/test-read-dwarf/test6.cc' line='9' column='1' id='type-id-1'>
+      <member-function access='public'>
+        <function-decl name='foo' mangled-name='_ZN1B3fooEv' filepath='/home/skumari/Tasks/source_repo/dodji/libabigail/tests/data/test-read-dwarf/test6.cc' line='11' column='1' visibility='default' binding='global' size-in-bits='64' alignment-in-bits='64' elf-symbol-id='_ZN1B3fooEv'>
+          <parameter type-id='type-id-2' is-artificial='yes'/>
+          <return type-id='type-id-3'/>
+        </function-decl>
+      </member-function>
+    </class-decl>
+    <type-decl name='int' size-in-bits='32' alignment-in-bits='32' id='type-id-3'/>
+    <pointer-type-def type-id='type-id-1' size-in-bits='64' alignment-in-bits='64' id='type-id-2'/>
+    <function-decl name='bar' mangled-name='_Z3barv' filepath='/home/skumari/Tasks/source_repo/dodji/libabigail/tests/data/test-read-dwarf/test6.cc' line='19' column='1' visibility='default' binding='global' size-in-bits='64' alignment-in-bits='64' elf-symbol-id='_Z3barv'>
+      <return type-id='type-id-3'/>
+    </function-decl>
+    <function-decl name='bleh' mangled-name='_Z4blehv' filepath='/home/skumari/Tasks/source_repo/dodji/libabigail/tests/data/test-read-dwarf/test6.cc' line='34' column='1' visibility='default' binding='global' size-in-bits='64' alignment-in-bits='64' elf-symbol-id='_Z4blehv'>
+      <return type-id='type-id-3'/>
+    </function-decl>
+    <class-decl name='C&lt;int&gt;' size-in-bits='8' is-struct='yes' visibility='default' filepath='/home/skumari/Tasks/source_repo/dodji/libabigail/tests/data/test-read-dwarf/test6.cc' line='26' column='1' id='type-id-4'>
+      <data-member access='public' static='yes'>
+        <var-decl name='bar' type-id='type-id-3' mangled-name='_ZN1CIiE3barE' visibility='default' filepath='/home/skumari/Tasks/source_repo/dodji/libabigail/tests/data/test-read-dwarf/test6.cc' line='31' column='1' elf-symbol-id='_ZN1CIiE3barE'/>
+      </data-member>
+    </class-decl>
+  </abi-instr>
+</abi-corpus>
diff --git a/tests/test-read-dwarf.cc b/tests/test-read-dwarf.cc
index 0663658..7734d4b 100644
--- a/tests/test-read-dwarf.cc
+++ b/tests/test-read-dwarf.cc
@@ -80,6 +80,11 @@ InOutSpec in_out_specs[] =
     "data/test-read-dwarf/test5.o.abi",
     "output/test-read-dwarf/test5.o.abi"
   },
+  {
+    "data/test-read-dwarf/test6.so",
+    "data/test-read-dwarf/test6.so.abi",
+    "output/test-read-dwarf/test6.so.abi"
+  },
   // This should be the last entry.
   {NULL, NULL, NULL}
 };
-- 
1.8.3.1


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

end of thread, other threads:[~2014-07-08 14:10 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2014-01-01  0:00 [Patch] Consider symbols with STB_GNU_UNIQUE binding as public Sinny Kumari
2014-01-01  0:00 ` Dodji Seketeli
2014-01-01  0:00 ` Sinny Kumari

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