[foreign] RFR 8222025: jextract generates reference to underfined type for va_list

Sundararajan Athijegannathan sundararajan.athijegannathan at oracle.com
Mon Apr 8 12:33:03 UTC 2019


Updated: https://cr.openjdk.java.net/~sundar/8222025/webrev.01/

* Separate tree phase for builtin types handler
* TypeDictionary was missing path null check and builtin header file
* canonicalType() call was missing in Utils.java (for element type of an 
array)

-Sundar

On 08/04/19, 3:12 PM, Maurizio Cimadamore wrote:
>
> On 06/04/2019 04:12, Sundararajan Athijegannathan wrote:
>> You're right. This fix addresses only typedefs that too that only 
>> builtin struct/union types only (for now).  This seems to cover 
>> issues faced with compilation of generated sources. We could walk 
>> through every type usage in all Trees. Should we/I do that?
>
> Maybe as a followup change. The fix is good as is, but let's also try 
> to fix the more general problem of a jextract run referring to symbols 
> that aren't there.
>
> Maurizio
>
>>
>> Thanks,
>> -Sundar
>>
>> On 06/04/19, 1:49 AM, Maurizio Cimadamore wrote:
>>> Looks a very nice fix! This is also related to the issue that Jorn 
>>> was trying to fix while ago re. incomplete array types, so maybe 
>>> after this is pushed, we can revisit that topic.
>>>
>>> One question: this patch attempts to fix missing builtins only in 
>>> case they appear in typedefs, right? That is ok for the va_list 
>>> case, but I guess it doesn't address the more general problem where 
>>> builtins are used directly (I assume not all of them will be 
>>> typedef'ed) ? What would be the plan there?
>>>
>>> Maurizio
>>>
>>>
>>> On 05/04/2019 11:49, Sundararajan Athijegannathan wrote:
>>>> Please review.
>>>>
>>>> Bug: https://bugs.openjdk.java.net/browse/JDK-8222025
>>>> Webrev: https://cr.openjdk.java.net/~sundar/8222025/webrev.00/
>>>>
>>>> "builtin" type is detected by source file location having "null" 
>>>> path. For each builtin record type, we generate fake Trees and add 
>>>> to the list of declarations. A builtin header file ("builtin$.h") 
>>>> is used as a target header for such declarations. This ensures that 
>>>> we only generate one copy of builitin mappings & all builtin type 
>>>> references resolve to those.
>>>>
>>>> Thanks,
>>>> -Sundar


More information about the panama-dev mailing list