On 2/7/2014 5:43 AM, Baruch Siach wrote:
Hi Filippo,

On Thu, Feb 06, 2014 at 02:25:08PM +0100, Filippo Arcidiacono wrote:
On 2/6/2014 1:23 PM, Baruch Siach wrote:
Hi Vineet,

On Thu, Feb 06, 2014 at 05:49:21PM +0530, Vineet Gupta wrote:
--------------->8-------------------
tst-tls7.c: In function 'do_test':
tst-tls7.c:39:57: error: 'struct link_map' has no member named 'l_tls_modid'
   modid = ((struct link_map *)((struct dyn_elf *)h)->dyn)->l_tls_modid;
                                                          ^
tst-tls7.c:40:63: error: 'struct link_map' has no member named 'l_tls_modid'
        else if (((struct link_map *)((struct dyn_elf *)h)->dyn)->l_tls_modid
                                                                ^
tst-tls7.c:45:52: error: 'struct link_map' has no member named 'l_tls_modid'
      ((struct link_map *)((struct dyn_elf *)h)->dyn)->l_tls_modid,
                                                     ^
make[2]: *** [tst-tls7] Error 1
--------------->8-------------------
I used a different approach to fix the same issue some while ago:
http://article.gmane.org/gmane.comp.lib.uclibc.general/23449 . Does this work
for you?
I wonder it should be fixed time ago by commit
d9c7e6a19ea2c96080f3bf7de069acf87c9a8a5d,
adding include path directive in Makefile.in.
No. It's broken since a2fdd604d (link.h: guard TLS related internals of struct
link_map with _LIBC).
Ok.
This commit is only in master branch. I'm using the 0.9.33 stable branch, and no problem to compile these tests.

baruch

Signed-off-by: Vineet Gupta <[email protected]>
---
  test/tls/tst-tls6.c |  7 +++----
  test/tls/tst-tls7.c |  7 +++----
  test/tls/tst-tls8.c | 21 ++++++++++-----------
  3 files changed, 16 insertions(+), 19 deletions(-)

diff --git a/test/tls/tst-tls6.c b/test/tls/tst-tls6.c
index e692aca6b7c3..0ebc50737b3e 100644
--- a/test/tls/tst-tls6.c
+++ b/test/tls/tst-tls6.c
@@ -38,13 +38,12 @@ do_test (void)
         time.  The value of the first round is used.  */
  #ifdef __UCLIBC__
        if (modid == -1)
-       modid = ((struct link_map *)((struct dyn_elf *)h)->dyn)->l_tls_modid;
-      else if (((struct link_map *)((struct dyn_elf *)h)->dyn)->l_tls_modid
-        != (size_t) modid)
+       modid = ((struct dyn_elf *) h)->dyn->l_tls_modid;
+      else if (((struct dyn_elf *)h)->dyn->l_tls_modid != (size_t) modid)
        {
          printf ("round %d: modid now %zu, initially %d\n",
                  i,
-                 ((struct link_map *)((struct dyn_elf *)h)->dyn)->l_tls_modid,
+                 ((struct dyn_elf *)h)->dyn->l_tls_modid,
                  modid);
          result = 1;
        }
diff --git a/test/tls/tst-tls7.c b/test/tls/tst-tls7.c
index 41da2708d34b..2dde9afa4935 100644
--- a/test/tls/tst-tls7.c
+++ b/test/tls/tst-tls7.c
@@ -36,13 +36,12 @@ do_test (void)
         time.  The value of the first round is used.  */
  #ifdef __UCLIBC__
        if (modid == -1)
-       modid = ((struct link_map *)((struct dyn_elf *)h)->dyn)->l_tls_modid;
-      else if (((struct link_map *)((struct dyn_elf *)h)->dyn)->l_tls_modid
-        != (size_t) modid)
+       modid = ((struct dyn_elf *) h)->dyn->l_tls_modid;
+      else if (((struct dyn_elf *)h)->dyn->l_tls_modid != (size_t) modid)
        {
          printf ("round %d: modid now %zu, initially %d\n",
                  i,
-                 ((struct link_map *)((struct dyn_elf *)h)->dyn)->l_tls_modid,
+                 ((struct dyn_elf *)h)->dyn->l_tls_modid,
                  modid);
          result = 1;
        }
diff --git a/test/tls/tst-tls8.c b/test/tls/tst-tls8.c
index 2541609f1842..e0dd35bbebfc 100644
--- a/test/tls/tst-tls8.c
+++ b/test/tls/tst-tls8.c
@@ -41,13 +41,12 @@ do_test (void)
         time.  The value of the first round is used.  */
  #ifdef __UCLIBC__
        if (modid1 == (size_t) -1)
-       modid1 = ((struct link_map *)((struct dyn_elf *)h1)->dyn)->l_tls_modid;
-      else if (((struct link_map *)((struct dyn_elf *)h1)->dyn)->l_tls_modid
-        != (size_t) modid1)
+       modid1 = ((struct dyn_elf *) h1)->dyn->l_tls_modid;
+      else if (((struct dyn_elf *)h1)->dyn->l_tls_modid != (size_t) modid1)
        {
          printf ("round %d: modid now %zd, initially %zd\n",
                  i,
-                 ((struct link_map *)((struct dyn_elf *)h1)->dyn)->l_tls_modid,
+                 ((struct dyn_elf *)h1)->dyn->l_tls_modid,
                  modid1);
          result = 1;
        }
@@ -85,13 +84,13 @@ do_test (void)
         time.  The value of the first round is used.  */
  #ifdef __UCLIBC__
        if (modid2 == (size_t) -1)
-       modid2 = ((struct link_map *)((struct dyn_elf *)h1)->dyn)->l_tls_modid;
-      else if (((struct link_map *)((struct dyn_elf *)h1)->dyn)->l_tls_modid
+       modid2 = ((struct dyn_elf *)h1)->dyn->l_tls_modid;
+      else if (((struct dyn_elf *)h1)->dyn->l_tls_modid
          != (size_t) modid2)
        {
          printf ("round %d: modid now %zd, initially %zd\n",
                  i,
-                 ((struct link_map *)((struct dyn_elf *)h1)->dyn)->l_tls_modid,
+                 ((struct dyn_elf *)h1)->dyn->l_tls_modid,
                  modid2);
          result = 1;
        }
@@ -139,12 +138,12 @@ do_test (void)
         We make sure that the module gets assigned the same ID every
         time.  The value of the first round is used.  */
  #ifdef __UCLIBC__
-      if (((struct link_map *)((struct dyn_elf *)h1)->dyn)->l_tls_modid
+      if (((struct dyn_elf *)h1)->dyn->l_tls_modid
          != modid1)
        {
          printf ("round %d: modid now %zd, initially %zd\n",
                  i,
-                 ((struct link_map *)((struct dyn_elf *)h1)->dyn)->l_tls_modid,
+                 ((struct dyn_elf *)h1)->dyn->l_tls_modid,
                  modid1);
          result = 1;
        }
@@ -179,12 +178,12 @@ do_test (void)
         We make sure that the module gets assigned the same ID every
         time.  The value of the first round is used.  */
  #ifdef __UCLIBC__
-      if (((struct link_map *)((struct dyn_elf *)h1)->dyn)->l_tls_modid
+      if (((struct dyn_elf *)h1)->dyn->l_tls_modid
          != modid2)
        {
          printf ("round %d: modid now %zd, initially %zd\n",
                  i,
-                 ((struct link_map *)((struct dyn_elf *)h1)->dyn)->l_tls_modid,
+                 ((struct dyn_elf *)h1)->dyn->l_tls_modid,
                  modid2);
          result = 1;
        }
--
1.8.3.2

_______________________________________________
uClibc mailing list
[email protected]
http://lists.busybox.net/mailman/listinfo/uclibc

Reply via email to