Opened 9 years ago

Closed 9 years ago

#781 closed defect (fixed)

upad128_t botch in solarisx86 interfaces

Reported by: rme Owned by: gb
Priority: normal Milestone:
Component: Foreign Function Interface Version: trunk
Keywords: Cc:

Description

It appears the the interface translator screws up on the definition for upad128_t on Solaris:

From sys/types.h:

typedef union {
        long double     _q;
        uint32_t        _l[4];
} upad128_t;
Welcome to Clozure Common Lisp Version 1.7-dev-r14406M-trunk  (SolarisX8632)!
? (ccl::parse-foreign-type :upad128_t)
#<FOREIGN-RECORD-TYPE (:UNION NIL (:_Q :VOID 1100689282) (:UINT32_T??| :VOID 1897137590064188598475932852660936031226989270597071160670020756660204343176201224)) #x182A8186>

This may be causing indigestion when building ccl:level-1;x86-trap-support.lisp (see, for example, http://setf.clozure.com:8010/builders/solarisx86/builds/9/steps/shell_2/logs/stdio).

Oddly, building by hand often works...

Change History (2)

comment:1 Changed 9 years ago by gb

  • Owner set to gb
  • Status changed from new to assigned

I assume that this means that "long double" isn't really recognized as a primitive type somewhere, but that something somewhere thinks that it should be.

comment:2 Changed 9 years ago by gb

  • Resolution set to fixed
  • Status changed from assigned to closed

(In [14435]) Treat some intrinsic types (LONG-FLOAT, etc.) as if they were small foreign arrays. This isn't quite right - alignment constraints may differ and this doesn't really define those types in a usable way, but hopefully this fixes ticket:781.

Even though the structures FFI-STRUCT and FFI-UNION intentionally have the same layout, assuming this might lead to street crime, as some unsolicited typechecking helpfully pointed out ...

Note: See TracTickets for help on using tickets.