Re: [xml] belated question about xmlregexp removal at 2.9.10



In regard to: Re: [xml] belated question about xmlregexp removal at 2.9.10,...:

Hi Tim!

Hi Shlomi!

Tim Mooney via xml <xml gnome org> wrote:

[elided]

When libxml2 2.9.10 was released, a number of formerly-public symbols
were removed from the shared library.  On the surface, that seems like
it would be an ABI break, which might suggest a change in the SONAME of
the library (such as a version bump from .2 to .3).  That didn't happen,
though.


Reading the code, I see:

```
if test "$with_regexps" = "no" ; then
   echo Disabling Regexps support
   WITH_REGEXPS=0
   TEST_REGEXPS=
else
   WITH_REGEXPS=1
   TEST_REGEXPS="Regexptests Automatatests"
fi
AC_SUBST(WITH_REGEXPS)
AC_SUBST(TEST_REGEXPS)

```

Did you try --with-regexps?

I had not tried that, but I have now.  I don't think it made a difference
for the question I'm asking about.

libxml2-2.9.10 and later ships with 'libxml2.syms' in the top level of
the distribution.  That linker map file does not appear to be modified
as part of the configure process, so (AFAICT) it is not updated with
additional symbols based on the "--with-regexps" argument.  Please do
correct me if I'm incorrect about that.

Now, assuming that's true, prior to 2.9.10, the libxml2.syms file block
for LIBXML2_2.6.21 published a bunch of xmlExp* and related symbols as
'global'.

At 2.9.10, those symbols were commented out.  Here's just the section
of libxml2.syms that I'm talking about:

LIBXML2_2.6.21 {
    global:

        # xmlautomata
          xmlAutomataNewNegTrans;

          # xmlregexp
          # emptyExp; removed in 2.9.10
          # forbiddenExp; removed in 2.9.10
          # xmlExpCtxtNbCons; removed in 2.9.10
          # xmlExpCtxtNbNodes; removed in 2.9.10
          # xmlExpDump; removed in 2.9.10
          # xmlExpExpDerive; removed in 2.9.10
          # xmlExpFreeCtxt; removed in 2.9.10
          # xmlExpFree; removed in 2.9.10
          # xmlExpGetLanguage; removed in 2.9.10
          # xmlExpGetStart; removed in 2.9.10
          # xmlExpIsNillable; removed in 2.9.10
          # xmlExpMaxToken; removed in 2.9.10
          # xmlExpNewAtom; removed in 2.9.10
          # xmlExpNewCtxt; removed in 2.9.10
          # xmlExpNewOr; removed in 2.9.10
          # xmlExpNewRange; removed in 2.9.10
          # xmlExpNewSeq; removed in 2.9.10
          # xmlExpParse; removed in 2.9.10
          # xmlExpRef; removed in 2.9.10
          # xmlExpStringDerive; removed in 2.9.10
          # xmlExpSubsume; removed in 2.9.10

[elided]

Other symbols in the same block were not changed, so they're still part
of the public interface of the library.

Even when I include '--with-regexps' when configuring libxml2, as far as
I can tell none of the generated object files provide any of those symbols
listed above as "removed in 2.9.10".

Please feel free to correct any misunderstanding I'm operating under,
but right now it still looks like an ABI break that has the potential
to crash any binaries that were linked against 2.9.9 or earlier.

I would be really happy to be wrong and completely missing some critical
bit of information, so if I am incorrect about this, please do let me
know.

Thanks,

Tim
--
Tim Mooney                                             Tim Mooney ndsu edu
Enterprise Computing & Infrastructure /
Division of Information Technology    /                701-231-1076 (Voice)
North Dakota State University, Fargo, ND 58105-5164


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