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

baruch

> >>Signed-off-by: Vineet Gupta <vgu...@synopsys.com>
> >>---
> >>  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
> 

-- 
     http://baruch.siach.name/blog/                  ~. .~   Tk Open Systems
=}------------------------------------------------ooO--U--Ooo------------{=
   - bar...@tkos.co.il - tel: +972.2.679.5364, http://www.tkos.co.il -
_______________________________________________
uClibc mailing list
uClibc@uclibc.org
http://lists.busybox.net/mailman/listinfo/uclibc

Reply via email to