On Fri, Nov 20, 2015 at 10:43 AM, David Edelsohn <dje....@gmail.com> wrote:
> On Fri, Nov 20, 2015 at 11:28 AM, Sebastian Pop <seb...@gmail.com> wrote:
>> Thanks David for reporting these problems.
>>
>> On Fri, Nov 20, 2015 at 9:31 AM, David Edelsohn <dje....@gmail.com> wrote:
>>> (2) All of the graphite*.c files include ISL headers first.  This
>>> order is not supported by GCC development and creates conflicts for
>>> types and definitions provided / overridden by GCC headers, especially
>>> system.h and its dependent headers like hwint.h.
>>>
>>> I presume that ISL headers are included first is they use calloc() and
>>> strdup(), which are poisoned by GCC in system.h.
>>
>> Yes, I do remember we had problems including the isl headers after system.h.
>>
>>>
>>> I am uncertain of the exact header dependencies, but the primary
>>> dependency seems to be that the ISL headers must be included before
>>> graphite-poly.h.  The identifier poisoning problem needs to be
>>> addressed by not poisoning the identifiers for files that include ISL
>>> headers.  The Graphite files need some sort of a macro like
>>>
>>> #define IN_GRAPHITE
>>>
>>> or
>>>
>>> #define IN_ISL
>>>
>>> and system.h must not poison the identifiers when that macro is present.
>>>
>>> I am going to try with a hack of bracketing system.h with #undef
>>> IN_GCC / #define IN_GCC in the graphite files.
>>
>> I don't understand why these symbols are poisoned in GCC.
>> If there is a good reason to poison these functions, why would they
>> be fine to be used in Graphite and ISL?
>>
>> Would it be possible to relax these constraints and remove the
>> poisoning of these functions in GCC?
>
> GCC should use xmalloc, xcalloc, xstrdup, etc.
>
> https://gcc.gnu.org/ml/gcc-patches/2001-03/msg00484.html
>
> We cannot change ISL, so the poisoning should be lifted for those
> files instead of including headers in the wrong order.

Thanks for the explanation, that makes sense now.

Reply via email to