Excerpts from Yann Rouillard's message of Tue Aug 07 16:43:08 -0400 2012: Hi Yann,
Sorry it took me so long to get back to this...It's an interesting topic and I think you've outlined a good solution. > Direct Binding changes the behaviour of the linker at runtime, when > a program or a library has a direct binding against a library, the > linker will now link a symbol against the exact library that > provided the symbol at compile time. That exactly solves the problem > we have here because openssl 0.9.8 symbols will be linked against > libssl0.9.8 and not libssl1.0.0 (and vice versaĆ . I think that for 99% of our use cases this is definitely a good thing to turn on. In my understanding, the only place that having it on globally (-B direct) as opposed to toggling on and off per shared object (-z direct) is if something was relying on interposition (using the first symbol found in the default search algorithm -> normal runtime binding). The only case I could think of where that would be desirable behaviour is in something that dlopen()'s multiple objects for a plugin system where one plugin could redefine an interface and a second plugin could re-redefine it and so on. It's like that there are other cases where it _might_ be desirable behaviour but I have to think it's by far the minority. > So to avoid futures difficulties of the same kind, I am proposing to > enable direct binding by default for all opencsw software !) I think this is a good change to add. > I don't see a lot of cons, maybe these ones: > - sometimes, it seems some programs do need the original linker behaviour > but that could be fixed by some other ld options, Yes, in those cases, either turning off direct linking or somehow inserting the on/off toggles to only use direct linking for some objects. > - we never enabled it so maybe we will uncover some problems, > - it works only with Sun ld (we don't use GNU ld somewhere do we > - ?) I'd almost be surprised if there wasn't some package that used gnu ld but I'm not currently aware of any. > 1. write a checkpkg test to test if direct binding if properly enabled in > a package, How do you envision this check being implemented? As a positive or negative check? > 2. enable Direct Binding manually for a reduced set of packages (at least > my packages :) ) > (we just have to pass "-Bdirect" to SUN ld) I see you're doing this already! +1 > 3. wait a bit to see if something unexpected happens :) > 3. if it works, enable it by globally adding the option to LINKER_FLAGS > 4. enable the checkpkg direct binding test by default so we can catch even > packages that don't use LDFLAGS +1. I think it's a sound plan. Thanks -Ben -- Ben Walton Systems Programmer - CHASS University of Toronto C:416.407.5610 | W:416.978.4302 _______________________________________________ maintainers mailing list [email protected] https://lists.opencsw.org/mailman/listinfo/maintainers .:: This mailing list's archive is public. ::.
