[
https://issues.apache.org/jira/browse/XERCESC-1022?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12599637#action_12599637
]
Charles Wilson commented on XERCESC-1022:
-----------------------------------------
This issue is still not fixed in 2.8.0, and affects (at least) win32 and
cygwin. Googling shows also that the MacOS builds routinely patch
PlatformUtils.hpp to declare 'isAnySlash' to be NOT inline. I've created a
patch to address this issue, against 2.8.0, which changes isAnySlash to
non-inline on all platform-specific *PlatformUtils.cpp files, and in the
interface PlatformUtils.hpp file.
In case any platform-specific .cpp methods call isAnySlash internally, I moved
the contents of isAnySlash for each platform into a local static inline
fiunction:
inline static bool isAnySlashImpl(XMLCh c)
[
/* the original platform scpecific impl */
}
And then, in each case, the interface method becomes
bool XMLPlatformUtils::isAnySlash(XMLCh c)
{
return isAnySlashImpl(c);
}
As it happens, however, none of the other methods in any of the
platform-specific .cpp files call isAnySlash. But they could -- and if they do,
they at least have the option of calling isAnySlashImpl instead to avoid the
out-of-line slowdown.
> XMLPlatformUtils::isAnySlash() causing dynamic loading errors
> -------------------------------------------------------------
>
> Key: XERCESC-1022
> URL: https://issues.apache.org/jira/browse/XERCESC-1022
> Project: Xerces-C++
> Issue Type: Bug
> Components: Build
> Affects Versions: 2.3.0
> Environment: Operating System: Linux
> Platform: All
> Reporter: Jason E. Stewart
> Assignee: Xerces-C Developers Mailing List
> Attachments: suse-error.txt
>
>
> Hey,
> I've had a large number bug reports in Xerces-P for the 2.3.0 release related
> to
> linking errors with isAnySlash(). For OS X the problems was eliminated by
> removing the 'inline' directive from the .cpp file and recompiling. For Redhat
> Linux this did not help, and Xerces-P was forced to remove the method from the
> API to enable linking.
> I'm at a loss to figure out why this one method should create problems on two
> such different platforms. The linux user was using an old version of gcc
> (2.96),
> so perhaps this is an issue?
> From: Steve Mathias <[EMAIL PROTECTED]>
> Subject: Re: Similar make test error
> To: [EMAIL PROTECTED]
> Date: Sat, 11 Oct 2003 09:35:18 -0600
> >> Can't load
> >> '/usr/local/src/perl/XML-Xerces-2.3.0-1/blib/arch/auto/XML/Xerces/Xerces.so'
> >> for module XML::Xerces:
> >> /usr/local/src/perl/XML-Xerces-2.3.0-1/blib/arch/auto/XML/Xerces/Xerces.so:
> >> undefined symbol: isAnySlash__Q211xercesc_2_316XMLPlatformUtilsUs at
> >> /usr/local/lib/perl5/5.6.1/i686-linux/DynaLoader.pm line 206. at
> >> /usr/local/src/perl/XML-Xerces-2.3.0-1/blib/lib/XML/Xerces.pm line 7
> >>
> >> I'm using xerces-c version 2_3_0 which I built myself with gcc
> >> version 2.96 (I've tried a couple of the samples and they run fine)
> >> and xerces-p version 2.3.0-1.
> Jason> I don't have gcc-2.96 to test this on, but I don't think the gcc
> Jason> version is the issue here.
> Jason> I'm assuming that you've tried to run DOMCount or some other
> Jason> Xerces-C application just to ensure the libxerces.so is working
> Jason> fine?
> Yes, all the xerces-c sample programs run fine.
> Jason> If so then please grep the library symbols using the commands I
> Jason> sent to Kai, and lets see what's happenging there.
> Here's what I get:
> # nm -C /usr/local/xerces-c-src_2_3_0/lib/libxerces-c.so | grep -i isanyslash
> # nm -C
> # /usr/local/src/perl/XML-Xerces-2.3.0-1/blib/arch/auto/XML/Xerces/Xerces.so
> # | grep -i isanyslash
> 0005de34 T _wrap_XMLPlatformUtils_isAnySlash
> U xercesc_2_3::XMLPlatformUtils::isAnySlash(unsigned short)
> So, I guess the error message is correct in reporting that the symbol is
> undefined. I'm in a little over my head with all this compiler/linking
> stuff though. How can I fix this?
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]