On Wed, Feb 08, 2006 at 05:21:38PM +0100, Richard Atterer wrote:
> Some more info:
> 
> I went through the whole libstdc++ build process before coming up with my 
> patch. IIRC, some configure tests are not executed when cross-compiling, 
> which results in something like __USE_LARGEFILE64 and friends (or similar, 
> I don't remember the details) not being set up correctly.

Obviously you can't test for runtime features on the host when you
are cross compiling.  That isn't an easy problem to solve if there
is no static test that would be equivalent.

And libstdc++ itself building ok is no guarantee that any of its
functions will actually work when called.  If you don't call them
you will never know.

> It's true that the native build does not define _GLIBCXX_USE_LFS. ISTR 
> the reason I chose it was that with it, all the "dependent" defines like 
> __USE_LARGEFILE64 were set up by the libstdc++ header files.

I'm guessing you are talking about _LARGEFILE{,64}_SOURCE -- which seems
to have some mentions in a couple of places, but grep doesn't seem to
find it in much code...

> Unfortunately, it's been a while and I will have to go through the build 
> process again to find an alternative solution.

I don't think going through the build process is going to help you.
You are going to need to use the Source.  Since _GLIBCXX_USE_LFS isn't
used in very many places either -- and if you look at them, you'll
probably see that in most places, the required code for billware is
entirely absent and there are no magic guards marking all the places
it might need to be.

So your mission, should you choose to accept it, would seem to be:

a) Identify all the code paths affected by this change,
b) Write portable test cases that exercise them to prove your changes
   and guard against regressions (if they don't already exist in the
   gcc test suite).
c) Fix the code for mingw (and/or gcc ;) that breaks the test cases.

If you were to "prod" upstream with a report on that work you might
have a bit more luck at catching their attention to incorporate it.
Reproducible results are much better than a blank claim that something
is "fully tested".  And if you leave half that work for someone else
to do, then you'll have to be patient while they find time to do the
rest.  But every little bit helps if it builds a better picture for
the next player.

I don't think there is a magic bullet here which will let us just
turn this on with the flip of a switch.  I don't know why your
native billware "works", perhaps that version has better posix
emulation or something, because at a quick glance, it looks to me
like there is glue missing if you need to call the functions that
Danny pointed at.  Someone will have to implement (most of the
rest of) that.  It looks like someone made a start, then left it
disabled behind _GLIBCXX_USE_LFS && __MINGW__.

hth get you a bit further.
best,
Ron




-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]

Reply via email to