On Fri, Jan 27, 2012 at 5:34 AM, Jeff Squyres <jsquy...@cisco.com> wrote:
[snip]
>
>
> I'm not quite sure how that can happen -- orte_odls appears to be
> prototyped properly in orte/mca/odls/odls.h (i.e., it has ORTE_DECLSPEC,
> for visibility), and is properly instantiated in
> orte/mca/odls/base/odls_base_open.c.
>
> Paul: can you run some nm's and see how the orte_odls symbol appears in
> libopen-rte.a?
>
>

In the PGI build directory:

> $ find . -name '*.a' | while read lib; do
>       out=`nm $lib 2>/dev/null | grep -w _orte_odls`;
>       test -n "$out" && echo -e "${lib}:\n${out}";
>    done
> ./orte/.libs/libopen-rte.a:
>                  U _orte_odls
>                  U _orte_odls
>                  U _orte_odls
> 0000000000000038 C _orte_odls
>                  U _orte_odls
>                  U _orte_odls
> ./orte/mca/errmgr/.libs/libmca_errmgr.a:
>                  U _orte_odls
> ./orte/mca/odls/.libs/libmca_odls.a:
> 0000000000000038 C _orte_odls
>                  U _orte_odls
> ./orte/mca/plm/.libs/libmca_plm.a:
>                  U _orte_odls


Meanwhile in the GCC build directory the same shell command yields
something quite different:

> ./orte/mca/errmgr/.libs/libmca_errmgr.a:
>                  U _orte_odls
> ./orte/mca/odls/.libs/libmca_odls.a:
> 00000000000011c0 S _orte_odls
>                  U _orte_odls
> ./orte/mca/plm/.libs/libmca_plm.a:
>                  U _orte_odls


So the difference boils down to "C" vs "S".
According to "man nm" on this system
  "C" is "common"
  "S" is "other section not listed above"

I don't know much about visibility attributes and so can't follow the path
any further without some instructions to follow.  (Though I will read the
PGI manpages for anything related to common vs noncommon symbols).

Hopefully those are the droids you're looking for,
-Paul

-- 
Paul H. Hargrove                          phhargr...@lbl.gov
Future Technologies Group
HPC Research Department                   Tel: +1-510-495-2352
Lawrence Berkeley National Laboratory     Fax: +1-510-486-6900

Reply via email to