Ethan is right. The MPIR_Breakpoint function will be queried by your preferred parallel debugger, in order to set a breakpoint. Therefore, to allow the debuggers to be able to find the function we have to make sure it is externally visible, i.e. flagged with OMPI_DECLSPEC (for the one in libmpi) and with ORTE_DECLSPEC for the one in libopen-rte. And yes, we really need the *_DECLSPEC to make it visible, extern is not enough.

Moreover, looking in the ompi/debugger/debugger.h file I realized that the two functions declared inside are flagged OMPI_DECLSPEC when they should not have been, as these two functions are not called from outside the libmpi.

Please try r22032.

  george.

On Sep 29, 2009, at 17:55 , Jeff Squyres wrote:

On Sep 29, 2009, at 5:30 PM, Ralph Castain wrote:

The issue isn't why or why not static, Jeff - the issue is that we get
a compiler warning whenever we do a developer build.


Right. The initial issue was the static-ness, though -- Ethan removed the static because some compilers were effectively inlining the function (and therefore removing the symbol from the library, making the parallel debugger attach stuff not work) presumably because a) the function was static, b) the function was short with no side effects, and c) the function was only called once within that .c file.

Removing the "static" from the function prototype violated those assumptions so that it could no longer be inlined (And therefore the symbol definitely appears in the library). But then we ran across the "must be prototyped" warning.

That's where all this came from.  :-)

So -- I still don't think we need to DECLSPEC the prototype.  :-)

On Sep 29, 2009, at 2:32 PM, Jeff Squyres wrote:

> I don't think we need to DECLSPEC it, do we?  We don't need (or
> want) this symbol to be visible at the link level when user apps
> link against libmpi.  You might want to put in a comment about why
> it's not static so that we don't repeat this conversation again next
> year.  ;-)
>
> I think not having it DECLSPEC'ed should still work for the debugger
> (since it worked before when it was static), but if you could test
> it to be sure, that would be great...



--
Jeff Squyres
jsquy...@cisco.com

_______________________________________________
devel mailing list
de...@open-mpi.org
http://www.open-mpi.org/mailman/listinfo.cgi/devel

Reply via email to