Uploaded image for project: 'JDK'
  1. JDK
  2. JDK-8223031

panama_foreign.md curl example fails with missing symbols

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Fixed
    • Icon: P3 P3
    • None
    • repo-panama
    • tools
    • Mac OS X 10.14.4

    • x86
    • os_x

      java.lang.RuntimeException: In memory compilation failed: /org/unix/multi_lib.java:107: error: cannot find symbol
          public static Pointer<org.unix.multi_h.CURLMsg> curl_multi_info_read(Pointer<?> multi_handle, Pointer<Integer> msgs_in_queue) {
                                                ^
        symbol: class CURLMsg
        location: interface multi_h
      /org/unix/multi_h.java:328: error: cannot find symbol
          public Pointer<org.unix.multi_h.CURLMsg> curl_multi_info_read(Pointer<?> multi_handle, Pointer<Integer> msgs_in_queue);
                                         ^
        symbol: class CURLMsg
        location: interface multi_h
      2 errors

      changeset: 55894:664abc4e7063
      branch: foreign
      tag: tip
      user: sundar
      date: Fri Apr 26 18:27:32 2019 +0530
      summary: 8223009: clang standard headers are not copied to $JDK/conf/jextract if there are more than one clang versions

      Output in full:

      /Tests/panama% jextract -t org.unix -L /usr/lib -lcurl --record-library-path /usr/include/curl/curl.h -J-Djextract.debug=true -o curl.jar
      WARNING: symbol _OSSwapInt16 is not found in any library, excluding it
      WARNING: symbol _OSSwapInt32 is not found in any library, excluding it
      WARNING: symbol _OSSwapInt64 is not found in any library, excluding it
      WARNING: symbol __darwin_fd_isset is not found in any library, excluding it
      WARNING: symbol pfctlinput is not found in any library, excluding it
      WARNING: symbol __sputc is not found in any library, excluding it
      WARNING: symbol zopen is not found in any library, excluding it
      Cannot write class file org.unix.multi_h, cause: jdk.internal.clang.TypeLayoutError: InvalidFieldName. type: Type{ spelling=struct CURLMsg, kind=Record }, fieldName: whatever
      jdk.internal.clang.TypeLayoutError: InvalidFieldName. type: Type{ spelling=struct CURLMsg, kind=Record }, fieldName: whatever
      at jdk.internal.clang/jdk.internal.clang.Type.getOffsetOf(Type.java:58)
      at jdk.jextract/com.sun.tools.jextract.tree.RecordLayoutComputer.offsetOf(RecordLayoutComputer.java:133)
      at jdk.jextract/com.sun.tools.jextract.tree.RecordLayoutComputer.lambda$offsetOf$0(RecordLayoutComputer.java:136)
      at java.base/java.util.stream.ReferencePipeline$5$1.accept(ReferencePipeline.java:229)
      at java.base/java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:177)
      at java.base/java.util.ArrayList$ArrayListSpliterator.tryAdvance(ArrayList.java:1631)
      at java.base/java.util.stream.ReferencePipeline.forEachWithCancel(ReferencePipeline.java:127)
      at java.base/java.util.stream.AbstractPipeline.copyIntoWithCancel(AbstractPipeline.java:502)
      at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:488)
      at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:474)
      at java.base/java.util.stream.FindOps$FindOp.evaluateSequential(FindOps.java:150)
      at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
      at java.base/java.util.stream.LongPipeline.findFirst(LongPipeline.java:511)
      at jdk.jextract/com.sun.tools.jextract.tree.RecordLayoutComputer.offsetOf(RecordLayoutComputer.java:137)
      at jdk.jextract/com.sun.tools.jextract.tree.StructLayoutComputer.processField(StructLayoutComputer.java:61)
      at jdk.jextract/com.sun.tools.jextract.tree.RecordLayoutComputer.compute(RecordLayoutComputer.java:89)
      at jdk.jextract/com.sun.tools.jextract.tree.RecordLayoutComputer.compute(RecordLayoutComputer.java:66)
      at jdk.jextract/com.sun.tools.jextract.tree.LayoutUtils.getRecordLayout(LayoutUtils.java:201)
      at jdk.jextract/com.sun.tools.jextract.tree.StructTree.layout(StructTree.java:135)
      at jdk.jextract/com.sun.tools.jextract.JavaSourceFactory.visitStruct(JavaSourceFactory.java:272)
      at jdk.jextract/com.sun.tools.jextract.JavaSourceFactory.visitStruct(JavaSourceFactory.java:60)
      at jdk.jextract/com.sun.tools.jextract.tree.StructTree.accept(StructTree.java:102)
      at jdk.jextract/com.sun.tools.jextract.JavaSourceFactory.generateDecl(JavaSourceFactory.java:374)
      at java.base/java.util.ArrayList.forEach(ArrayList.java:1540)
      at jdk.jextract/com.sun.tools.jextract.JavaSourceFactory.generate(JavaSourceFactory.java:134)
      at jdk.jextract/com.sun.tools.jextract.JavaSourceFactoryExt.generate(JavaSourceFactoryExt.java:72)
      at jdk.jextract/com.sun.tools.jextract.JextractTool.generateHeader(JextractTool.java:88)
      at jdk.jextract/com.sun.tools.jextract.JextractTool.lambda$processHeaders$1(JextractTool.java:78)
      at java.base/java.util.HashMap.forEach(HashMap.java:1338)
      at jdk.jextract/com.sun.tools.jextract.JextractTool.processHeaders(JextractTool.java:78)
      at jdk.jextract/com.sun.tools.jextract.Main.runInternal(Main.java:298)
      at jdk.jextract/com.sun.tools.jextract.Main.run(Main.java:216)
      at jdk.jextract/com.sun.tools.jextract.Main.main(Main.java:356)
      Tree causing above exception is: CURLMsg
        ------------------------
        Cursor: CURLMsg
        Kind: StructDecl
        Location: /usr/include/curl/multi.h@95:8
        Is system header? false
        Is from main file? false
        == Type ==
        Type: struct CURLMsg
        Type Kind: Record
        Declared by cursor: CURLMsg of kind StructDecl
        Location: /usr/include/curl/multi.h@95:8
        Is system header? false
        Is from main file? false
        Declaring cursor is definition? true
        Size: 24 bytes
        Is this cursor definition? true

      Cannot write class file org.unix.curl_h, cause: jdk.internal.clang.TypeLayoutError: InvalidFieldName. type: Type{ spelling=struct curl_fileinfo, kind=Record }, fieldName: user
      jdk.internal.clang.TypeLayoutError: InvalidFieldName. type: Type{ spelling=struct curl_fileinfo, kind=Record }, fieldName: user
      at jdk.internal.clang/jdk.internal.clang.Type.getOffsetOf(Type.java:58)
      at jdk.jextract/com.sun.tools.jextract.tree.RecordLayoutComputer.offsetOf(RecordLayoutComputer.java:133)
      at jdk.jextract/com.sun.tools.jextract.tree.StructLayoutComputer.processField(StructLayoutComputer.java:61)
      at jdk.jextract/com.sun.tools.jextract.tree.RecordLayoutComputer.compute(RecordLayoutComputer.java:89)
      at jdk.jextract/com.sun.tools.jextract.tree.RecordLayoutComputer.compute(RecordLayoutComputer.java:66)
      at jdk.jextract/com.sun.tools.jextract.tree.RecordLayoutComputer.addFieldLayout(RecordLayoutComputer.java:104)
      at jdk.jextract/com.sun.tools.jextract.tree.StructLayoutComputer.processField(StructLayoutComputer.java:91)
      at jdk.jextract/com.sun.tools.jextract.tree.RecordLayoutComputer.compute(RecordLayoutComputer.java:89)
      at jdk.jextract/com.sun.tools.jextract.tree.RecordLayoutComputer.compute(RecordLayoutComputer.java:66)
      at jdk.jextract/com.sun.tools.jextract.tree.LayoutUtils.getRecordLayout(LayoutUtils.java:201)
      at jdk.jextract/com.sun.tools.jextract.tree.StructTree.layout(StructTree.java:135)
      at jdk.jextract/com.sun.tools.jextract.JavaSourceFactory.visitStruct(JavaSourceFactory.java:272)
      at jdk.jextract/com.sun.tools.jextract.JavaSourceFactory.visitStruct(JavaSourceFactory.java:60)
      at jdk.jextract/com.sun.tools.jextract.tree.StructTree.accept(StructTree.java:102)
      at jdk.jextract/com.sun.tools.jextract.JavaSourceFactory.generateDecl(JavaSourceFactory.java:374)
      at java.base/java.util.ArrayList.forEach(ArrayList.java:1540)
      at jdk.jextract/com.sun.tools.jextract.JavaSourceFactory.generate(JavaSourceFactory.java:134)
      at jdk.jextract/com.sun.tools.jextract.JavaSourceFactoryExt.generate(JavaSourceFactoryExt.java:72)
      at jdk.jextract/com.sun.tools.jextract.JextractTool.generateHeader(JextractTool.java:88)
      at jdk.jextract/com.sun.tools.jextract.JextractTool.lambda$processHeaders$1(JextractTool.java:78)
      at java.base/java.util.HashMap.forEach(HashMap.java:1338)
      at jdk.jextract/com.sun.tools.jextract.JextractTool.processHeaders(JextractTool.java:78)
      at jdk.jextract/com.sun.tools.jextract.Main.runInternal(Main.java:298)
      at jdk.jextract/com.sun.tools.jextract.Main.run(Main.java:216)
      at jdk.jextract/com.sun.tools.jextract.Main.main(Main.java:356)
      Tree causing above exception is: curl_fileinfo
        ------------------------
        Cursor: curl_fileinfo
        Kind: StructDecl
        Location: /usr/include/curl/curl.h@257:8
        Is system header? false
        Is from main file? true
        == Type ==
        Type: struct curl_fileinfo
        Type Kind: Record
        Declared by cursor: curl_fileinfo of kind StructDecl
        Location: /usr/include/curl/curl.h@257:8
        Is system header? false
        Is from main file? true
        Declaring cursor is definition? true
        Size: 128 bytes
        Is this cursor definition? true

      WARNING: class clang_support.builtin$_h.__va_list_tag definition is overwritten
      WARNING: class clang_support.builtin$_h.__va_list_tag definition is overwritten
      WARNING: class clang_support.builtin$_h.__va_list_tag definition is overwritten
      WARNING: class clang_support.builtin$_h.__va_list_tag definition is overwritten
      WARNING: class clang_support.builtin$_h.__va_list_tag definition is overwritten
      WARNING: class clang_support.builtin$_h.__va_list_tag definition is overwritten
      WARNING: class clang_support.builtin$_h.__va_list_tag definition is overwritten
      WARNING: class clang_support.builtin$_h.__va_list_tag definition is overwritten
      WARNING: class clang_support.builtin$_h.__va_list_tag definition is overwritten
      WARNING: class clang_support.builtin$_h.__va_list_tag definition is overwritten
      WARNING: class clang_support.builtin$_h.__va_list_tag definition is overwritten
      WARNING: class clang_support.builtin$_h.__va_list_tag definition is overwritten
      WARNING: class clang_support.builtin$_h.__va_list_tag definition is overwritten
      java.lang.RuntimeException: In memory compilation failed: /org/unix/multi_lib.java:107: error: cannot find symbol
          public static Pointer<org.unix.multi_h.CURLMsg> curl_multi_info_read(Pointer<?> multi_handle, Pointer<Integer> msgs_in_queue) {
                                                ^
        symbol: class CURLMsg
        location: interface multi_h
      /org/unix/multi_h.java:328: error: cannot find symbol
          public Pointer<org.unix.multi_h.CURLMsg> curl_multi_info_read(Pointer<?> multi_handle, Pointer<Integer> msgs_in_queue);
                                         ^
        symbol: class CURLMsg
        location: interface multi_h
      2 errors

      com.sun.tools.jextract.Main$FatalError: java.lang.RuntimeException: In memory compilation failed: /org/unix/multi_lib.java:107: error: cannot find symbol
          public static Pointer<org.unix.multi_h.CURLMsg> curl_multi_info_read(Pointer<?> multi_handle, Pointer<Integer> msgs_in_queue) {
                                                ^
        symbol: class CURLMsg
        location: interface multi_h
      /org/unix/multi_h.java:328: error: cannot find symbol
          public Pointer<org.unix.multi_h.CURLMsg> curl_multi_info_read(Pointer<?> multi_handle, Pointer<Integer> msgs_in_queue);
                                         ^
        symbol: class CURLMsg
        location: interface multi_h
      2 errors

      at jdk.jextract/com.sun.tools.jextract.Main.runInternal(Main.java:300)
      at jdk.jextract/com.sun.tools.jextract.Main.run(Main.java:216)
      at jdk.jextract/com.sun.tools.jextract.Main.main(Main.java:356)
      Caused by: java.lang.RuntimeException: In memory compilation failed: /org/unix/multi_lib.java:107: error: cannot find symbol
          public static Pointer<org.unix.multi_h.CURLMsg> curl_multi_info_read(Pointer<?> multi_handle, Pointer<Integer> msgs_in_queue) {
                                                ^
        symbol: class CURLMsg
        location: interface multi_h
      /org/unix/multi_h.java:328: error: cannot find symbol
          public Pointer<org.unix.multi_h.CURLMsg> curl_multi_info_read(Pointer<?> multi_handle, Pointer<Integer> msgs_in_queue);
                                         ^
        symbol: class CURLMsg
        location: interface multi_h
      2 errors

      at jdk.jextract/com.sun.tools.jextract.InMemoryJavaCompiler.compile(InMemoryJavaCompiler.java:59)
      at jdk.jextract/com.sun.tools.jextract.JextractTool.processHeaders(JextractTool.java:79)
      at jdk.jextract/com.sun.tools.jextract.Main.runInternal(Main.java:298)
      ... 2 more

            jvernee Jorn Vernee
            jlaskey Jim Laskey
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

              Created:
              Updated:
              Resolved: