[Patch] Configure broken for Solaris 2.6 (PR#12014)

David Collier-Brown davecb at Canada.Sun.COM
Fri Jan 8 16:13:40 GMT 1999

eischen at vigrid.com wrote:
> > For this to work, you have to define _LARGEFILE64_SOURCE, not _LARGEFILE_SOURCE.
> > The define for _FILE_OFFSET_BITS=64 is not necessary for detecting statvfs or
> > statvfs64.  In other words,
> >
> >   gcc -o conftest -O  -D_LARGEFILE64_SOURCE conftest.c -lsec -lsocket -lnsl -ldl -lpam
> >
> > will work.  Here is the diff for source/configure:
Jeremy Allison wrote:
> According to Dave Collier-Brown, who is a Sun engineer,
> this would be the wrong thing to do, which is why I didn't
> include the patch the first time. I forget the exact
> reasoning but I am CC:ing this message to samba-technical
> so he can explain again (sorry Dave :-).

	Ok, but this is my opinion, not necessarily Sun's.

	<factual part>
	There are two ways to use 64-bit files: by switching
	all files i/o to 64-bit, or by mixing 32 and 64 bit.

	The Sun incantation for mixed 32 & 64
	includes -D_LARGEFILE64_SOURCE.
	The one for all-files-64 includes -D_LARGEFILE_SOURCE.
	Both include -D_FILE_OFFSET_BITS=64, and the authors are
	insistent that it's necessary:  the man page says.
	"Set  the  compile-time  flag  _FILE_OFFSET_BITS  to 64
	before including any headers."

	Try man lfcompile (64bit) and lfcompile64 (32/64), plus man lf64
	to figure out what Sun's up to.

	<put on guru hat>
	Now, as to the "which to use" question: 
	the transitional interfaces allow you to use, for example,
	open() and open64() in the same program.  I strongly
	recommend against doing so: this is really for people
	whose programs are so horrible that they're scared to
	change to the new xxx_t types for fear something else will
	break. (I'm working on fixing one as we speak)

	The "all 64" scheme is the one I recommend: you'll get
	compiler warning if you try to use an int for a type which
	has turned into a long, which usually is all the hint you need.
	(I actually diff'd before-and-after-the-change compile logs to pick
	out the few new warnings from the hundreds of others).

	You don't have to change any function names, and when you go to
	a 64-bit os like Solaris 7 or the Alpha one (what do they call it
	now? digital compax?), you won't have to make any additional changes.

	<change hats to dunce cap>
	I have to admit I got a ton of strange compile messages initially,
	but it turned out that my compiler was set so that it emitted
	messages at then wrong moment while running configure. As a result
	configure thought several things had failed and generated bogus
	includes.  This meant I ended up tracing my way through configure
	checking, among others, the xxx64() test code.
	<remove dunce cap>

[I'm a philosopher and logician, formerly on the binary stability and
 forward migration project at Opcom in Toronto.  Right now I'm doing a
 sunos->solaris port for a customer. I speak for me, but with an
 of large-scale migration issues gained from the Sun stability project]
David Collier-Brown,  | Always do right. This will gratify some people
185 Ellerslie Ave.,   | and astonish the rest.        -- Mark Twain
Willowdale, Ontario   | http://java.science.yorku.ca/~davecb
Work: (905) 477-0437 Home: (416) 223-8968 Email: davecb at canada.sun.com
David Collier-Brown,  | Cherish your enemies.  They're harder to
Trader 2000 Programme | come by than friends and more motivated.
Sun NAFO CE (Toronto) | davecb at canada.sun.com
(905) 477-0437        | http://elsbeth.canada.sun.com/~davecb

More information about the samba-technical mailing list