dotgnu-pnet
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Pnet-developers] [bug #13498] ilalink jumps to conclusions too soon whe


From: Ron MacNeil
Subject: [Pnet-developers] [bug #13498] ilalink jumps to conclusions too soon when auto-referencing libs that are indirectly required
Date: Wed, 22 Jun 2005 05:49:27 +0000
User-agent: Mozilla/5.0 (compatible; Konqueror/3.4; FreeBSD) KHTML/3.4.0 (like Gecko)

URL:
  <http://savannah.gnu.org/bugs/?func=detailitem&item_id=13498>

                 Summary: ilalink jumps to conclusions too soon when
auto-referencing libs that are indirectly required
                 Project: DotGNU Portable.NET
            Submitted by: macro
            Submitted on: Wed 06/22/2005 at 05:49
                Category: None
                Severity: 3 - Normal
              Item Group: None
                  Status: None
                 Privacy: Public
             Assigned to: None
             Open/Closed: Open

    _______________________________________________________

Details:

When processing a referenced lib A, ilalink tries to be helpful by
auto-referencing libs B that A requires but which might not be directly
required.

The problem is, if B isn't in one of the lib paths (-L) ilalink gives up right
away, EVEN IF that lib might be directly referenced in a subsequent
-l/path/to/lib switch.

Maybe the auto-indirect-referencing should be done in a separate pass, after
all direct references have been processed?

Regardless, neither Mono's mcs nor Microsoft's csc exhibit the same problem.

Kudos on the great work, guys.
Ron



Starting point:
This block at line 814'ish of ilalink/link_library.c, in function
ILLinkerAddLibrary(), which recursively calls itself straight away for each
indirectly-referenced lib without waiting to see if it's referenced manually
later on:

/* Add assemblies that were referenced by this library, because
   this library may contain TypeRef's in its public signatures
   to some other assembly, and we need to import them too */
if(result)
{
        assem = 0;
        while((assem = (ILAssembly *)ILImageNextToken
                                (image, IL_META_TOKEN_ASSEMBLY_REF, (void 
*)assem)) != 0)
        {
                if(!ILLinkerAddLibrary(linker, ILAssembly_Name(assem)))
                {
                        result = 0;
                        break;
                }
        }
}










    _______________________________________________________

Reply to this item at:

  <http://savannah.gnu.org/bugs/?func=detailitem&item_id=13498>

_______________________________________________
  Message sent via/by Savannah
  http://savannah.gnu.org/



reply via email to

[Prev in Thread] Current Thread [Next in Thread]