[petsc-dev] Mat/DM dependency
Barry Smith
bsmith at mcs.anl.gov
Sun Jan 3 16:52:18 CST 2010
I have moved the hyprestruct matrix definition from mat directory
to the dm/da directory. This should resolve the problem for you.
Barry
On Jan 2, 2010, at 11:28 PM, Jed Brown wrote:
> On Sat, 02 Jan 2010 21:39:13 -0700, Jed Brown <jed at 59A2.org> wrote:
>> This is standard behavior, and I believe it's a good thing
>
> To elaborate on this, suppose libA provides the symbol AFunc() which
> has
> some weird dependency. Suppose libB does not reference AFunc() and
> some
> application appC depends on libB. Since AFunc() is unreachable when
> we
> link appC, a permissive linker will let the silent dependencies slip
> by
> unresolved. Now we update libB (without changing it's ABI) so that
> AFunc() is referenced. Since appC has not changed, we should be
> able to
> just update libB and appC should not need to be touched. But since
> the
> linker let the dependencies for the formerly unreachable AFunc()
> slip by
> when we linked appC, we now have a broken executable. A stricter
> linker
> would have forced us to resolve the dependencies up front so that we
> can't silently end up with this broken executable.
>
> Also, I'm missing something else if the present isn't very brittle
> with
> static libs due to the link order. That is, -lpetscdm -lpetscmat
> could
> leave DA symbols in libpetscmat.a unresolved, requiring something like
> -lpetscdm -lpetscmat -lpetscdm. (This only applies if the application
> didn't reference these symbols, which any reasonable application
> probably needs to do in this case, explaining why it hasn't caused a
> problem yet.)
>
> Note that we already have MatSchurComplement in libpetscksp.
>
> Jed
More information about the petsc-dev
mailing list