> -----Original Message-----
> From: Garrett Cooper [mailto:[email protected]]
> Sent: Sunday, August 29, 2010 4:14 AM
> To: Mitani
> Cc: [email protected]
> Subject: Re: [LTP] Build of test cases using
> "pthread_barrierattr_getpshared" failed.
> 
> On Thu, Aug 26, 2010 at 9:54 PM, Garrett Cooper <[email protected]>
> wrote:
> > On Aug 26, 2010, at 8:03 PM, Mitani wrote:
> >
> >> Hi,
> >>
> >> I tried to build open_posix_testsuite test cases.
> >> But, in RHEL4.8 systems (x86, x86_64, ia64), some test cases failed
> to
> >> build as follows:
> >> ------------
> >> [...]
> >> conformance/interfaces/pthread_barrierattr_getpshared/1-1
> compile FAILED
> >> /tmp/cceTtlYC.o(.text+0x5c): In function `main':
> >> : undefined reference to `pthread_barrierattr_getpshared'
> >> collect2: ld returned 1 exit status
> >> conformance/interfaces/pthread_barrierattr_getpshared/2-1
> compile FAILED
> >> /tmp/ccMhUJvM.o(.text+0x125): In function `main':
> >> : undefined reference to `pthread_barrierattr_getpshared'
> >> collect2: ld returned 1 exit status
> >> conformance/interfaces/pthread_barrierattr_init/1-1 compile
> FAILED
> >> /tmp/cc6vNdZV.o(.text+0x5c): In function `main':
> >> : undefined reference to `pthread_barrierattr_getpshared'
> >> collect2: ld returned 1 exit status
> >> conformance/interfaces/pthread_barrierattr_init/2-1 compile
> PASSED
> >> conformance/interfaces/pthread_barrierattr_setpshared/1-1
> compile FAILED
> >> /tmp/cc2gjFbd.o(.text+0x9c): In function `main':
> >> : undefined reference to `pthread_barrierattr_getpshared'
> >> /tmp/cc2gjFbd.o(.text+0x128): In function `main':
> >> : undefined reference to `pthread_barrierattr_getpshared'
> >> collect2: ld returned 1 exit status
> >> conformance/interfaces/pthread_barrierattr_setpshared/2-1
> compile PASSED
> >> [...]
> >> ------------
> >>
> >> These errors are linkage error about
> "pthread_barrierattr_getpshared".
> >>
> >> I searched "pthread_barrierattr_getpshared" in libraries (*.a, *.o,
> *.so*).
> >> I found it in "/usr/lib64/libpthread.a", but the name is
> >> "__pthread_barrierattr_getpshared":
> >> ------------
> >> [r...@rhel48-ltp-em64t pthread_barrierattr_getpshared]# find /
> -name \*.a
> >> -print | xargs n
> >> m -o | grep pthread_barrierattr_getpshared
> >> nm: fromhost.o: no symbols
> >> nm: tli.o: no symbols
> >> nm: myvsyslog.o: no symbols
> >> nm: mcst_grp.o: no symbols
> >> [...]
> >> nm: liblua_la-ltests.o: no symbols
> >> nm: ptlongjmp.o: no symbols
> >> nm: oldsemaphore.o: no symbols
> >> /usr/lib64/libpthread.a:barrier.o:0000000000000150 T
> >> __pthread_barrierattr_getpshared
> >> nm: libc-tls-loc.o: no symbols
> >> nm: ptw-lseek.o: no symbols
> >> nm: ptw-lseek64.o: no symbols
> >> [...]
> >> nm: apptype.o: no symbols
> >> nm: fromhost.o: no symbols
> >> nm: tli.o: no symbols
> >> nm: myvsyslog.o: no symbols
> >> [r...@rhel48-ltp-em64t pthread_barrierattr_getpshared]#
> >> ------------
> >>
> >> This name includes "__" for prefix.
> >> I think it is strange.
> >>
> >> On the other hand, as indicated above, "conformance/interfaces/
> >> pthread_barrierattr_setpshared/2-1" succeeded to build.
> >> This test case uses "pthread_barrierattr_setpshared", and does not
> use
> >> "pthread_barrierattr_getpshared".
> >> I searched "pthread_barrierattr_getpshared" just in case:
> >> ------------
> >> [r...@rhel48-ltp-em64t pthread_barrierattr_getpshared]# find /
> -name \*.a
> >> -print | xargs n
> >> m -o | grep pthread_barrierattr_setpshared
> >> nm: fromhost.o: no symbols
> >> nm: tli.o: no symbols
> >> nm: myvsyslog.o: no symbols
> >> nm: mcst_grp.o: no symbols
> >> nm: ibmcgrp.o: no symbols
> >> [...]
> >> nm: ptlongjmp.o: no symbols
> >> nm: oldsemaphore.o: no symbols
> >> nm: libc-tls-loc.o: no symbols
> >> /usr/lib64/libpthread.a:barrier.o:0000000000000160 T
> >> pthread_barrierattr_setpshared
> >> nm: ptw-lseek.o: no symbols
> >> nm: ptw-lseek64.o: no symbols
> >> nm: ptw-pread64.o: no symbols
> >> [...]
> >> nm: apptype.o: no symbols
> >> nm: fromhost.o: no symbols
> >> nm: tli.o: no symbols
> >> nm: myvsyslog.o: no symbols
> >> [r...@rhel48-ltp-em64t pthread_barrierattr_getpshared]#
> >> ------------
> >>
> >> This name does not include prefix "__".
> >>
> >>
> >> I think that this linkage error of "pthread_barrierattr_getpshared"
> is
> >> caused by the malfunction of RHEL4.8.
> >>
> >> Therefore, "SKIPPED" is necessary for the compilation of such above
> >> test case, I think.
> >> But "SKIPPED" was deleted from last month git.
> >> Can "SKIPPED" be displayed again as before?
> 
> Ok... but how does one quantify a SKIPPED from a FAILED case? The
> outcome is ultimately the same: your test didn't compile, you need to
> determine _why_ it didn't compile and/or qualify whether or not the
> result is sane. With the build-only's it's a little more fun because
> there's no reason why SKIPPED should be output. For the
> non-build-only's, I could see the potential need, but again... it's
> just presenting the outcome in a different light.
> 
> Also, SKIPPED does still exist for runtime tests (where it ultimately
> should apply):
> 
> $ grep SKIPPED bin/run-tests.sh
>               echo "$testname: execution: SKIPPED (test not
> present)"
> 
> So, I don't think this is an issue.
> 
> > What does the manpage say is required for the API?
> 
> Also, you may be using an ancient version of gcc/glibc which means
> that you have to modify the value used in the top-level CFLAGS file
> to
> get the appropriate behavior you want, via -pthread, manually linking
> in the libraries, etc. But please be sure to look up the manpage
> stated requirements and report them back here so I can help you
> resolve your issue.
> 
> Thanks,
> -Garrett


Sorry for my late answer.

I couldn't understand written meanings well first. (The most of reasons 
that I couldn't understand are lack of my English comprehension.)
And I needed time to get my opinion in shape.


> What does the manpage say is required for the API?

Manpage doesn't say about requirements.
I show manpage of my test environmwent (RHEL4.8 x86_64):
------------
[r...@rhel48-ltp-em64t usr]# man pthread_barrierattr_getpshared
PTHREAD_BARRIERATTR_GETPSHARED(P)
PTHREAD_BARRIERATTR_GETPSHARED(P)

NAME
       pthread_barrierattr_getpshared, pthread_barrierattr_setpshared - get
and set the
       process-shared attribute of the barrier  attributes  object
(ADVANCED  REALTIME
       THREADS)

SYNOPSIS
       #include <pthread.h>

       int pthread_barrierattr_getpshared(const pthread_barrierattr_t *
              restrict attr, int *restrict pshared);
       int pthread_barrierattr_setpshared(pthread_barrierattr_t *attr,
              int pshared);

DESCRIPTION
       The pthread_barrierattr_getpshared() function shall obtain the value
of the pro-
       cess-shared attribute  from  the  attributes  object  referenced  by
attr.  The
       pthread_barrierattr_setpshared() function shall set the
process-shared attribute
       in an initialized attributes object referenced by attr.

       The process-shared attribute is set to PTHREAD_PROCESS_SHARED to
permit  a  bar-
       rier  to  be operated upon by any thread that has access to the
memory where the
       barrier is allocated. If the process-shared  attribute  is
PTHREAD_PROCESS_PRI-
       VATE, the barrier shall only be operated upon by threads created
within the same
       process as the thread that initialized the barrier; if threads of
different pro-
       cesses  attempt  to  operate  on  such a barrier, the behavior is
undefined. The
       default value of the attribute shall be PTHREAD_PROCESS_PRIVATE. Both
constants
       PTHREAD_PROCESS_SHARED and PTHREAD_PROCESS_PRIVATE are defined in
<pthread.h>.

       Additional  attributes,  their  default  values, and the names of the
associated
       functions to get and set those attribute values are
implementation-defined.

RETURN VALUE
       If successful, the pthread_barrierattr_getpshared() function shall
return  zero
       and store the value of the process-shared attribute of attr into the
object ref-
       erenced by the pshared parameter. Otherwise, an error number shall
be  returned
       to indicate the error.

       If  successful, the pthread_barrierattr_setpshared() function shall
return zero;
       otherwise, an error number shall be returned to indicate the error.

ERRORS
       These functions may fail if:

       EINVAL The value specified by attr is invalid.

       The pthread_barrierattr_setpshared() function may fail if:

       EINVAL The new value specified for the process-shared attribute is
not  one  of
              the legal values PTHREAD_PROCESS_SHARED or
PTHREAD_PROCESS_PRIVATE.

       These functions shall not return an error code of [EINTR].

       The following sections are informative.

EXAMPLES
       None.

APPLICATION USAGE
       The  pthread_barrierattr_getpshared() and
pthread_barrierattr_setpshared() func-
       tions are part of the Barriers option and need not be provided on all
implemen-
       tations.

RATIONALE
       None.

FUTURE DIRECTIONS
       None.

SEE ALSO
       pthread_barrier_destroy()  ,  pthread_barrierattr_destroy()  ,
pthread_barrier-
       attr_init() , the Base Definitions volume of IEEE Std 1003.1-2001,
<pthread.h>

COPYRIGHT
       Portions of this text are reprinted and reproduced in electronic form
from  IEEE
       Std  1003.1, 2003 Edition, Standard for Information Technology --
Portable Oper-
       ating System Interface (POSIX), The Open  Group  Base  Specifications
Issue  6,
       Copyright  (C)  2001-2003  by  the Institute of Electrical and
Electronics Engi-
       neers, Inc and The Open Group. In the event of any discrepancy
between this ver-
       sion  and  the  original IEEE and The Open Group Standard, the
original IEEE and
       The Open Group Standard is the referee document. The original
Standard  can  be
       obtained online at http://www.opengroup.org/unix/online.html .

POSIX                                     2003
PTHREAD_BARRIERATTR_GETPSHARED(P)
[r...@rhel48-ltp-em64t usr]#
------------

Manpage says that the function's name is "pthread_barrierattr_getpshared".
But the function name that is in the library was 
"__pthread_barrierattr_getpshared":
------------
[r...@rhel48-ltp-em64t pthread_barrierattr_getpshared]# find / -name \*.a
-print | xargs n
m -o | grep pthread_barrierattr_getpshared
nm: fromhost.o: no symbols
nm: tli.o: no symbols
[...]
nm: oldsemaphore.o: no symbols
/usr/lib64/libpthread.a:barrier.o:0000000000000150 T
__pthread_barrierattr_getpshared
nm: libc-tls-loc.o: no symbols
[...]
nm: tli.o: no symbols
nm: myvsyslog.o: no symbols
[r...@rhel48-ltp-em64t pthread_barrierattr_getpshared]#
------------


> Ok... but how does one quantify a SKIPPED from a FAILED case? The
> outcome is ultimately the same: your test didn't compile, you need to
> determine _why_ it didn't compile and/or qualify whether or not the
> result is sane. 

You right.
I considered it once again. And I thought that it is not problem that 
build failure by the glibc malfunction was displayed with "FAILED".

But I want to distinguish the reason of the failure by some kind of 
methods -- the reason is whether the failure depends on the test-set 
malfunction or it depends on environmental malfunction.
Otherwise somebody may have to do investigation same as what I did.


> Also, you may be using an ancient version of gcc/glibc [...]

Yes, I think so.
I only used gcc/glibc which RHEL4.8 distributes. I didn't install 
other version's gcc/glibc.
Perhaps, the library of RHEL4.8 has mistakes, I think.
But, I can't install new version's glibc, because the test by using 
new version's glibc is not pure test of RHEL4.8.


Thank you--


-Tomonori Mitani



------------------------------------------------------------------------------
This SF.net Dev2Dev email is sponsored by:

Show off your parallel programming skills.
Enter the Intel(R) Threading Challenge 2010.
http://p.sf.net/sfu/intel-thread-sfd
_______________________________________________
Ltp-list mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/ltp-list

Reply via email to