[Libvir] __attribute__((constructor)) anyone?

Daniel P. Berrange berrange at redhat.com
Fri Feb 23 12:45:36 UTC 2007


On Fri, Feb 23, 2007 at 10:34:45AM +0000, Richard W.M. Jones wrote:
> Mark McLoughlin wrote:
> >On Thu, 2007-02-22 at 20:00 +0000, Daniel P. Berrange wrote:
> >>On Sat, Feb 17, 2007 at 01:58:04PM +0000, Richard W.M. Jones wrote:
> >>>Would anyone object to a patch using __attribute__((constructor)) 
> >>>throughout libvirt rather than all this if(!initialised) initialise() 
> >>>stuff?
> >>I don't think that annotation is widely supported enough by constructors
> >>for us to be able to use it - in particular I think it'd be a problem for
> >>the Solaris guys using libvirt unless they switched to GCC instead of the
> >>Sun compilers/linkers.
> >
> >	A better reason[1], IMHO is that it just makes code more obtuse for
> >little gain - e.g. what order are they called in? And you'd have weird
> >stuff where the handler set by virSetErrorFunc() would not be called if
> >an error occurred in a constructor, requiring the library user to also
> >use a constructor in order to call virSetErrorFunc() ...
> 
> Actually this is an argument for using constructors, because the linker 
> should order them in a sensible order taking into account module 
> dependencies.  Anyhow, I take the point about people using non-GCC 
> compilers (and I'm a bit surprised too ...)  Does anyone know if the 
> Solaris compiler supports C99 idioms?  The remote patch currently uses 
> C99 idioms all over the place ...

This page indicates that Sun Studio 8 does do C99 if the user asks for it with
the -xc99 flag

http://docs.sun.com/source/817-0924/c99.app.html

Dan.
-- 
|=- Red Hat, Engineering, Emerging Technologies, Boston.  +1 978 392 2496 -=|
|=-           Perl modules: http://search.cpan.org/~danberr/              -=|
|=-               Projects: http://freshmeat.net/~danielpb/               -=|
|=-  GnuPG: 7D3B9505   F3C9 553F A1DA 4AC2 5648 23C1 B3DF F742 7D3B 9505  -=| 




More information about the libvir-list mailing list