[Mesa-dev] [PATCH] ralloc: Use __attribute__((destructor)) instead of atexit(3)

Ian Romanick idr at freedesktop.org
Wed Sep 9 18:54:24 PDT 2015


On 09/07/2015 06:54 AM, Jose Fonseca wrote:
> On 07/09/15 10:17, Jean-Sébastien Pédron wrote:
>> On 04.09.2015 01:37, Matt Turner wrote:
>>> You need to test for this support in configure.ac. It's as simple as
>>> adding a call to AX_GCC_FUNC_ATTRIBUTE in the existing alphabetized
>>> list and then a little bit of preprocessor in src/util/macros.h.
>>
>> Should the code fallbacks on atexit(3) if the attribute is not
>> supported?
> 
> At least on Windows, with MSVC,  atexit should be the right thing to do,
> since we statically link MSVC RunTime,
> 
> 
>> Can I use the HAVE_FUNC_ATTRIBUTE_DESTRUCTOR macro in
>> ralloc.c for this purpose?
> 
> For the record, another alternative (way more portable), is you have a
> simple .cpp file with a static destructior:

Arg. :(  We used to have code that used this in several places, but that
idiom has gradually been removed.  See c61bc6ed (although that was using
a constructor to initialize instead of a destructor to free).  I don't
care too much what idiom we pick, but I think we should pick one and
stick with it.

>   class AtExit
>   {
>   public:
>      ~AtExit() {
>          // do what must be done
>       }
>   };
> 
>   AtExit atExit();
> 
> 
> After all, it seems wrong to use non-standard C to replicate what
> standard C++ can do.
> 
> 
> Jose
> 
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/mesa-dev



More information about the mesa-dev mailing list