diff --git a/src/main/java/org/truffleruby/core/thread/ThreadManager.java b/src/main/java/org/truffleruby/core/thread/ThreadManager.java index d03c7d36e9bb..d6fe4a8125b8 100644 --- a/src/main/java/org/truffleruby/core/thread/ThreadManager.java +++ b/src/main/java/org/truffleruby/core/thread/ThreadManager.java @@ -430,7 +430,7 @@ public void initializeValuesForJavaThread(DynamicObject rubyThread, Thread threa } if (isRubyManagedThread(thread)) { - final long pThreadID = ((Number) pthread_self.call()).longValue(); + final Object pThreadID = pthread_self.call(); final int SIGVTALRM = jnr.constants.platform.Signal.SIGVTALRM.intValue(); blockingNativeCallUnblockingAction.set(() -> { diff --git a/src/main/java/org/truffleruby/platform/TruffleNFIPlatform.java b/src/main/java/org/truffleruby/platform/TruffleNFIPlatform.java index 1defa1ed56f7..3bed6ff27533 100644 --- a/src/main/java/org/truffleruby/platform/TruffleNFIPlatform.java +++ b/src/main/java/org/truffleruby/platform/TruffleNFIPlatform.java @@ -79,6 +79,9 @@ public long asPointer(TruffleObject function) { public String resolveType(NativePlatform nativePlatform, String type) { final Object typedef = nativePlatform.getRubiniusConfiguration().get("rbx.platform.typedef." + type); + if (typedef == null) { + throw new UnsupportedOperationException("Type " + type + " is not defined in the native configuration"); + } return toNFIType(StringOperations.getString((DynamicObject) typedef)); } diff --git a/src/main/java/org/truffleruby/platform/darwin/DarwinRubiniusConfiguration.java b/src/main/java/org/truffleruby/platform/darwin/DarwinRubiniusConfiguration.java index 1645615fcb01..f0ffdaf47ad6 100644 --- a/src/main/java/org/truffleruby/platform/darwin/DarwinRubiniusConfiguration.java +++ b/src/main/java/org/truffleruby/platform/darwin/DarwinRubiniusConfiguration.java @@ -44,7 +44,7 @@ public class DarwinRubiniusConfiguration extends DefaultRubiniusConfiguration { public static void load(RubiniusConfiguration configuration, RubyContext context) { - // Generated from tool/translate_rubinius_config.rb < ../rubinius/runtime/platform.conf + // Generated from tool/generate-native-config.rb on x86_64-darwin17 configuration.config("rbx.platform.addrinfo.sizeof", 48); configuration.config("rbx.platform.addrinfo.ai_flags.offset", 0); configuration.config("rbx.platform.addrinfo.ai_flags.size", 4); @@ -99,23 +99,6 @@ public static void load(RubiniusConfiguration configuration, RubyContext context configuration.config("rbx.platform.sockaddr.sa_family.offset", 1); configuration.config("rbx.platform.sockaddr.sa_family.size", 1); configuration.config("rbx.platform.sockaddr.sa_family.type", string(context, "sa_family_t")); - configuration.config("rbx.platform.dirent.sizeof", 1048); - configuration.config("rbx.platform.dirent.d_ino.offset", 0); - configuration.config("rbx.platform.dirent.d_ino.size", 8); - configuration.config("rbx.platform.dirent.d_ino.type", string(context, "ino_t")); - configuration.config("rbx.platform.dirent.d_reclen.offset", 16); - configuration.config("rbx.platform.dirent.d_reclen.size", 2); - configuration.config("rbx.platform.dirent.d_reclen.type", string(context, "ushort")); - configuration.config("rbx.platform.dirent.d_name.offset", 21); - configuration.config("rbx.platform.dirent.d_name.size", 1024); - configuration.config("rbx.platform.dirent.d_name.type", string(context, "char_array")); - configuration.config("rbx.platform.timeval.sizeof", 16); - configuration.config("rbx.platform.timeval.tv_sec.offset", 0); - configuration.config("rbx.platform.timeval.tv_sec.size", 8); - configuration.config("rbx.platform.timeval.tv_sec.type", string(context, "time_t")); - configuration.config("rbx.platform.timeval.tv_usec.offset", 8); - configuration.config("rbx.platform.timeval.tv_usec.size", 4); - configuration.config("rbx.platform.timeval.tv_usec.type", string(context, "suseconds_t")); configuration.config("rbx.platform.sockaddr_in.sizeof", 16); configuration.config("rbx.platform.sockaddr_in.sin_family.offset", 1); configuration.config("rbx.platform.sockaddr_in.sin_family.size", 1); @@ -168,8 +151,10 @@ public static void load(RubiniusConfiguration configuration, RubyContext context configuration.config("rbx.platform.linger.sizeof", 8); configuration.config("rbx.platform.linger.l_onoff.offset", 0); configuration.config("rbx.platform.linger.l_onoff.size", 4); + configuration.config("rbx.platform.linger.l_onoff.type", string(context, "int")); configuration.config("rbx.platform.linger.l_linger.offset", 4); configuration.config("rbx.platform.linger.l_linger.size", 4); + configuration.config("rbx.platform.linger.l_linger.type", string(context, "int")); configuration.config("rbx.platform.iovec.sizeof", 16); configuration.config("rbx.platform.iovec.iov_base.offset", 0); configuration.config("rbx.platform.iovec.iov_base.size", 8); @@ -212,51 +197,13 @@ public static void load(RubiniusConfiguration configuration, RubyContext context configuration.config("rbx.platform.servent.s_proto.offset", 24); configuration.config("rbx.platform.servent.s_proto.size", 8); configuration.config("rbx.platform.servent.s_proto.type", string(context, "pointer")); - configuration.config("rbx.platform.stat.sizeof", 144); - configuration.config("rbx.platform.stat.st_dev.offset", 0); - configuration.config("rbx.platform.stat.st_dev.size", 4); - configuration.config("rbx.platform.stat.st_dev.type", string(context, "dev_t")); - configuration.config("rbx.platform.stat.st_ino.offset", 8); - configuration.config("rbx.platform.stat.st_ino.size", 8); - configuration.config("rbx.platform.stat.st_ino.type", string(context, "ino_t")); - configuration.config("rbx.platform.stat.st_mode.offset", 4); - configuration.config("rbx.platform.stat.st_mode.size", 2); - configuration.config("rbx.platform.stat.st_mode.type", string(context, "mode_t")); - configuration.config("rbx.platform.stat.st_nlink.offset", 6); - configuration.config("rbx.platform.stat.st_nlink.size", 2); - configuration.config("rbx.platform.stat.st_nlink.type", string(context, "nlink_t")); - configuration.config("rbx.platform.stat.st_uid.offset", 16); - configuration.config("rbx.platform.stat.st_uid.size", 4); - configuration.config("rbx.platform.stat.st_uid.type", string(context, "uid_t")); - configuration.config("rbx.platform.stat.st_gid.offset", 20); - configuration.config("rbx.platform.stat.st_gid.size", 4); - configuration.config("rbx.platform.stat.st_gid.type", string(context, "gid_t")); - configuration.config("rbx.platform.stat.st_rdev.offset", 24); - configuration.config("rbx.platform.stat.st_rdev.size", 4); - configuration.config("rbx.platform.stat.st_rdev.type", string(context, "dev_t")); - configuration.config("rbx.platform.stat.st_size.offset", 96); - configuration.config("rbx.platform.stat.st_size.size", 8); - configuration.config("rbx.platform.stat.st_size.type", string(context, "off_t")); - configuration.config("rbx.platform.stat.st_blksize.offset", 112); - configuration.config("rbx.platform.stat.st_blksize.size", 4); - configuration.config("rbx.platform.stat.st_blocks.offset", 104); - configuration.config("rbx.platform.stat.st_blocks.size", 8); - configuration.config("rbx.platform.stat.st_atime.offset", 32); - configuration.config("rbx.platform.stat.st_atime.size", 8); - configuration.config("rbx.platform.stat.st_atime.type", string(context, "time_t")); - configuration.config("rbx.platform.stat.st_mtime.offset", 48); - configuration.config("rbx.platform.stat.st_mtime.size", 8); - configuration.config("rbx.platform.stat.st_mtime.type", string(context, "time_t")); - configuration.config("rbx.platform.stat.st_ctime.offset", 64); - configuration.config("rbx.platform.stat.st_ctime.size", 8); - configuration.config("rbx.platform.stat.st_ctime.type", string(context, "time_t")); - configuration.config("rbx.platform.rlimit.sizeof", 16); - configuration.config("rbx.platform.rlimit.rlim_cur.offset", 0); - configuration.config("rbx.platform.rlimit.rlim_cur.size", 8); - configuration.config("rbx.platform.rlimit.rlim_cur.type", string(context, "rlim_t")); - configuration.config("rbx.platform.rlimit.rlim_max.offset", 8); - configuration.config("rbx.platform.rlimit.rlim_max.size", 8); - configuration.config("rbx.platform.rlimit.rlim_max.type", string(context, "rlim_t")); + configuration.config("rbx.platform.file.FNM_CASEFOLD", 16); + configuration.config("rbx.platform.file.FNM_NOESCAPE", 1); + configuration.config("rbx.platform.file.FNM_PATHNAME", 2); + configuration.config("rbx.platform.file.LOCK_SH", 1); + configuration.config("rbx.platform.file.LOCK_EX", 2); + configuration.config("rbx.platform.file.LOCK_NB", 4); + configuration.config("rbx.platform.file.LOCK_UN", 8); configuration.config("rbx.platform.file.O_RDONLY", 0); configuration.config("rbx.platform.file.O_WRONLY", 1); configuration.config("rbx.platform.file.O_RDWR", 2); @@ -266,6 +213,7 @@ public static void load(RubiniusConfiguration configuration, RubyContext context configuration.config("rbx.platform.file.O_TRUNC", 1024); configuration.config("rbx.platform.file.O_APPEND", 8); configuration.config("rbx.platform.file.O_NONBLOCK", 4); + configuration.config("rbx.platform.file.O_NDELAY", 4); configuration.config("rbx.platform.file.O_SYNC", 128); configuration.config("rbx.platform.file.S_IRUSR", 256); configuration.config("rbx.platform.file.S_IWUSR", 128); @@ -298,18 +246,28 @@ public static void load(RubiniusConfiguration configuration, RubyContext context configuration.config("rbx.platform.fcntl.F_SETFD", 2); configuration.config("rbx.platform.fcntl.FD_CLOEXEC", 1); configuration.config("rbx.platform.socket.AF_APPLETALK", 16); - configuration.config("rbx.platform.socket.AF_AX25", 0); + configuration.config("rbx.platform.socket.PF_APPLETALK", 16); configuration.config("rbx.platform.socket.AF_INET", 2); + configuration.config("rbx.platform.socket.PF_INET", 2); configuration.config("rbx.platform.socket.AF_INET6", 30); + configuration.config("rbx.platform.socket.PF_INET6", 30); configuration.config("rbx.platform.socket.AF_IPX", 23); + configuration.config("rbx.platform.socket.PF_IPX", 23); configuration.config("rbx.platform.socket.AF_ISDN", 28); + configuration.config("rbx.platform.socket.PF_ISDN", 28); configuration.config("rbx.platform.socket.AF_LOCAL", 1); + configuration.config("rbx.platform.socket.PF_LOCAL", 1); configuration.config("rbx.platform.socket.AF_MAX", 40); - configuration.config("rbx.platform.socket.AF_PACKET", 0); + configuration.config("rbx.platform.socket.PF_MAX", 40); configuration.config("rbx.platform.socket.AF_ROUTE", 17); + configuration.config("rbx.platform.socket.PF_ROUTE", 17); configuration.config("rbx.platform.socket.AF_SNA", 11); + configuration.config("rbx.platform.socket.PF_SNA", 11); configuration.config("rbx.platform.socket.AF_UNIX", 1); + configuration.config("rbx.platform.socket.PF_UNIX", 1); configuration.config("rbx.platform.socket.AF_UNSPEC", 0); + configuration.config("rbx.platform.socket.PF_UNSPEC", 0); + configuration.config("rbx.platform.socket.PF_KEY", 29); configuration.config("rbx.platform.socket.AI_ADDRCONFIG", 1024); configuration.config("rbx.platform.socket.AI_ALL", 256); configuration.config("rbx.platform.socket.AI_CANONNAME", 2); @@ -329,27 +287,16 @@ public static void load(RubiniusConfiguration configuration, RubyContext context configuration.config("rbx.platform.socket.EAI_SERVICE", 9); configuration.config("rbx.platform.socket.EAI_SOCKTYPE", 10); configuration.config("rbx.platform.socket.EAI_SYSTEM", 11); - configuration.config("rbx.platform.socket.FNM_CASEFOLD", 0); - configuration.config("rbx.platform.socket.FNM_DOTMATCH", 0); - configuration.config("rbx.platform.socket.FNM_EXTGLOB", 0); - configuration.config("rbx.platform.socket.FNM_NOESCAPE", 0); - configuration.config("rbx.platform.socket.FNM_PATHNAME", 0); - configuration.config("rbx.platform.socket.FNM_SYSCASE", 0); configuration.config("rbx.platform.socket.IFF_ALLMULTI", 512); - configuration.config("rbx.platform.socket.IFF_AUTOMEDIA", 0); configuration.config("rbx.platform.socket.IFF_BROADCAST", 2); configuration.config("rbx.platform.socket.IFF_DEBUG", 4); - configuration.config("rbx.platform.socket.IFF_DYNAMIC", 0); configuration.config("rbx.platform.socket.IFF_LOOPBACK", 8); - configuration.config("rbx.platform.socket.IFF_MASTER", 0); configuration.config("rbx.platform.socket.IFF_MULTICAST", 32768); configuration.config("rbx.platform.socket.IFF_NOARP", 128); configuration.config("rbx.platform.socket.IFF_NOTRAILERS", 32); configuration.config("rbx.platform.socket.IFF_POINTOPOINT", 16); - configuration.config("rbx.platform.socket.IFF_PORTSEL", 0); configuration.config("rbx.platform.socket.IFF_PROMISC", 256); configuration.config("rbx.platform.socket.IFF_RUNNING", 64); - configuration.config("rbx.platform.socket.IFF_SLAVE", 0); configuration.config("rbx.platform.socket.IFF_UP", 1); configuration.config("rbx.platform.socket.IF_NAMESIZE", 16); configuration.config("rbx.platform.socket.INADDR_ALLHOSTS_GROUP", 3758096385L); @@ -383,27 +330,12 @@ public static void load(RubiniusConfiguration configuration, RubyContext context configuration.config("rbx.platform.socket.IPPROTO_TP", 29); configuration.config("rbx.platform.socket.IPPROTO_UDP", 17); configuration.config("rbx.platform.socket.IPV6_CHECKSUM", 26); - configuration.config("rbx.platform.socket.IPV6_DONTFRAG", 0); - configuration.config("rbx.platform.socket.IPV6_DSTOPTS", 0); - configuration.config("rbx.platform.socket.IPV6_HOPLIMIT", 0); - configuration.config("rbx.platform.socket.IPV6_HOPOPTS", 0); configuration.config("rbx.platform.socket.IPV6_JOIN_GROUP", 12); configuration.config("rbx.platform.socket.IPV6_LEAVE_GROUP", 13); configuration.config("rbx.platform.socket.IPV6_MULTICAST_HOPS", 10); configuration.config("rbx.platform.socket.IPV6_MULTICAST_IF", 9); configuration.config("rbx.platform.socket.IPV6_MULTICAST_LOOP", 11); - configuration.config("rbx.platform.socket.IPV6_NEXTHOP", 0); - configuration.config("rbx.platform.socket.IPV6_PATHMTU", 0); - configuration.config("rbx.platform.socket.IPV6_PKTINFO", 0); - configuration.config("rbx.platform.socket.IPV6_RECVDSTOPTS", 0); - configuration.config("rbx.platform.socket.IPV6_RECVHOPLIMIT", 0); - configuration.config("rbx.platform.socket.IPV6_RECVHOPOPTS", 0); - configuration.config("rbx.platform.socket.IPV6_RECVPATHMTU", 0); - configuration.config("rbx.platform.socket.IPV6_RECVPKTINFO", 0); - configuration.config("rbx.platform.socket.IPV6_RECVRTHDR", 0); configuration.config("rbx.platform.socket.IPV6_RECVTCLASS", 35); - configuration.config("rbx.platform.socket.IPV6_RTHDR", 0); - configuration.config("rbx.platform.socket.IPV6_RTHDRDSTOPTS", 0); configuration.config("rbx.platform.socket.IPV6_RTHDR_TYPE_0", 0); configuration.config("rbx.platform.socket.IPV6_TCLASS", 36); configuration.config("rbx.platform.socket.IPV6_UNICAST_HOPS", 4); @@ -415,40 +347,23 @@ public static void load(RubiniusConfiguration configuration, RubyContext context configuration.config("rbx.platform.socket.IP_DEFAULT_MULTICAST_TTL", 1); configuration.config("rbx.platform.socket.IP_DROP_MEMBERSHIP", 13); configuration.config("rbx.platform.socket.IP_DROP_SOURCE_MEMBERSHIP", 71); - configuration.config("rbx.platform.socket.IP_FREEBIND", 0); configuration.config("rbx.platform.socket.IP_HDRINCL", 2); configuration.config("rbx.platform.socket.IP_IPSEC_POLICY", 21); configuration.config("rbx.platform.socket.IP_MAX_MEMBERSHIPS", 4095); - configuration.config("rbx.platform.socket.IP_MINTTL", 0); configuration.config("rbx.platform.socket.IP_MSFILTER", 74); - configuration.config("rbx.platform.socket.IP_MTU", 0); - configuration.config("rbx.platform.socket.IP_MTU_DISCOVER", 0); configuration.config("rbx.platform.socket.IP_MULTICAST_IF", 9); configuration.config("rbx.platform.socket.IP_MULTICAST_LOOP", 11); configuration.config("rbx.platform.socket.IP_MULTICAST_TTL", 10); configuration.config("rbx.platform.socket.IP_OPTIONS", 1); - configuration.config("rbx.platform.socket.IP_PASSSEC", 0); configuration.config("rbx.platform.socket.IP_PKTINFO", 26); - configuration.config("rbx.platform.socket.IP_PKTOPTIONS", 0); - configuration.config("rbx.platform.socket.IP_PMTUDISC_DO", 0); - configuration.config("rbx.platform.socket.IP_PMTUDISC_DONT", 0); - configuration.config("rbx.platform.socket.IP_PMTUDISC_WANT", 0); - configuration.config("rbx.platform.socket.IP_RECVERR", 0); configuration.config("rbx.platform.socket.IP_RECVOPTS", 5); configuration.config("rbx.platform.socket.IP_RECVRETOPTS", 6); - configuration.config("rbx.platform.socket.IP_RECVTOS", 0); + configuration.config("rbx.platform.socket.IP_RECVTOS", 27); configuration.config("rbx.platform.socket.IP_RECVTTL", 24); configuration.config("rbx.platform.socket.IP_RETOPTS", 8); - configuration.config("rbx.platform.socket.IP_ROUTER_ALERT", 0); configuration.config("rbx.platform.socket.IP_TOS", 3); - configuration.config("rbx.platform.socket.IP_TRANSPARENT", 0); configuration.config("rbx.platform.socket.IP_TTL", 4); configuration.config("rbx.platform.socket.IP_UNBLOCK_SOURCE", 73); - configuration.config("rbx.platform.socket.IP_XFRM_POLICY", 0); - configuration.config("rbx.platform.socket.LOCK_EX", 0); - configuration.config("rbx.platform.socket.LOCK_NB", 0); - configuration.config("rbx.platform.socket.LOCK_SH", 0); - configuration.config("rbx.platform.socket.LOCK_UN", 0); configuration.config("rbx.platform.socket.MCAST_BLOCK_SOURCE", 84); configuration.config("rbx.platform.socket.MCAST_EXCLUDE", 2); configuration.config("rbx.platform.socket.MCAST_INCLUDE", 1); @@ -456,23 +371,13 @@ public static void load(RubiniusConfiguration configuration, RubyContext context configuration.config("rbx.platform.socket.MCAST_JOIN_SOURCE_GROUP", 82); configuration.config("rbx.platform.socket.MCAST_LEAVE_GROUP", 81); configuration.config("rbx.platform.socket.MCAST_LEAVE_SOURCE_GROUP", 83); - configuration.config("rbx.platform.socket.MCAST_MSFILTER", 0); configuration.config("rbx.platform.socket.MCAST_UNBLOCK_SOURCE", 85); - configuration.config("rbx.platform.socket.MSG_CONFIRM", 0); configuration.config("rbx.platform.socket.MSG_CTRUNC", 32); configuration.config("rbx.platform.socket.MSG_DONTROUTE", 4); configuration.config("rbx.platform.socket.MSG_DONTWAIT", 128); configuration.config("rbx.platform.socket.MSG_EOR", 8); - configuration.config("rbx.platform.socket.MSG_ERRQUEUE", 0); - configuration.config("rbx.platform.socket.MSG_FASTOPEN", 0); - configuration.config("rbx.platform.socket.MSG_FIN", 0); - configuration.config("rbx.platform.socket.MSG_MORE", 0); - configuration.config("rbx.platform.socket.MSG_NOSIGNAL", 0); configuration.config("rbx.platform.socket.MSG_OOB", 1); configuration.config("rbx.platform.socket.MSG_PEEK", 2); - configuration.config("rbx.platform.socket.MSG_PROXY", 0); - configuration.config("rbx.platform.socket.MSG_RST", 0); - configuration.config("rbx.platform.socket.MSG_SYN", 0); configuration.config("rbx.platform.socket.MSG_TRUNC", 16); configuration.config("rbx.platform.socket.MSG_WAITALL", 64); configuration.config("rbx.platform.socket.NI_DGRAM", 16); @@ -482,117 +387,43 @@ public static void load(RubiniusConfiguration configuration, RubyContext context configuration.config("rbx.platform.socket.NI_NOFQDN", 1); configuration.config("rbx.platform.socket.NI_NUMERICHOST", 2); configuration.config("rbx.platform.socket.NI_NUMERICSERV", 8); - configuration.config("rbx.platform.socket.PF_APPLETALK", 16); - configuration.config("rbx.platform.socket.PF_AX25", 0); - configuration.config("rbx.platform.socket.PF_INET", 2); - configuration.config("rbx.platform.socket.PF_INET6", 30); - configuration.config("rbx.platform.socket.PF_IPX", 23); - configuration.config("rbx.platform.socket.PF_ISDN", 28); - configuration.config("rbx.platform.socket.PF_KEY", 29); - configuration.config("rbx.platform.socket.PF_LOCAL", 1); - configuration.config("rbx.platform.socket.PF_MAX", 40); - configuration.config("rbx.platform.socket.PF_PACKET", 0); - configuration.config("rbx.platform.socket.PF_ROUTE", 17); - configuration.config("rbx.platform.socket.PF_SNA", 11); - configuration.config("rbx.platform.socket.PF_UNIX", 1); - configuration.config("rbx.platform.socket.PF_UNSPEC", 0); - configuration.config("rbx.platform.socket.SCM_CREDENTIALS", 0); configuration.config("rbx.platform.socket.SCM_RIGHTS", 1); configuration.config("rbx.platform.socket.SCM_TIMESTAMP", 2); - configuration.config("rbx.platform.socket.SCM_TIMESTAMPING", 0); - configuration.config("rbx.platform.socket.SCM_TIMESTAMPNS", 0); - configuration.config("rbx.platform.socket.SCM_WIFI_STATUS", 0); configuration.config("rbx.platform.socket.SEEK_CUR", 1); - configuration.config("rbx.platform.socket.SEEK_DATA", 0); configuration.config("rbx.platform.socket.SEEK_END", 2); - configuration.config("rbx.platform.socket.SEEK_HOLE", 0); configuration.config("rbx.platform.socket.SEEK_SET", 0); configuration.config("rbx.platform.socket.SHUT_RD", 0); configuration.config("rbx.platform.socket.SHUT_RDWR", 2); configuration.config("rbx.platform.socket.SHUT_WR", 1); configuration.config("rbx.platform.socket.SOCK_DGRAM", 2); - configuration.config("rbx.platform.socket.SOCK_PACKET", 0); configuration.config("rbx.platform.socket.SOCK_RAW", 3); configuration.config("rbx.platform.socket.SOCK_RDM", 4); configuration.config("rbx.platform.socket.SOCK_SEQPACKET", 5); configuration.config("rbx.platform.socket.SOCK_STREAM", 1); - configuration.config("rbx.platform.socket.SOL_IP", 0); configuration.config("rbx.platform.socket.SOL_SOCKET", 65535); - configuration.config("rbx.platform.socket.SOL_TCP", 0); - configuration.config("rbx.platform.socket.SOL_UDP", 0); configuration.config("rbx.platform.socket.SO_ACCEPTCONN", 2); - configuration.config("rbx.platform.socket.SO_ATTACH_FILTER", 0); - configuration.config("rbx.platform.socket.SO_BINDTODEVICE", 0); - configuration.config("rbx.platform.socket.SO_BPF_EXTENSIONS", 0); configuration.config("rbx.platform.socket.SO_BROADCAST", 32); - configuration.config("rbx.platform.socket.SO_BUSY_POLL", 0); configuration.config("rbx.platform.socket.SO_DEBUG", 1); - configuration.config("rbx.platform.socket.SO_DETACH_FILTER", 0); - configuration.config("rbx.platform.socket.SO_DOMAIN", 0); configuration.config("rbx.platform.socket.SO_DONTROUTE", 16); configuration.config("rbx.platform.socket.SO_ERROR", 4103); - configuration.config("rbx.platform.socket.SO_GET_FILTER", 0); configuration.config("rbx.platform.socket.SO_KEEPALIVE", 8); configuration.config("rbx.platform.socket.SO_LINGER", 128); - configuration.config("rbx.platform.socket.SO_LOCK_FILTER", 0); - configuration.config("rbx.platform.socket.SO_MARK", 0); - configuration.config("rbx.platform.socket.SO_MAX_PACING_RATE", 0); - configuration.config("rbx.platform.socket.SO_NOFCS", 0); - configuration.config("rbx.platform.socket.SO_NO_CHECK", 0); configuration.config("rbx.platform.socket.SO_OOBINLINE", 256); - configuration.config("rbx.platform.socket.SO_PASSCRED", 0); - configuration.config("rbx.platform.socket.SO_PASSSEC", 0); - configuration.config("rbx.platform.socket.SO_PEEK_OFF", 0); - configuration.config("rbx.platform.socket.SO_PEERCRED", 0); - configuration.config("rbx.platform.socket.SO_PEERNAME", 0); - configuration.config("rbx.platform.socket.SO_PEERSEC", 0); - configuration.config("rbx.platform.socket.SO_PRIORITY", 0); - configuration.config("rbx.platform.socket.SO_PROTOCOL", 0); configuration.config("rbx.platform.socket.SO_RCVBUF", 4098); - configuration.config("rbx.platform.socket.SO_RCVBUFFORCE", 0); configuration.config("rbx.platform.socket.SO_RCVLOWAT", 4100); configuration.config("rbx.platform.socket.SO_RCVTIMEO", 4102); configuration.config("rbx.platform.socket.SO_REUSEADDR", 4); configuration.config("rbx.platform.socket.SO_REUSEPORT", 512); - configuration.config("rbx.platform.socket.SO_RXQ_OVFL", 0); - configuration.config("rbx.platform.socket.SO_SECURITY_AUTHENTICATION", 0); - configuration.config("rbx.platform.socket.SO_SECURITY_ENCRYPTION_NETWORK", 0); - configuration.config("rbx.platform.socket.SO_SECURITY_ENCRYPTION_TRANSPORT", 0); - configuration.config("rbx.platform.socket.SO_SELECT_ERR_QUEUE", 0); configuration.config("rbx.platform.socket.SO_SNDBUF", 4097); - configuration.config("rbx.platform.socket.SO_SNDBUFFORCE", 0); configuration.config("rbx.platform.socket.SO_SNDLOWAT", 4099); configuration.config("rbx.platform.socket.SO_SNDTIMEO", 4101); configuration.config("rbx.platform.socket.SO_TIMESTAMP", 1024); - configuration.config("rbx.platform.socket.SO_TIMESTAMPING", 0); - configuration.config("rbx.platform.socket.SO_TIMESTAMPNS", 0); configuration.config("rbx.platform.socket.SO_TYPE", 4104); - configuration.config("rbx.platform.socket.SO_WIFI_STATUS", 0); - configuration.config("rbx.platform.socket.TCP_CONGESTION", 0); - configuration.config("rbx.platform.socket.TCP_COOKIE_TRANSACTIONS", 0); - configuration.config("rbx.platform.socket.TCP_CORK", 0); - configuration.config("rbx.platform.socket.TCP_DEFER_ACCEPT", 0); configuration.config("rbx.platform.socket.TCP_FASTOPEN", 261); - configuration.config("rbx.platform.socket.TCP_INFO", 0); configuration.config("rbx.platform.socket.TCP_KEEPCNT", 258); - configuration.config("rbx.platform.socket.TCP_KEEPIDLE", 0); configuration.config("rbx.platform.socket.TCP_KEEPINTVL", 257); - configuration.config("rbx.platform.socket.TCP_LINGER2", 0); configuration.config("rbx.platform.socket.TCP_MAXSEG", 2); - configuration.config("rbx.platform.socket.TCP_MD5SIG", 0); configuration.config("rbx.platform.socket.TCP_NODELAY", 1); - configuration.config("rbx.platform.socket.TCP_QUEUE_SEQ", 0); - configuration.config("rbx.platform.socket.TCP_QUICKACK", 0); - configuration.config("rbx.platform.socket.TCP_REPAIR", 0); - configuration.config("rbx.platform.socket.TCP_REPAIR_OPTIONS", 0); - configuration.config("rbx.platform.socket.TCP_REPAIR_QUEUE", 0); - configuration.config("rbx.platform.socket.TCP_SYNCNT", 0); - configuration.config("rbx.platform.socket.TCP_THIN_DUPACK", 0); - configuration.config("rbx.platform.socket.TCP_THIN_LINEAR_TIMEOUTS", 0); - configuration.config("rbx.platform.socket.TCP_TIMESTAMP", 0); - configuration.config("rbx.platform.socket.TCP_USER_TIMEOUT", 0); - configuration.config("rbx.platform.socket.TCP_WINDOW_CLAMP", 0); - configuration.config("rbx.platform.socket.UDP_CORK", 0); configuration.config("rbx.platform.socket.SOMAXCONN", 128); configuration.config("rbx.platform.process.EXIT_SUCCESS", 0); configuration.config("rbx.platform.process.EXIT_FAILURE", 1); @@ -611,12 +442,6 @@ public static void load(RubiniusConfiguration configuration, RubyContext context configuration.config("rbx.platform.process.RLIMIT_NOFILE", 8); configuration.config("rbx.platform.process.RLIMIT_MEMLOCK", 6); configuration.config("rbx.platform.process.RLIMIT_AS", 5); - configuration.config("rbx.platform.process.RLIMIT_SBSIZE", 0); - configuration.config("rbx.platform.process.RLIMIT_RTPRIO", 0); - configuration.config("rbx.platform.process.RLIMIT_RTTIME", 0); - configuration.config("rbx.platform.process.RLIMIT_SIGPENDING", 0); - configuration.config("rbx.platform.process.RLIMIT_MSGQUEUE", 0); - configuration.config("rbx.platform.process.RLIMIT_NICE", 0); configuration.config("rbx.platform.process.RLIM_INFINITY", 9223372036854775807L); configuration.config("rbx.platform.process.RLIM_SAVED_MAX", 9223372036854775807L); configuration.config("rbx.platform.process.RLIM_SAVED_CUR", 9223372036854775807L); @@ -641,7 +466,6 @@ public static void load(RubiniusConfiguration configuration, RubyContext context configuration.config("rbx.platform.signal.SIGTSTP", 18); configuration.config("rbx.platform.signal.SIGCONT", 19); configuration.config("rbx.platform.signal.SIGCHLD", 20); - configuration.config("rbx.platform.signal.SIGCLD", 0); configuration.config("rbx.platform.signal.SIGTTIN", 21); configuration.config("rbx.platform.signal.SIGTTOU", 22); configuration.config("rbx.platform.signal.SIGIO", 23); @@ -652,18 +476,7 @@ public static void load(RubiniusConfiguration configuration, RubyContext context configuration.config("rbx.platform.signal.SIGWINCH", 28); configuration.config("rbx.platform.signal.SIGUSR1", 30); configuration.config("rbx.platform.signal.SIGUSR2", 31); - configuration.config("rbx.platform.signal.SIGLOST", 0); - configuration.config("rbx.platform.signal.SIGMSG", 0); - configuration.config("rbx.platform.signal.SIGPWR", 0); - configuration.config("rbx.platform.signal.SIGPOLL", 0); - configuration.config("rbx.platform.signal.SIGDANGER", 0); - configuration.config("rbx.platform.signal.SIGMIGRATE", 0); - configuration.config("rbx.platform.signal.SIGPRE", 0); - configuration.config("rbx.platform.signal.SIGGRANT", 0); - configuration.config("rbx.platform.signal.SIGRETRACT", 0); - configuration.config("rbx.platform.signal.SIGSOUND", 0); configuration.config("rbx.platform.signal.SIGINFO", 29); - configuration.config("rbx.platform.zlib.ZLIB_VERSION", string(context, "1.2.5")); configuration.config("rbx.platform.dlopen.RTLD_LAZY", 1); configuration.config("rbx.platform.dlopen.RTLD_NOW", 2); configuration.config("rbx.platform.dlopen.RTLD_LOCAL", 4); @@ -692,54 +505,12 @@ public static void load(RubiniusConfiguration configuration, RubyContext context configuration.config("rbx.platform.typedef.uint_fast16_t", string(context, "ushort")); configuration.config("rbx.platform.typedef.uint_fast32_t", string(context, "uint")); configuration.config("rbx.platform.typedef.uint_fast64_t", string(context, "ulong_long")); - configuration.config("rbx.platform.typedef.__int8_t", string(context, "char")); - configuration.config("rbx.platform.typedef.__uint8_t", string(context, "uchar")); - configuration.config("rbx.platform.typedef.__int16_t", string(context, "short")); - configuration.config("rbx.platform.typedef.__uint16_t", string(context, "ushort")); - configuration.config("rbx.platform.typedef.__int32_t", string(context, "int")); - configuration.config("rbx.platform.typedef.__uint32_t", string(context, "uint")); - configuration.config("rbx.platform.typedef.__int64_t", string(context, "long_long")); - configuration.config("rbx.platform.typedef.__uint64_t", string(context, "ulong_long")); - configuration.config("rbx.platform.typedef.__darwin_intptr_t", string(context, "long")); - configuration.config("rbx.platform.typedef.__darwin_natural_t", string(context, "uint")); - configuration.config("rbx.platform.typedef.__darwin_ct_rune_t", string(context, "int")); - configuration.config("rbx.platform.typedef.__darwin_ptrdiff_t", string(context, "long")); - configuration.config("rbx.platform.typedef.__darwin_size_t", string(context, "ulong")); - configuration.config("rbx.platform.typedef.__darwin_wchar_t", string(context, "int")); - configuration.config("rbx.platform.typedef.__darwin_rune_t", string(context, "int")); - configuration.config("rbx.platform.typedef.__darwin_wint_t", string(context, "int")); - configuration.config("rbx.platform.typedef.__darwin_clock_t", string(context, "ulong")); - configuration.config("rbx.platform.typedef.__darwin_socklen_t", string(context, "uint")); - configuration.config("rbx.platform.typedef.__darwin_ssize_t", string(context, "long")); - configuration.config("rbx.platform.typedef.__darwin_time_t", string(context, "long")); - configuration.config("rbx.platform.typedef.__darwin_blkcnt_t", string(context, "long_long")); - configuration.config("rbx.platform.typedef.__darwin_blksize_t", string(context, "int")); - configuration.config("rbx.platform.typedef.__darwin_dev_t", string(context, "int")); - configuration.config("rbx.platform.typedef.__darwin_fsblkcnt_t", string(context, "uint")); - configuration.config("rbx.platform.typedef.__darwin_fsfilcnt_t", string(context, "uint")); - configuration.config("rbx.platform.typedef.__darwin_gid_t", string(context, "uint")); - configuration.config("rbx.platform.typedef.__darwin_id_t", string(context, "uint")); - configuration.config("rbx.platform.typedef.__darwin_ino64_t", string(context, "ulong_long")); - configuration.config("rbx.platform.typedef.__darwin_ino_t", string(context, "ulong_long")); - configuration.config("rbx.platform.typedef.__darwin_mach_port_name_t", string(context, "uint")); - configuration.config("rbx.platform.typedef.__darwin_mach_port_t", string(context, "uint")); - configuration.config("rbx.platform.typedef.__darwin_mode_t", string(context, "ushort")); - configuration.config("rbx.platform.typedef.__darwin_off_t", string(context, "long_long")); - configuration.config("rbx.platform.typedef.__darwin_pid_t", string(context, "int")); - configuration.config("rbx.platform.typedef.__darwin_sigset_t", string(context, "uint")); - configuration.config("rbx.platform.typedef.__darwin_suseconds_t", string(context, "int")); - configuration.config("rbx.platform.typedef.__darwin_uid_t", string(context, "uint")); - configuration.config("rbx.platform.typedef.__darwin_useconds_t", string(context, "uint")); - configuration.config("rbx.platform.typedef.__darwin_pthread_key_t", string(context, "ulong")); - configuration.config("rbx.platform.typedef.intptr_t", string(context, "long")); - configuration.config("rbx.platform.typedef.uintptr_t", string(context, "ulong")); - configuration.config("rbx.platform.typedef.intmax_t", string(context, "long")); - configuration.config("rbx.platform.typedef.uintmax_t", string(context, "ulong")); configuration.config("rbx.platform.typedef.u_int8_t", string(context, "uchar")); configuration.config("rbx.platform.typedef.u_int16_t", string(context, "ushort")); configuration.config("rbx.platform.typedef.u_int32_t", string(context, "uint")); configuration.config("rbx.platform.typedef.u_int64_t", string(context, "ulong_long")); configuration.config("rbx.platform.typedef.register_t", string(context, "long_long")); + configuration.config("rbx.platform.typedef.uintptr_t", string(context, "ulong")); configuration.config("rbx.platform.typedef.user_addr_t", string(context, "ulong_long")); configuration.config("rbx.platform.typedef.user_size_t", string(context, "ulong_long")); configuration.config("rbx.platform.typedef.user_ssize_t", string(context, "long_long")); @@ -748,6 +519,9 @@ public static void load(RubiniusConfiguration configuration, RubyContext context configuration.config("rbx.platform.typedef.user_time_t", string(context, "long_long")); configuration.config("rbx.platform.typedef.user_off_t", string(context, "long_long")); configuration.config("rbx.platform.typedef.syscall_arg_t", string(context, "ulong_long")); + configuration.config("rbx.platform.typedef.intptr_t", string(context, "long")); + configuration.config("rbx.platform.typedef.intmax_t", string(context, "long")); + configuration.config("rbx.platform.typedef.uintmax_t", string(context, "ulong")); configuration.config("rbx.platform.typedef.u_char", string(context, "uchar")); configuration.config("rbx.platform.typedef.u_short", string(context, "ushort")); configuration.config("rbx.platform.typedef.u_int", string(context, "uint")); @@ -794,9 +568,8 @@ public static void load(RubiniusConfiguration configuration, RubyContext context configuration.config("rbx.platform.typedef.sae_associd_t", string(context, "uint")); configuration.config("rbx.platform.typedef.sae_connid_t", string(context, "uint")); configuration.config("rbx.platform.typedef.rlim_t", string(context, "ulong_long")); - - // Added manually - configuration.config("rbx.platform.typedef.pthread_t", string(context, "ulong")); // pthread_t is a pointer on macOS + configuration.config("rbx.platform.typedef.rusage_info_t", string(context, "pointer")); + configuration.config("rbx.platform.typedef.pthread_t", string(context, "pointer")); } } diff --git a/src/main/java/org/truffleruby/platform/linux/LinuxRubiniusConfiguration.java b/src/main/java/org/truffleruby/platform/linux/LinuxRubiniusConfiguration.java index 474692cc9b0b..fe0911328206 100644 --- a/src/main/java/org/truffleruby/platform/linux/LinuxRubiniusConfiguration.java +++ b/src/main/java/org/truffleruby/platform/linux/LinuxRubiniusConfiguration.java @@ -44,7 +44,7 @@ public class LinuxRubiniusConfiguration extends DefaultRubiniusConfiguration { public static void load(RubiniusConfiguration configuration, RubyContext context) { - // Generated from tool/translate_rubinius_config.rb < ../rubinius/runtime/platform.conf + // Generated from tool/generate-native-config.rb on x86_64-linux configuration.config("rbx.platform.addrinfo.sizeof", 48); configuration.config("rbx.platform.addrinfo.ai_flags.offset", 0); configuration.config("rbx.platform.addrinfo.ai_flags.size", 4); @@ -99,23 +99,6 @@ public static void load(RubiniusConfiguration configuration, RubyContext context configuration.config("rbx.platform.sockaddr.sa_family.offset", 0); configuration.config("rbx.platform.sockaddr.sa_family.size", 2); configuration.config("rbx.platform.sockaddr.sa_family.type", string(context, "sa_family_t")); - configuration.config("rbx.platform.dirent.sizeof", 280); - configuration.config("rbx.platform.dirent.d_ino.offset", 0); - configuration.config("rbx.platform.dirent.d_ino.size", 8); - configuration.config("rbx.platform.dirent.d_ino.type", string(context, "ino_t")); - configuration.config("rbx.platform.dirent.d_reclen.offset", 16); - configuration.config("rbx.platform.dirent.d_reclen.size", 2); - configuration.config("rbx.platform.dirent.d_reclen.type", string(context, "ushort")); - configuration.config("rbx.platform.dirent.d_name.offset", 19); - configuration.config("rbx.platform.dirent.d_name.size", 256); - configuration.config("rbx.platform.dirent.d_name.type", string(context, "char_array")); - configuration.config("rbx.platform.timeval.sizeof", 16); - configuration.config("rbx.platform.timeval.tv_sec.offset", 0); - configuration.config("rbx.platform.timeval.tv_sec.size", 8); - configuration.config("rbx.platform.timeval.tv_sec.type", string(context, "time_t")); - configuration.config("rbx.platform.timeval.tv_usec.offset", 8); - configuration.config("rbx.platform.timeval.tv_usec.size", 8); - configuration.config("rbx.platform.timeval.tv_usec.type", string(context, "suseconds_t")); configuration.config("rbx.platform.sockaddr_in.sizeof", 16); configuration.config("rbx.platform.sockaddr_in.sin_family.offset", 0); configuration.config("rbx.platform.sockaddr_in.sin_family.size", 2); @@ -168,8 +151,10 @@ public static void load(RubiniusConfiguration configuration, RubyContext context configuration.config("rbx.platform.linger.sizeof", 8); configuration.config("rbx.platform.linger.l_onoff.offset", 0); configuration.config("rbx.platform.linger.l_onoff.size", 4); + configuration.config("rbx.platform.linger.l_onoff.type", string(context, "int")); configuration.config("rbx.platform.linger.l_linger.offset", 4); configuration.config("rbx.platform.linger.l_linger.size", 4); + configuration.config("rbx.platform.linger.l_linger.type", string(context, "int")); configuration.config("rbx.platform.iovec.sizeof", 16); configuration.config("rbx.platform.iovec.iov_base.offset", 0); configuration.config("rbx.platform.iovec.iov_base.size", 8); @@ -212,51 +197,13 @@ public static void load(RubiniusConfiguration configuration, RubyContext context configuration.config("rbx.platform.servent.s_proto.offset", 24); configuration.config("rbx.platform.servent.s_proto.size", 8); configuration.config("rbx.platform.servent.s_proto.type", string(context, "pointer")); - configuration.config("rbx.platform.stat.sizeof", 144); - configuration.config("rbx.platform.stat.st_dev.offset", 0); - configuration.config("rbx.platform.stat.st_dev.size", 8); - configuration.config("rbx.platform.stat.st_dev.type", string(context, "dev_t")); - configuration.config("rbx.platform.stat.st_ino.offset", 8); - configuration.config("rbx.platform.stat.st_ino.size", 8); - configuration.config("rbx.platform.stat.st_ino.type", string(context, "ino_t")); - configuration.config("rbx.platform.stat.st_mode.offset", 24); - configuration.config("rbx.platform.stat.st_mode.size", 4); - configuration.config("rbx.platform.stat.st_mode.type", string(context, "mode_t")); - configuration.config("rbx.platform.stat.st_nlink.offset", 16); - configuration.config("rbx.platform.stat.st_nlink.size", 8); - configuration.config("rbx.platform.stat.st_nlink.type", string(context, "nlink_t")); - configuration.config("rbx.platform.stat.st_uid.offset", 28); - configuration.config("rbx.platform.stat.st_uid.size", 4); - configuration.config("rbx.platform.stat.st_uid.type", string(context, "uid_t")); - configuration.config("rbx.platform.stat.st_gid.offset", 32); - configuration.config("rbx.platform.stat.st_gid.size", 4); - configuration.config("rbx.platform.stat.st_gid.type", string(context, "gid_t")); - configuration.config("rbx.platform.stat.st_rdev.offset", 40); - configuration.config("rbx.platform.stat.st_rdev.size", 8); - configuration.config("rbx.platform.stat.st_rdev.type", string(context, "dev_t")); - configuration.config("rbx.platform.stat.st_size.offset", 48); - configuration.config("rbx.platform.stat.st_size.size", 8); - configuration.config("rbx.platform.stat.st_size.type", string(context, "off_t")); - configuration.config("rbx.platform.stat.st_blksize.offset", 56); - configuration.config("rbx.platform.stat.st_blksize.size", 8); - configuration.config("rbx.platform.stat.st_blocks.offset", 64); - configuration.config("rbx.platform.stat.st_blocks.size", 8); - configuration.config("rbx.platform.stat.st_atime.offset", 72); - configuration.config("rbx.platform.stat.st_atime.size", 8); - configuration.config("rbx.platform.stat.st_atime.type", string(context, "time_t")); - configuration.config("rbx.platform.stat.st_mtime.offset", 88); - configuration.config("rbx.platform.stat.st_mtime.size", 8); - configuration.config("rbx.platform.stat.st_mtime.type", string(context, "time_t")); - configuration.config("rbx.platform.stat.st_ctime.offset", 104); - configuration.config("rbx.platform.stat.st_ctime.size", 8); - configuration.config("rbx.platform.stat.st_ctime.type", string(context, "time_t")); - configuration.config("rbx.platform.rlimit.sizeof", 16); - configuration.config("rbx.platform.rlimit.rlim_cur.offset", 0); - configuration.config("rbx.platform.rlimit.rlim_cur.size", 8); - configuration.config("rbx.platform.rlimit.rlim_cur.type", string(context, "rlim_t")); - configuration.config("rbx.platform.rlimit.rlim_max.offset", 8); - configuration.config("rbx.platform.rlimit.rlim_max.size", 8); - configuration.config("rbx.platform.rlimit.rlim_max.type", string(context, "rlim_t")); + configuration.config("rbx.platform.file.FNM_CASEFOLD", 16); + configuration.config("rbx.platform.file.FNM_NOESCAPE", 2); + configuration.config("rbx.platform.file.FNM_PATHNAME", 1); + configuration.config("rbx.platform.file.LOCK_SH", 1); + configuration.config("rbx.platform.file.LOCK_EX", 2); + configuration.config("rbx.platform.file.LOCK_NB", 4); + configuration.config("rbx.platform.file.LOCK_UN", 8); configuration.config("rbx.platform.file.O_RDONLY", 0); configuration.config("rbx.platform.file.O_WRONLY", 1); configuration.config("rbx.platform.file.O_RDWR", 2); @@ -266,6 +213,7 @@ public static void load(RubiniusConfiguration configuration, RubyContext context configuration.config("rbx.platform.file.O_TRUNC", 512); configuration.config("rbx.platform.file.O_APPEND", 1024); configuration.config("rbx.platform.file.O_NONBLOCK", 2048); + configuration.config("rbx.platform.file.O_NDELAY", 2048); configuration.config("rbx.platform.file.O_SYNC", 1052672); configuration.config("rbx.platform.file.S_IRUSR", 256); configuration.config("rbx.platform.file.S_IWUSR", 128); @@ -284,7 +232,6 @@ public static void load(RubiniusConfiguration configuration, RubyContext context configuration.config("rbx.platform.file.S_IFREG", 32768); configuration.config("rbx.platform.file.S_IFLNK", 40960); configuration.config("rbx.platform.file.S_IFSOCK", 49152); - configuration.config("rbx.platform.file.S_IFWHT", 0); configuration.config("rbx.platform.file.S_ISUID", 2048); configuration.config("rbx.platform.file.S_ISGID", 1024); configuration.config("rbx.platform.file.S_ISVTX", 512); @@ -298,18 +245,32 @@ public static void load(RubiniusConfiguration configuration, RubyContext context configuration.config("rbx.platform.fcntl.F_SETFD", 2); configuration.config("rbx.platform.fcntl.FD_CLOEXEC", 1); configuration.config("rbx.platform.socket.AF_APPLETALK", 5); + configuration.config("rbx.platform.socket.PF_APPLETALK", 5); configuration.config("rbx.platform.socket.AF_AX25", 3); + configuration.config("rbx.platform.socket.PF_AX25", 3); configuration.config("rbx.platform.socket.AF_INET", 2); + configuration.config("rbx.platform.socket.PF_INET", 2); configuration.config("rbx.platform.socket.AF_INET6", 10); + configuration.config("rbx.platform.socket.PF_INET6", 10); configuration.config("rbx.platform.socket.AF_IPX", 4); + configuration.config("rbx.platform.socket.PF_IPX", 4); configuration.config("rbx.platform.socket.AF_ISDN", 34); + configuration.config("rbx.platform.socket.PF_ISDN", 34); configuration.config("rbx.platform.socket.AF_LOCAL", 1); - configuration.config("rbx.platform.socket.AF_MAX", 41); + configuration.config("rbx.platform.socket.PF_LOCAL", 1); + configuration.config("rbx.platform.socket.AF_MAX", 43); + configuration.config("rbx.platform.socket.PF_MAX", 43); configuration.config("rbx.platform.socket.AF_PACKET", 17); + configuration.config("rbx.platform.socket.PF_PACKET", 17); configuration.config("rbx.platform.socket.AF_ROUTE", 16); + configuration.config("rbx.platform.socket.PF_ROUTE", 16); configuration.config("rbx.platform.socket.AF_SNA", 22); + configuration.config("rbx.platform.socket.PF_SNA", 22); configuration.config("rbx.platform.socket.AF_UNIX", 1); + configuration.config("rbx.platform.socket.PF_UNIX", 1); configuration.config("rbx.platform.socket.AF_UNSPEC", 0); + configuration.config("rbx.platform.socket.PF_UNSPEC", 0); + configuration.config("rbx.platform.socket.PF_KEY", 15); configuration.config("rbx.platform.socket.AI_ADDRCONFIG", 32); configuration.config("rbx.platform.socket.AI_ALL", 16); configuration.config("rbx.platform.socket.AI_CANONNAME", 2); @@ -317,24 +278,18 @@ public static void load(RubiniusConfiguration configuration, RubyContext context configuration.config("rbx.platform.socket.AI_NUMERICSERV", 1024); configuration.config("rbx.platform.socket.AI_PASSIVE", 1); configuration.config("rbx.platform.socket.AI_V4MAPPED", 8); - configuration.config("rbx.platform.socket.EAI_ADDRFAMILY", 0); + configuration.config("rbx.platform.socket.EAI_ADDRFAMILY", -9); configuration.config("rbx.platform.socket.EAI_AGAIN", -3); configuration.config("rbx.platform.socket.EAI_BADFLAGS", -1); configuration.config("rbx.platform.socket.EAI_FAIL", -4); configuration.config("rbx.platform.socket.EAI_FAMILY", -6); configuration.config("rbx.platform.socket.EAI_MEMORY", -10); - configuration.config("rbx.platform.socket.EAI_NODATA", 0); + configuration.config("rbx.platform.socket.EAI_NODATA", -5); configuration.config("rbx.platform.socket.EAI_NONAME", -2); configuration.config("rbx.platform.socket.EAI_OVERFLOW", -12); configuration.config("rbx.platform.socket.EAI_SERVICE", -8); configuration.config("rbx.platform.socket.EAI_SOCKTYPE", -7); configuration.config("rbx.platform.socket.EAI_SYSTEM", -11); - configuration.config("rbx.platform.socket.FNM_CASEFOLD", 0); - configuration.config("rbx.platform.socket.FNM_DOTMATCH", 0); - configuration.config("rbx.platform.socket.FNM_EXTGLOB", 0); - configuration.config("rbx.platform.socket.FNM_NOESCAPE", 0); - configuration.config("rbx.platform.socket.FNM_PATHNAME", 0); - configuration.config("rbx.platform.socket.FNM_SYSCASE", 0); configuration.config("rbx.platform.socket.IFF_ALLMULTI", 512); configuration.config("rbx.platform.socket.IFF_AUTOMEDIA", 16384); configuration.config("rbx.platform.socket.IFF_BROADCAST", 2); @@ -362,7 +317,6 @@ public static void load(RubiniusConfiguration configuration, RubyContext context configuration.config("rbx.platform.socket.INET6_ADDRSTRLEN", 46); configuration.config("rbx.platform.socket.INET_ADDRSTRLEN", 16); configuration.config("rbx.platform.socket.IPPORT_RESERVED", 1024); - configuration.config("rbx.platform.socket.IPPORT_USERRESERVED", 0); configuration.config("rbx.platform.socket.IPPROTO_AH", 51); configuration.config("rbx.platform.socket.IPPROTO_DSTOPTS", 60); configuration.config("rbx.platform.socket.IPPROTO_EGP", 8); @@ -445,10 +399,6 @@ public static void load(RubiniusConfiguration configuration, RubyContext context configuration.config("rbx.platform.socket.IP_TTL", 2); configuration.config("rbx.platform.socket.IP_UNBLOCK_SOURCE", 37); configuration.config("rbx.platform.socket.IP_XFRM_POLICY", 17); - configuration.config("rbx.platform.socket.LOCK_EX", 0); - configuration.config("rbx.platform.socket.LOCK_NB", 0); - configuration.config("rbx.platform.socket.LOCK_SH", 0); - configuration.config("rbx.platform.socket.LOCK_UN", 0); configuration.config("rbx.platform.socket.MCAST_BLOCK_SOURCE", 43); configuration.config("rbx.platform.socket.MCAST_EXCLUDE", 0); configuration.config("rbx.platform.socket.MCAST_INCLUDE", 1); @@ -482,30 +432,16 @@ public static void load(RubiniusConfiguration configuration, RubyContext context configuration.config("rbx.platform.socket.NI_NOFQDN", 4); configuration.config("rbx.platform.socket.NI_NUMERICHOST", 1); configuration.config("rbx.platform.socket.NI_NUMERICSERV", 2); - configuration.config("rbx.platform.socket.PF_APPLETALK", 5); - configuration.config("rbx.platform.socket.PF_AX25", 3); - configuration.config("rbx.platform.socket.PF_INET", 2); - configuration.config("rbx.platform.socket.PF_INET6", 10); - configuration.config("rbx.platform.socket.PF_IPX", 4); - configuration.config("rbx.platform.socket.PF_ISDN", 34); - configuration.config("rbx.platform.socket.PF_KEY", 15); - configuration.config("rbx.platform.socket.PF_LOCAL", 1); - configuration.config("rbx.platform.socket.PF_MAX", 41); - configuration.config("rbx.platform.socket.PF_PACKET", 17); - configuration.config("rbx.platform.socket.PF_ROUTE", 16); - configuration.config("rbx.platform.socket.PF_SNA", 22); - configuration.config("rbx.platform.socket.PF_UNIX", 1); - configuration.config("rbx.platform.socket.PF_UNSPEC", 0); - configuration.config("rbx.platform.socket.SCM_CREDENTIALS", 0); + configuration.config("rbx.platform.socket.SCM_CREDENTIALS", 2); configuration.config("rbx.platform.socket.SCM_RIGHTS", 1); configuration.config("rbx.platform.socket.SCM_TIMESTAMP", 29); configuration.config("rbx.platform.socket.SCM_TIMESTAMPING", 37); configuration.config("rbx.platform.socket.SCM_TIMESTAMPNS", 35); configuration.config("rbx.platform.socket.SCM_WIFI_STATUS", 41); configuration.config("rbx.platform.socket.SEEK_CUR", 1); - configuration.config("rbx.platform.socket.SEEK_DATA", 0); + configuration.config("rbx.platform.socket.SEEK_DATA", 3); configuration.config("rbx.platform.socket.SEEK_END", 2); - configuration.config("rbx.platform.socket.SEEK_HOLE", 0); + configuration.config("rbx.platform.socket.SEEK_HOLE", 4); configuration.config("rbx.platform.socket.SEEK_SET", 0); configuration.config("rbx.platform.socket.SHUT_RD", 0); configuration.config("rbx.platform.socket.SHUT_RDWR", 2); @@ -611,7 +547,6 @@ public static void load(RubiniusConfiguration configuration, RubyContext context configuration.config("rbx.platform.process.RLIMIT_NOFILE", 7); configuration.config("rbx.platform.process.RLIMIT_MEMLOCK", 8); configuration.config("rbx.platform.process.RLIMIT_AS", 9); - configuration.config("rbx.platform.process.RLIMIT_SBSIZE", 0); configuration.config("rbx.platform.process.RLIMIT_RTPRIO", 14); configuration.config("rbx.platform.process.RLIMIT_RTTIME", 15); configuration.config("rbx.platform.process.RLIMIT_SIGPENDING", 11); @@ -627,7 +562,6 @@ public static void load(RubiniusConfiguration configuration, RubyContext context configuration.config("rbx.platform.signal.SIGTRAP", 5); configuration.config("rbx.platform.signal.SIGIOT", 6); configuration.config("rbx.platform.signal.SIGABRT", 6); - configuration.config("rbx.platform.signal.SIGEMT", 0); configuration.config("rbx.platform.signal.SIGFPE", 8); configuration.config("rbx.platform.signal.SIGKILL", 9); configuration.config("rbx.platform.signal.SIGBUS", 7); @@ -652,23 +586,14 @@ public static void load(RubiniusConfiguration configuration, RubyContext context configuration.config("rbx.platform.signal.SIGWINCH", 28); configuration.config("rbx.platform.signal.SIGUSR1", 10); configuration.config("rbx.platform.signal.SIGUSR2", 12); - configuration.config("rbx.platform.signal.SIGLOST", 0); - configuration.config("rbx.platform.signal.SIGMSG", 0); configuration.config("rbx.platform.signal.SIGPWR", 30); configuration.config("rbx.platform.signal.SIGPOLL", 29); - configuration.config("rbx.platform.signal.SIGDANGER", 0); - configuration.config("rbx.platform.signal.SIGMIGRATE", 0); - configuration.config("rbx.platform.signal.SIGPRE", 0); - configuration.config("rbx.platform.signal.SIGGRANT", 0); - configuration.config("rbx.platform.signal.SIGRETRACT", 0); - configuration.config("rbx.platform.signal.SIGSOUND", 0); - configuration.config("rbx.platform.signal.SIGINFO", 0); - configuration.config("rbx.platform.zlib.ZLIB_VERSION", string(context, "1.2.8")); configuration.config("rbx.platform.dlopen.RTLD_LAZY", 1); configuration.config("rbx.platform.dlopen.RTLD_NOW", 2); configuration.config("rbx.platform.dlopen.RTLD_LOCAL", 0); configuration.config("rbx.platform.dlopen.RTLD_GLOBAL", 256); configuration.config("rbx.platform.typedef.int8_t", string(context, "char")); + configuration.config("rbx.platform.typedef.int16_t", string(context, "short")); configuration.config("rbx.platform.typedef.int32_t", string(context, "int")); configuration.config("rbx.platform.typedef.int64_t", string(context, "long")); configuration.config("rbx.platform.typedef.uint8_t", string(context, "uchar")); @@ -676,6 +601,7 @@ public static void load(RubiniusConfiguration configuration, RubyContext context configuration.config("rbx.platform.typedef.uint32_t", string(context, "uint")); configuration.config("rbx.platform.typedef.uint64_t", string(context, "ulong")); configuration.config("rbx.platform.typedef.int_least8_t", string(context, "char")); + configuration.config("rbx.platform.typedef.int_least16_t", string(context, "short")); configuration.config("rbx.platform.typedef.int_least32_t", string(context, "int")); configuration.config("rbx.platform.typedef.int_least64_t", string(context, "long")); configuration.config("rbx.platform.typedef.uint_least8_t", string(context, "uchar")); @@ -694,55 +620,6 @@ public static void load(RubiniusConfiguration configuration, RubyContext context configuration.config("rbx.platform.typedef.uintptr_t", string(context, "ulong")); configuration.config("rbx.platform.typedef.intmax_t", string(context, "long")); configuration.config("rbx.platform.typedef.uintmax_t", string(context, "ulong")); - configuration.config("rbx.platform.typedef.__u_char", string(context, "uchar")); - configuration.config("rbx.platform.typedef.__u_short", string(context, "ushort")); - configuration.config("rbx.platform.typedef.__u_int", string(context, "uint")); - configuration.config("rbx.platform.typedef.__u_long", string(context, "ulong")); - configuration.config("rbx.platform.typedef.__int8_t", string(context, "char")); - configuration.config("rbx.platform.typedef.__uint8_t", string(context, "uchar")); - configuration.config("rbx.platform.typedef.__int16_t", string(context, "short")); - configuration.config("rbx.platform.typedef.__uint16_t", string(context, "ushort")); - configuration.config("rbx.platform.typedef.__int32_t", string(context, "int")); - configuration.config("rbx.platform.typedef.__uint32_t", string(context, "uint")); - configuration.config("rbx.platform.typedef.__int64_t", string(context, "long")); - configuration.config("rbx.platform.typedef.__uint64_t", string(context, "ulong")); - configuration.config("rbx.platform.typedef.__quad_t", string(context, "long")); - configuration.config("rbx.platform.typedef.__u_quad_t", string(context, "ulong")); - configuration.config("rbx.platform.typedef.__dev_t", string(context, "ulong")); - configuration.config("rbx.platform.typedef.__uid_t", string(context, "uint")); - configuration.config("rbx.platform.typedef.__gid_t", string(context, "uint")); - configuration.config("rbx.platform.typedef.__ino_t", string(context, "ulong")); - configuration.config("rbx.platform.typedef.__ino64_t", string(context, "ulong")); - configuration.config("rbx.platform.typedef.__mode_t", string(context, "uint")); - configuration.config("rbx.platform.typedef.__nlink_t", string(context, "ulong")); - configuration.config("rbx.platform.typedef.__off_t", string(context, "long")); - configuration.config("rbx.platform.typedef.__off64_t", string(context, "long")); - configuration.config("rbx.platform.typedef.__pid_t", string(context, "int")); - configuration.config("rbx.platform.typedef.__clock_t", string(context, "long")); - configuration.config("rbx.platform.typedef.__rlim_t", string(context, "ulong")); - configuration.config("rbx.platform.typedef.__rlim64_t", string(context, "ulong")); - configuration.config("rbx.platform.typedef.__id_t", string(context, "uint")); - configuration.config("rbx.platform.typedef.__time_t", string(context, "long")); - configuration.config("rbx.platform.typedef.__useconds_t", string(context, "uint")); - configuration.config("rbx.platform.typedef.__suseconds_t", string(context, "long")); - configuration.config("rbx.platform.typedef.__daddr_t", string(context, "int")); - configuration.config("rbx.platform.typedef.__key_t", string(context, "int")); - configuration.config("rbx.platform.typedef.__clockid_t", string(context, "int")); - configuration.config("rbx.platform.typedef.__timer_t", string(context, "pointer")); - configuration.config("rbx.platform.typedef.__blksize_t", string(context, "long")); - configuration.config("rbx.platform.typedef.__blkcnt_t", string(context, "long")); - configuration.config("rbx.platform.typedef.__blkcnt64_t", string(context, "long")); - configuration.config("rbx.platform.typedef.__fsblkcnt_t", string(context, "ulong")); - configuration.config("rbx.platform.typedef.__fsblkcnt64_t", string(context, "ulong")); - configuration.config("rbx.platform.typedef.__fsfilcnt_t", string(context, "ulong")); - configuration.config("rbx.platform.typedef.__fsfilcnt64_t", string(context, "ulong")); - configuration.config("rbx.platform.typedef.__fsword_t", string(context, "long")); - configuration.config("rbx.platform.typedef.__ssize_t", string(context, "long")); - configuration.config("rbx.platform.typedef.__syscall_slong_t", string(context, "long")); - configuration.config("rbx.platform.typedef.__syscall_ulong_t", string(context, "ulong")); - configuration.config("rbx.platform.typedef.__loff_t", string(context, "long")); - configuration.config("rbx.platform.typedef.__intptr_t", string(context, "long")); - configuration.config("rbx.platform.typedef.__socklen_t", string(context, "uint")); configuration.config("rbx.platform.typedef.u_char", string(context, "uchar")); configuration.config("rbx.platform.typedef.u_short", string(context, "ushort")); configuration.config("rbx.platform.typedef.u_int", string(context, "uint")); @@ -751,21 +628,26 @@ public static void load(RubiniusConfiguration configuration, RubyContext context configuration.config("rbx.platform.typedef.u_quad_t", string(context, "ulong")); configuration.config("rbx.platform.typedef.loff_t", string(context, "long")); configuration.config("rbx.platform.typedef.ino_t", string(context, "ulong")); + configuration.config("rbx.platform.typedef.ino64_t", string(context, "ulong")); configuration.config("rbx.platform.typedef.dev_t", string(context, "ulong")); configuration.config("rbx.platform.typedef.gid_t", string(context, "uint")); configuration.config("rbx.platform.typedef.mode_t", string(context, "uint")); configuration.config("rbx.platform.typedef.nlink_t", string(context, "ulong")); configuration.config("rbx.platform.typedef.uid_t", string(context, "uint")); configuration.config("rbx.platform.typedef.off_t", string(context, "long")); + configuration.config("rbx.platform.typedef.off64_t", string(context, "long")); configuration.config("rbx.platform.typedef.pid_t", string(context, "int")); configuration.config("rbx.platform.typedef.id_t", string(context, "uint")); configuration.config("rbx.platform.typedef.ssize_t", string(context, "long")); configuration.config("rbx.platform.typedef.daddr_t", string(context, "int")); + configuration.config("rbx.platform.typedef.caddr_t", string(context, "string")); configuration.config("rbx.platform.typedef.key_t", string(context, "int")); configuration.config("rbx.platform.typedef.clock_t", string(context, "long")); - configuration.config("rbx.platform.typedef.time_t", string(context, "long")); configuration.config("rbx.platform.typedef.clockid_t", string(context, "int")); + configuration.config("rbx.platform.typedef.time_t", string(context, "long")); configuration.config("rbx.platform.typedef.timer_t", string(context, "pointer")); + configuration.config("rbx.platform.typedef.useconds_t", string(context, "uint")); + configuration.config("rbx.platform.typedef.suseconds_t", string(context, "long")); configuration.config("rbx.platform.typedef.size_t", string(context, "ulong")); configuration.config("rbx.platform.typedef.ulong", string(context, "ulong")); configuration.config("rbx.platform.typedef.ushort", string(context, "ushort")); @@ -775,23 +657,21 @@ public static void load(RubiniusConfiguration configuration, RubyContext context configuration.config("rbx.platform.typedef.u_int32_t", string(context, "uint")); configuration.config("rbx.platform.typedef.u_int64_t", string(context, "ulong_long")); configuration.config("rbx.platform.typedef.register_t", string(context, "long")); - configuration.config("rbx.platform.typedef.__sig_atomic_t", string(context, "int")); - configuration.config("rbx.platform.typedef.suseconds_t", string(context, "long")); - configuration.config("rbx.platform.typedef.__fd_mask", string(context, "long")); configuration.config("rbx.platform.typedef.fd_mask", string(context, "long")); configuration.config("rbx.platform.typedef.blksize_t", string(context, "long")); configuration.config("rbx.platform.typedef.blkcnt_t", string(context, "long")); configuration.config("rbx.platform.typedef.fsblkcnt_t", string(context, "ulong")); configuration.config("rbx.platform.typedef.fsfilcnt_t", string(context, "ulong")); + configuration.config("rbx.platform.typedef.blkcnt64_t", string(context, "long")); + configuration.config("rbx.platform.typedef.fsblkcnt64_t", string(context, "ulong")); + configuration.config("rbx.platform.typedef.fsfilcnt64_t", string(context, "ulong")); configuration.config("rbx.platform.typedef.pthread_t", string(context, "ulong")); configuration.config("rbx.platform.typedef.pthread_key_t", string(context, "uint")); configuration.config("rbx.platform.typedef.pthread_once_t", string(context, "int")); configuration.config("rbx.platform.typedef.socklen_t", string(context, "uint")); configuration.config("rbx.platform.typedef.sa_family_t", string(context, "ushort")); configuration.config("rbx.platform.typedef.rlim_t", string(context, "ulong")); - configuration.config("rbx.platform.typedef.__rlimit_resource_t", string(context, "int")); - configuration.config("rbx.platform.typedef.__rusage_who_t", string(context, "int")); - configuration.config("rbx.platform.typedef.__priority_which_t", string(context, "int")); + configuration.config("rbx.platform.typedef.rlim64_t", string(context, "ulong")); } } diff --git a/src/main/java/org/truffleruby/platform/solaris/SolarisSparcV9RubiniusConfiguration.java b/src/main/java/org/truffleruby/platform/solaris/SolarisSparcV9RubiniusConfiguration.java index e219b55519df..f20b5dd59221 100644 --- a/src/main/java/org/truffleruby/platform/solaris/SolarisSparcV9RubiniusConfiguration.java +++ b/src/main/java/org/truffleruby/platform/solaris/SolarisSparcV9RubiniusConfiguration.java @@ -44,7 +44,7 @@ public class SolarisSparcV9RubiniusConfiguration extends DefaultRubiniusConfiguration { public static void load(RubiniusConfiguration configuration, RubyContext context) { - // Generated from tool/translate_rubinius_config.rb < ../rubinius/runtime/platform.conf + // Generated from tool/generate-native-config.rb on sparcv9-solaris2.11 configuration.config("rbx.platform.addrinfo.sizeof", 48); configuration.config("rbx.platform.addrinfo.ai_flags.offset", 0); configuration.config("rbx.platform.addrinfo.ai_flags.size", 4); @@ -99,23 +99,6 @@ public static void load(RubiniusConfiguration configuration, RubyContext context configuration.config("rbx.platform.sockaddr.sa_family.offset", 0); configuration.config("rbx.platform.sockaddr.sa_family.size", 2); configuration.config("rbx.platform.sockaddr.sa_family.type", string(context, "sa_family_t")); - configuration.config("rbx.platform.dirent.sizeof", 24); - configuration.config("rbx.platform.dirent.d_ino.offset", 0); - configuration.config("rbx.platform.dirent.d_ino.size", 8); - configuration.config("rbx.platform.dirent.d_ino.type", string(context, "ino_t")); - configuration.config("rbx.platform.dirent.d_reclen.offset", 16); - configuration.config("rbx.platform.dirent.d_reclen.size", 2); - configuration.config("rbx.platform.dirent.d_reclen.type", string(context, "ushort")); - configuration.config("rbx.platform.dirent.d_name.offset", 18); - configuration.config("rbx.platform.dirent.d_name.size", 1); - configuration.config("rbx.platform.dirent.d_name.type", string(context, "char_array")); - configuration.config("rbx.platform.timeval.sizeof", 16); - configuration.config("rbx.platform.timeval.tv_sec.offset", 0); - configuration.config("rbx.platform.timeval.tv_sec.size", 8); - configuration.config("rbx.platform.timeval.tv_sec.type", string(context, "time_t")); - configuration.config("rbx.platform.timeval.tv_usec.offset", 8); - configuration.config("rbx.platform.timeval.tv_usec.size", 8); - configuration.config("rbx.platform.timeval.tv_usec.type", string(context, "suseconds_t")); configuration.config("rbx.platform.sockaddr_in.sizeof", 16); configuration.config("rbx.platform.sockaddr_in.sin_family.offset", 0); configuration.config("rbx.platform.sockaddr_in.sin_family.size", 2); @@ -168,8 +151,10 @@ public static void load(RubiniusConfiguration configuration, RubyContext context configuration.config("rbx.platform.linger.sizeof", 8); configuration.config("rbx.platform.linger.l_onoff.offset", 0); configuration.config("rbx.platform.linger.l_onoff.size", 4); + configuration.config("rbx.platform.linger.l_onoff.type", string(context, "int")); configuration.config("rbx.platform.linger.l_linger.offset", 4); configuration.config("rbx.platform.linger.l_linger.size", 4); + configuration.config("rbx.platform.linger.l_linger.type", string(context, "int")); configuration.config("rbx.platform.iovec.sizeof", 16); configuration.config("rbx.platform.iovec.iov_base.offset", 0); configuration.config("rbx.platform.iovec.iov_base.size", 8); @@ -212,51 +197,9 @@ public static void load(RubiniusConfiguration configuration, RubyContext context configuration.config("rbx.platform.servent.s_proto.offset", 24); configuration.config("rbx.platform.servent.s_proto.size", 8); configuration.config("rbx.platform.servent.s_proto.type", string(context, "pointer")); - configuration.config("rbx.platform.stat.sizeof", 128); - configuration.config("rbx.platform.stat.st_dev.offset", 0); - configuration.config("rbx.platform.stat.st_dev.size", 8); - configuration.config("rbx.platform.stat.st_dev.type", string(context, "dev_t")); - configuration.config("rbx.platform.stat.st_ino.offset", 8); - configuration.config("rbx.platform.stat.st_ino.size", 8); - configuration.config("rbx.platform.stat.st_ino.type", string(context, "ino_t")); - configuration.config("rbx.platform.stat.st_mode.offset", 16); - configuration.config("rbx.platform.stat.st_mode.size", 4); - configuration.config("rbx.platform.stat.st_mode.type", string(context, "mode_t")); - configuration.config("rbx.platform.stat.st_nlink.offset", 20); - configuration.config("rbx.platform.stat.st_nlink.size", 4); - configuration.config("rbx.platform.stat.st_nlink.type", string(context, "nlink_t")); - configuration.config("rbx.platform.stat.st_uid.offset", 24); - configuration.config("rbx.platform.stat.st_uid.size", 4); - configuration.config("rbx.platform.stat.st_uid.type", string(context, "uid_t")); - configuration.config("rbx.platform.stat.st_gid.offset", 28); - configuration.config("rbx.platform.stat.st_gid.size", 4); - configuration.config("rbx.platform.stat.st_gid.type", string(context, "gid_t")); - configuration.config("rbx.platform.stat.st_rdev.offset", 32); - configuration.config("rbx.platform.stat.st_rdev.size", 8); - configuration.config("rbx.platform.stat.st_rdev.type", string(context, "dev_t")); - configuration.config("rbx.platform.stat.st_size.offset", 40); - configuration.config("rbx.platform.stat.st_size.size", 8); - configuration.config("rbx.platform.stat.st_size.type", string(context, "off_t")); - configuration.config("rbx.platform.stat.st_blksize.offset", 96); - configuration.config("rbx.platform.stat.st_blksize.size", 4); - configuration.config("rbx.platform.stat.st_blocks.offset", 104); - configuration.config("rbx.platform.stat.st_blocks.size", 8); - configuration.config("rbx.platform.stat.st_atime.offset", 48); - configuration.config("rbx.platform.stat.st_atime.size", 8); - configuration.config("rbx.platform.stat.st_atime.type", string(context, "time_t")); - configuration.config("rbx.platform.stat.st_mtime.offset", 64); - configuration.config("rbx.platform.stat.st_mtime.size", 8); - configuration.config("rbx.platform.stat.st_mtime.type", string(context, "time_t")); - configuration.config("rbx.platform.stat.st_ctime.offset", 80); - configuration.config("rbx.platform.stat.st_ctime.size", 8); - configuration.config("rbx.platform.stat.st_ctime.type", string(context, "time_t")); - configuration.config("rbx.platform.rlimit.sizeof", 16); - configuration.config("rbx.platform.rlimit.rlim_cur.offset", 0); - configuration.config("rbx.platform.rlimit.rlim_cur.size", 8); - configuration.config("rbx.platform.rlimit.rlim_cur.type", string(context, "rlim_t")); - configuration.config("rbx.platform.rlimit.rlim_max.offset", 8); - configuration.config("rbx.platform.rlimit.rlim_max.size", 8); - configuration.config("rbx.platform.rlimit.rlim_max.type", string(context, "rlim_t")); + configuration.config("rbx.platform.file.FNM_CASEFOLD", 8); + configuration.config("rbx.platform.file.FNM_NOESCAPE", 2); + configuration.config("rbx.platform.file.FNM_PATHNAME", 1); configuration.config("rbx.platform.file.O_RDONLY", 0); configuration.config("rbx.platform.file.O_WRONLY", 1); configuration.config("rbx.platform.file.O_RDWR", 2); @@ -266,6 +209,7 @@ public static void load(RubiniusConfiguration configuration, RubyContext context configuration.config("rbx.platform.file.O_TRUNC", 512); configuration.config("rbx.platform.file.O_APPEND", 8); configuration.config("rbx.platform.file.O_NONBLOCK", 128); + configuration.config("rbx.platform.file.O_NDELAY", 4); configuration.config("rbx.platform.file.O_SYNC", 16); configuration.config("rbx.platform.file.S_IRUSR", 256); configuration.config("rbx.platform.file.S_IWUSR", 128); @@ -284,7 +228,6 @@ public static void load(RubiniusConfiguration configuration, RubyContext context configuration.config("rbx.platform.file.S_IFREG", 32768); configuration.config("rbx.platform.file.S_IFLNK", 40960); configuration.config("rbx.platform.file.S_IFSOCK", 49152); - configuration.config("rbx.platform.file.S_IFWHT", 0); configuration.config("rbx.platform.file.S_ISUID", 2048); configuration.config("rbx.platform.file.S_ISGID", 1024); configuration.config("rbx.platform.file.S_ISVTX", 512); @@ -298,18 +241,28 @@ public static void load(RubiniusConfiguration configuration, RubyContext context configuration.config("rbx.platform.fcntl.F_SETFD", 2); configuration.config("rbx.platform.fcntl.FD_CLOEXEC", 1); configuration.config("rbx.platform.socket.AF_APPLETALK", 16); - configuration.config("rbx.platform.socket.AF_AX25", 0); + configuration.config("rbx.platform.socket.PF_APPLETALK", 16); configuration.config("rbx.platform.socket.AF_INET", 2); + configuration.config("rbx.platform.socket.PF_INET", 2); configuration.config("rbx.platform.socket.AF_INET6", 26); + configuration.config("rbx.platform.socket.PF_INET6", 26); configuration.config("rbx.platform.socket.AF_IPX", 23); - configuration.config("rbx.platform.socket.AF_ISDN", 0); + configuration.config("rbx.platform.socket.PF_IPX", 23); configuration.config("rbx.platform.socket.AF_LOCAL", 1); + configuration.config("rbx.platform.socket.PF_LOCAL", 1); configuration.config("rbx.platform.socket.AF_MAX", 33); + configuration.config("rbx.platform.socket.PF_MAX", 33); configuration.config("rbx.platform.socket.AF_PACKET", 32); + configuration.config("rbx.platform.socket.PF_PACKET", 32); configuration.config("rbx.platform.socket.AF_ROUTE", 24); + configuration.config("rbx.platform.socket.PF_ROUTE", 24); configuration.config("rbx.platform.socket.AF_SNA", 11); + configuration.config("rbx.platform.socket.PF_SNA", 11); configuration.config("rbx.platform.socket.AF_UNIX", 1); + configuration.config("rbx.platform.socket.PF_UNIX", 1); configuration.config("rbx.platform.socket.AF_UNSPEC", 0); + configuration.config("rbx.platform.socket.PF_UNSPEC", 0); + configuration.config("rbx.platform.socket.PF_KEY", 27); configuration.config("rbx.platform.socket.AI_ADDRCONFIG", 4); configuration.config("rbx.platform.socket.AI_ALL", 2); configuration.config("rbx.platform.socket.AI_CANONNAME", 16); @@ -329,27 +282,16 @@ public static void load(RubiniusConfiguration configuration, RubyContext context configuration.config("rbx.platform.socket.EAI_SERVICE", 9); configuration.config("rbx.platform.socket.EAI_SOCKTYPE", 10); configuration.config("rbx.platform.socket.EAI_SYSTEM", 11); - configuration.config("rbx.platform.socket.FNM_CASEFOLD", 0); - configuration.config("rbx.platform.socket.FNM_DOTMATCH", 0); - configuration.config("rbx.platform.socket.FNM_EXTGLOB", 0); - configuration.config("rbx.platform.socket.FNM_NOESCAPE", 0); - configuration.config("rbx.platform.socket.FNM_PATHNAME", 0); - configuration.config("rbx.platform.socket.FNM_SYSCASE", 0); configuration.config("rbx.platform.socket.IFF_ALLMULTI", 512); - configuration.config("rbx.platform.socket.IFF_AUTOMEDIA", 0); configuration.config("rbx.platform.socket.IFF_BROADCAST", 2); configuration.config("rbx.platform.socket.IFF_DEBUG", 4); - configuration.config("rbx.platform.socket.IFF_DYNAMIC", 0); configuration.config("rbx.platform.socket.IFF_LOOPBACK", 8); - configuration.config("rbx.platform.socket.IFF_MASTER", 0); configuration.config("rbx.platform.socket.IFF_MULTICAST", 2048); configuration.config("rbx.platform.socket.IFF_NOARP", 128); configuration.config("rbx.platform.socket.IFF_NOTRAILERS", 32); configuration.config("rbx.platform.socket.IFF_POINTOPOINT", 16); - configuration.config("rbx.platform.socket.IFF_PORTSEL", 0); configuration.config("rbx.platform.socket.IFF_PROMISC", 256); configuration.config("rbx.platform.socket.IFF_RUNNING", 64); - configuration.config("rbx.platform.socket.IFF_SLAVE", 0); configuration.config("rbx.platform.socket.IFF_UP", 1); configuration.config("rbx.platform.socket.IF_NAMESIZE", 32); configuration.config("rbx.platform.socket.INADDR_ALLHOSTS_GROUP", 3758096385L); @@ -380,7 +322,6 @@ public static void load(RubiniusConfiguration configuration, RubyContext context configuration.config("rbx.platform.socket.IPPROTO_RAW", 255); configuration.config("rbx.platform.socket.IPPROTO_ROUTING", 43); configuration.config("rbx.platform.socket.IPPROTO_TCP", 6); - configuration.config("rbx.platform.socket.IPPROTO_TP", 0); configuration.config("rbx.platform.socket.IPPROTO_UDP", 17); configuration.config("rbx.platform.socket.IPV6_CHECKSUM", 24); configuration.config("rbx.platform.socket.IPV6_DONTFRAG", 33); @@ -415,40 +356,19 @@ public static void load(RubiniusConfiguration configuration, RubyContext context configuration.config("rbx.platform.socket.IP_DEFAULT_MULTICAST_TTL", 1); configuration.config("rbx.platform.socket.IP_DROP_MEMBERSHIP", 20); configuration.config("rbx.platform.socket.IP_DROP_SOURCE_MEMBERSHIP", 24); - configuration.config("rbx.platform.socket.IP_FREEBIND", 0); configuration.config("rbx.platform.socket.IP_HDRINCL", 2); - configuration.config("rbx.platform.socket.IP_IPSEC_POLICY", 0); - configuration.config("rbx.platform.socket.IP_MAX_MEMBERSHIPS", 0); - configuration.config("rbx.platform.socket.IP_MINTTL", 0); - configuration.config("rbx.platform.socket.IP_MSFILTER", 0); - configuration.config("rbx.platform.socket.IP_MTU", 0); - configuration.config("rbx.platform.socket.IP_MTU_DISCOVER", 0); configuration.config("rbx.platform.socket.IP_MULTICAST_IF", 16); configuration.config("rbx.platform.socket.IP_MULTICAST_LOOP", 18); configuration.config("rbx.platform.socket.IP_MULTICAST_TTL", 17); configuration.config("rbx.platform.socket.IP_OPTIONS", 1); - configuration.config("rbx.platform.socket.IP_PASSSEC", 0); configuration.config("rbx.platform.socket.IP_PKTINFO", 26); - configuration.config("rbx.platform.socket.IP_PKTOPTIONS", 0); - configuration.config("rbx.platform.socket.IP_PMTUDISC_DO", 0); - configuration.config("rbx.platform.socket.IP_PMTUDISC_DONT", 0); - configuration.config("rbx.platform.socket.IP_PMTUDISC_WANT", 0); - configuration.config("rbx.platform.socket.IP_RECVERR", 0); configuration.config("rbx.platform.socket.IP_RECVOPTS", 5); configuration.config("rbx.platform.socket.IP_RECVRETOPTS", 6); - configuration.config("rbx.platform.socket.IP_RECVTOS", 0); configuration.config("rbx.platform.socket.IP_RECVTTL", 11); configuration.config("rbx.platform.socket.IP_RETOPTS", 8); - configuration.config("rbx.platform.socket.IP_ROUTER_ALERT", 0); configuration.config("rbx.platform.socket.IP_TOS", 3); - configuration.config("rbx.platform.socket.IP_TRANSPARENT", 0); configuration.config("rbx.platform.socket.IP_TTL", 4); configuration.config("rbx.platform.socket.IP_UNBLOCK_SOURCE", 22); - configuration.config("rbx.platform.socket.IP_XFRM_POLICY", 0); - configuration.config("rbx.platform.socket.LOCK_EX", 0); - configuration.config("rbx.platform.socket.LOCK_NB", 0); - configuration.config("rbx.platform.socket.LOCK_SH", 0); - configuration.config("rbx.platform.socket.LOCK_UN", 0); configuration.config("rbx.platform.socket.MCAST_BLOCK_SOURCE", 43); configuration.config("rbx.platform.socket.MCAST_EXCLUDE", 2); configuration.config("rbx.platform.socket.MCAST_INCLUDE", 1); @@ -456,23 +376,13 @@ public static void load(RubiniusConfiguration configuration, RubyContext context configuration.config("rbx.platform.socket.MCAST_JOIN_SOURCE_GROUP", 45); configuration.config("rbx.platform.socket.MCAST_LEAVE_GROUP", 42); configuration.config("rbx.platform.socket.MCAST_LEAVE_SOURCE_GROUP", 46); - configuration.config("rbx.platform.socket.MCAST_MSFILTER", 0); configuration.config("rbx.platform.socket.MCAST_UNBLOCK_SOURCE", 44); - configuration.config("rbx.platform.socket.MSG_CONFIRM", 0); configuration.config("rbx.platform.socket.MSG_CTRUNC", 16); configuration.config("rbx.platform.socket.MSG_DONTROUTE", 4); configuration.config("rbx.platform.socket.MSG_DONTWAIT", 128); configuration.config("rbx.platform.socket.MSG_EOR", 8); - configuration.config("rbx.platform.socket.MSG_ERRQUEUE", 0); - configuration.config("rbx.platform.socket.MSG_FASTOPEN", 0); - configuration.config("rbx.platform.socket.MSG_FIN", 0); - configuration.config("rbx.platform.socket.MSG_MORE", 0); - configuration.config("rbx.platform.socket.MSG_NOSIGNAL", 0); configuration.config("rbx.platform.socket.MSG_OOB", 1); configuration.config("rbx.platform.socket.MSG_PEEK", 2); - configuration.config("rbx.platform.socket.MSG_PROXY", 0); - configuration.config("rbx.platform.socket.MSG_RST", 0); - configuration.config("rbx.platform.socket.MSG_SYN", 0); configuration.config("rbx.platform.socket.MSG_TRUNC", 32); configuration.config("rbx.platform.socket.MSG_WAITALL", 64); configuration.config("rbx.platform.socket.NI_DGRAM", 16); @@ -482,117 +392,48 @@ public static void load(RubiniusConfiguration configuration, RubyContext context configuration.config("rbx.platform.socket.NI_NOFQDN", 1); configuration.config("rbx.platform.socket.NI_NUMERICHOST", 2); configuration.config("rbx.platform.socket.NI_NUMERICSERV", 8); - configuration.config("rbx.platform.socket.PF_APPLETALK", 16); - configuration.config("rbx.platform.socket.PF_AX25", 0); - configuration.config("rbx.platform.socket.PF_INET", 2); - configuration.config("rbx.platform.socket.PF_INET6", 26); - configuration.config("rbx.platform.socket.PF_IPX", 23); - configuration.config("rbx.platform.socket.PF_ISDN", 0); - configuration.config("rbx.platform.socket.PF_KEY", 27); - configuration.config("rbx.platform.socket.PF_LOCAL", 1); - configuration.config("rbx.platform.socket.PF_MAX", 33); - configuration.config("rbx.platform.socket.PF_PACKET", 32); - configuration.config("rbx.platform.socket.PF_ROUTE", 24); - configuration.config("rbx.platform.socket.PF_SNA", 11); - configuration.config("rbx.platform.socket.PF_UNIX", 1); - configuration.config("rbx.platform.socket.PF_UNSPEC", 0); - configuration.config("rbx.platform.socket.SCM_CREDENTIALS", 0); configuration.config("rbx.platform.socket.SCM_RIGHTS", 4112); configuration.config("rbx.platform.socket.SCM_TIMESTAMP", 4115); - configuration.config("rbx.platform.socket.SCM_TIMESTAMPING", 0); - configuration.config("rbx.platform.socket.SCM_TIMESTAMPNS", 0); - configuration.config("rbx.platform.socket.SCM_WIFI_STATUS", 0); configuration.config("rbx.platform.socket.SEEK_CUR", 1); - configuration.config("rbx.platform.socket.SEEK_DATA", 0); configuration.config("rbx.platform.socket.SEEK_END", 2); - configuration.config("rbx.platform.socket.SEEK_HOLE", 0); configuration.config("rbx.platform.socket.SEEK_SET", 0); configuration.config("rbx.platform.socket.SHUT_RD", 0); configuration.config("rbx.platform.socket.SHUT_RDWR", 2); configuration.config("rbx.platform.socket.SHUT_WR", 1); configuration.config("rbx.platform.socket.SOCK_DGRAM", 1); - configuration.config("rbx.platform.socket.SOCK_PACKET", 0); configuration.config("rbx.platform.socket.SOCK_RAW", 4); configuration.config("rbx.platform.socket.SOCK_RDM", 5); configuration.config("rbx.platform.socket.SOCK_SEQPACKET", 6); configuration.config("rbx.platform.socket.SOCK_STREAM", 2); - configuration.config("rbx.platform.socket.SOL_IP", 0); configuration.config("rbx.platform.socket.SOL_SOCKET", 65535); - configuration.config("rbx.platform.socket.SOL_TCP", 0); - configuration.config("rbx.platform.socket.SOL_UDP", 0); configuration.config("rbx.platform.socket.SO_ACCEPTCONN", 2); configuration.config("rbx.platform.socket.SO_ATTACH_FILTER", 1073741825); - configuration.config("rbx.platform.socket.SO_BINDTODEVICE", 0); - configuration.config("rbx.platform.socket.SO_BPF_EXTENSIONS", 0); configuration.config("rbx.platform.socket.SO_BROADCAST", 32); - configuration.config("rbx.platform.socket.SO_BUSY_POLL", 0); configuration.config("rbx.platform.socket.SO_DEBUG", 1); configuration.config("rbx.platform.socket.SO_DETACH_FILTER", 1073741826); configuration.config("rbx.platform.socket.SO_DOMAIN", 4108); configuration.config("rbx.platform.socket.SO_DONTROUTE", 16); configuration.config("rbx.platform.socket.SO_ERROR", 4103); - configuration.config("rbx.platform.socket.SO_GET_FILTER", 0); configuration.config("rbx.platform.socket.SO_KEEPALIVE", 8); configuration.config("rbx.platform.socket.SO_LINGER", 128); - configuration.config("rbx.platform.socket.SO_LOCK_FILTER", 0); - configuration.config("rbx.platform.socket.SO_MARK", 0); - configuration.config("rbx.platform.socket.SO_MAX_PACING_RATE", 0); - configuration.config("rbx.platform.socket.SO_NOFCS", 0); - configuration.config("rbx.platform.socket.SO_NO_CHECK", 0); configuration.config("rbx.platform.socket.SO_OOBINLINE", 256); - configuration.config("rbx.platform.socket.SO_PASSCRED", 0); - configuration.config("rbx.platform.socket.SO_PASSSEC", 0); - configuration.config("rbx.platform.socket.SO_PEEK_OFF", 0); - configuration.config("rbx.platform.socket.SO_PEERCRED", 0); - configuration.config("rbx.platform.socket.SO_PEERNAME", 0); - configuration.config("rbx.platform.socket.SO_PEERSEC", 0); - configuration.config("rbx.platform.socket.SO_PRIORITY", 0); - configuration.config("rbx.platform.socket.SO_PROTOCOL", 0); configuration.config("rbx.platform.socket.SO_RCVBUF", 4098); - configuration.config("rbx.platform.socket.SO_RCVBUFFORCE", 0); configuration.config("rbx.platform.socket.SO_RCVLOWAT", 4100); configuration.config("rbx.platform.socket.SO_RCVTIMEO", 4102); configuration.config("rbx.platform.socket.SO_REUSEADDR", 4); configuration.config("rbx.platform.socket.SO_REUSEPORT", 4110); - configuration.config("rbx.platform.socket.SO_RXQ_OVFL", 0); - configuration.config("rbx.platform.socket.SO_SECURITY_AUTHENTICATION", 0); - configuration.config("rbx.platform.socket.SO_SECURITY_ENCRYPTION_NETWORK", 0); - configuration.config("rbx.platform.socket.SO_SECURITY_ENCRYPTION_TRANSPORT", 0); - configuration.config("rbx.platform.socket.SO_SELECT_ERR_QUEUE", 0); configuration.config("rbx.platform.socket.SO_SNDBUF", 4097); - configuration.config("rbx.platform.socket.SO_SNDBUFFORCE", 0); configuration.config("rbx.platform.socket.SO_SNDLOWAT", 4099); configuration.config("rbx.platform.socket.SO_SNDTIMEO", 4101); configuration.config("rbx.platform.socket.SO_TIMESTAMP", 4115); - configuration.config("rbx.platform.socket.SO_TIMESTAMPING", 0); - configuration.config("rbx.platform.socket.SO_TIMESTAMPNS", 0); configuration.config("rbx.platform.socket.SO_TYPE", 4104); - configuration.config("rbx.platform.socket.SO_WIFI_STATUS", 0); configuration.config("rbx.platform.socket.TCP_CONGESTION", 35); - configuration.config("rbx.platform.socket.TCP_COOKIE_TRANSACTIONS", 0); configuration.config("rbx.platform.socket.TCP_CORK", 24); - configuration.config("rbx.platform.socket.TCP_DEFER_ACCEPT", 0); - configuration.config("rbx.platform.socket.TCP_FASTOPEN", 0); configuration.config("rbx.platform.socket.TCP_INFO", 34); - configuration.config("rbx.platform.socket.TCP_KEEPCNT", 0); - configuration.config("rbx.platform.socket.TCP_KEEPIDLE", 0); - configuration.config("rbx.platform.socket.TCP_KEEPINTVL", 0); configuration.config("rbx.platform.socket.TCP_LINGER2", 28); configuration.config("rbx.platform.socket.TCP_MAXSEG", 2); configuration.config("rbx.platform.socket.TCP_MD5SIG", 36); configuration.config("rbx.platform.socket.TCP_NODELAY", 1); - configuration.config("rbx.platform.socket.TCP_QUEUE_SEQ", 0); - configuration.config("rbx.platform.socket.TCP_QUICKACK", 0); - configuration.config("rbx.platform.socket.TCP_REPAIR", 0); - configuration.config("rbx.platform.socket.TCP_REPAIR_OPTIONS", 0); - configuration.config("rbx.platform.socket.TCP_REPAIR_QUEUE", 0); - configuration.config("rbx.platform.socket.TCP_SYNCNT", 0); - configuration.config("rbx.platform.socket.TCP_THIN_DUPACK", 0); - configuration.config("rbx.platform.socket.TCP_THIN_LINEAR_TIMEOUTS", 0); - configuration.config("rbx.platform.socket.TCP_TIMESTAMP", 0); - configuration.config("rbx.platform.socket.TCP_USER_TIMEOUT", 0); - configuration.config("rbx.platform.socket.TCP_WINDOW_CLAMP", 0); - configuration.config("rbx.platform.socket.UDP_CORK", 0); configuration.config("rbx.platform.socket.SOMAXCONN", 128); configuration.config("rbx.platform.process.EXIT_SUCCESS", 0); configuration.config("rbx.platform.process.EXIT_FAILURE", 1); @@ -606,17 +447,8 @@ public static void load(RubiniusConfiguration configuration, RubyContext context configuration.config("rbx.platform.process.RLIMIT_DATA", 2); configuration.config("rbx.platform.process.RLIMIT_STACK", 3); configuration.config("rbx.platform.process.RLIMIT_CORE", 4); - configuration.config("rbx.platform.process.RLIMIT_RSS", 0); - configuration.config("rbx.platform.process.RLIMIT_NPROC", 0); configuration.config("rbx.platform.process.RLIMIT_NOFILE", 5); - configuration.config("rbx.platform.process.RLIMIT_MEMLOCK", 0); configuration.config("rbx.platform.process.RLIMIT_AS", 6); - configuration.config("rbx.platform.process.RLIMIT_SBSIZE", 0); - configuration.config("rbx.platform.process.RLIMIT_RTPRIO", 0); - configuration.config("rbx.platform.process.RLIMIT_RTTIME", 0); - configuration.config("rbx.platform.process.RLIMIT_SIGPENDING", 0); - configuration.config("rbx.platform.process.RLIMIT_MSGQUEUE", 0); - configuration.config("rbx.platform.process.RLIMIT_NICE", 0); configuration.config("rbx.platform.process.RLIM_INFINITY", newBignum(context, "18446744073709551613")); configuration.config("rbx.platform.process.RLIM_SAVED_MAX", newBignum(context, "18446744073709551614")); configuration.config("rbx.platform.process.RLIM_SAVED_CUR", newBignum(context, "18446744073709551615")); @@ -653,17 +485,8 @@ public static void load(RubiniusConfiguration configuration, RubyContext context configuration.config("rbx.platform.signal.SIGUSR1", 16); configuration.config("rbx.platform.signal.SIGUSR2", 17); configuration.config("rbx.platform.signal.SIGLOST", 37); - configuration.config("rbx.platform.signal.SIGMSG", 0); configuration.config("rbx.platform.signal.SIGPWR", 19); configuration.config("rbx.platform.signal.SIGPOLL", 22); - configuration.config("rbx.platform.signal.SIGDANGER", 0); - configuration.config("rbx.platform.signal.SIGMIGRATE", 0); - configuration.config("rbx.platform.signal.SIGPRE", 0); - configuration.config("rbx.platform.signal.SIGGRANT", 0); - configuration.config("rbx.platform.signal.SIGRETRACT", 0); - configuration.config("rbx.platform.signal.SIGSOUND", 0); - configuration.config("rbx.platform.signal.SIGINFO", 0); - configuration.config("rbx.platform.zlib.ZLIB_VERSION", string(context, "1.2.8-T4mods")); configuration.config("rbx.platform.dlopen.RTLD_LAZY", 1); configuration.config("rbx.platform.dlopen.RTLD_NOW", 2); configuration.config("rbx.platform.dlopen.RTLD_LOCAL", 0); @@ -705,6 +528,7 @@ public static void load(RubiniusConfiguration configuration, RubyContext context configuration.config("rbx.platform.typedef.ushort_t", string(context, "ushort")); configuration.config("rbx.platform.typedef.uint_t", string(context, "uint")); configuration.config("rbx.platform.typedef.ulong_t", string(context, "ulong")); + configuration.config("rbx.platform.typedef.caddr_t", string(context, "string")); configuration.config("rbx.platform.typedef.daddr_t", string(context, "long")); configuration.config("rbx.platform.typedef.cnt_t", string(context, "short")); configuration.config("rbx.platform.typedef.ptrdiff_t", string(context, "long")); @@ -714,6 +538,8 @@ public static void load(RubiniusConfiguration configuration, RubyContext context configuration.config("rbx.platform.typedef.use_t", string(context, "uchar")); configuration.config("rbx.platform.typedef.sysid_t", string(context, "short")); configuration.config("rbx.platform.typedef.index_t", string(context, "short")); + configuration.config("rbx.platform.typedef.timeout_id_t", string(context, "pointer")); + configuration.config("rbx.platform.typedef.bufcall_id_t", string(context, "pointer")); configuration.config("rbx.platform.typedef.off_t", string(context, "long")); configuration.config("rbx.platform.typedef.off64_t", string(context, "long")); configuration.config("rbx.platform.typedef.ino_t", string(context, "ulong")); @@ -785,8 +611,10 @@ public static void load(RubiniusConfiguration configuration, RubyContext context configuration.config("rbx.platform.typedef.memtime_sec_t", string(context, "long_long")); configuration.config("rbx.platform.typedef.sa_family_t", string(context, "ushort")); configuration.config("rbx.platform.typedef.socklen_t", string(context, "uint")); + configuration.config("rbx.platform.typedef.Psocklen_t", string(context, "pointer")); configuration.config("rbx.platform.typedef.nfds_t", string(context, "ulong")); configuration.config("rbx.platform.typedef.disp_lock_t", string(context, "uint")); + configuration.config("rbx.platform.typedef.)", string(context, "pointer")); configuration.config("rbx.platform.typedef.model_t", string(context, "uint")); configuration.config("rbx.platform.typedef.in_port_t", string(context, "ushort")); configuration.config("rbx.platform.typedef.in_addr_t", string(context, "uint")); @@ -794,4 +622,5 @@ public static void load(RubiniusConfiguration configuration, RubyContext context configuration.config("rbx.platform.typedef.rlim_t", string(context, "ulong")); configuration.config("rbx.platform.typedef.rlim64_t", string(context, "ulong_long")); } + } diff --git a/src/main/ruby/core/configuration.rb b/src/main/ruby/core/configuration.rb index 9d4b14e869de..00f0b8b31330 100644 --- a/src/main/ruby/core/configuration.rb +++ b/src/main/ruby/core/configuration.rb @@ -51,10 +51,16 @@ def section(section) end end - def [](name) + def lookup(name) get_variable(name) end + def [](name) + value = get_variable(name) + raise KeyError, "key #{name} not found" if value.nil? + value + end + alias_method :get, :[] end diff --git a/src/main/ruby/core/file.rb b/src/main/ruby/core/file.rb index 3ea1c5379ed8..993f7ce02bca 100644 --- a/src/main/ruby/core/file.rb +++ b/src/main/ruby/core/file.rb @@ -68,8 +68,8 @@ module Constants NONBLOCK = Rubinius::Config['rbx.platform.file.O_NONBLOCK'] SYNC = Rubinius::Config['rbx.platform.file.O_SYNC'] - if Rubinius::Config['rbx.platform.file.O_TMPFILE'] - TMPFILE = Rubinius::Config['rbx.platform.file.O_TMPFILE'] + if value = Rubinius::Config.lookup('rbx.platform.file.O_TMPFILE') + TMPFILE = value end # TODO: these flags should probably be imported from Platform diff --git a/src/main/ruby/core/posix.rb b/src/main/ruby/core/posix.rb index a60e70fa5d8f..e51c3625da8c 100644 --- a/src/main/ruby/core/posix.rb +++ b/src/main/ruby/core/posix.rb @@ -40,7 +40,7 @@ module Truffle::POSIX def self.to_nfi_type(type) if found = TYPES[type] found - elsif typedef = Rubinius::Config["rbx.platform.typedef.#{type}"] + elsif typedef = Rubinius::Config.lookup("rbx.platform.typedef.#{type}") TYPES[type] = to_nfi_type(typedef.to_sym) else TYPES[type] = type diff --git a/src/main/ruby/core/process.rb b/src/main/ruby/core/process.rb index 19ab2145f54c..07a5deb11d10 100644 --- a/src/main/ruby/core/process.rb +++ b/src/main/ruby/core/process.rb @@ -50,15 +50,16 @@ module Constants RLIMIT_CPU = Rubinius::Config['rbx.platform.process.RLIMIT_CPU'] RLIMIT_DATA = Rubinius::Config['rbx.platform.process.RLIMIT_DATA'] RLIMIT_FSIZE = Rubinius::Config['rbx.platform.process.RLIMIT_FSIZE'] - RLIMIT_MEMLOCK = Rubinius::Config['rbx.platform.process.RLIMIT_MEMLOCK'] RLIMIT_NOFILE = Rubinius::Config['rbx.platform.process.RLIMIT_NOFILE'] - RLIMIT_NPROC = Rubinius::Config['rbx.platform.process.RLIMIT_NPROC'] - RLIMIT_RSS = Rubinius::Config['rbx.platform.process.RLIMIT_RSS'] - RLIMIT_SBSIZE = Rubinius::Config['rbx.platform.process.RLIMIT_SBSIZE'] RLIMIT_STACK = Rubinius::Config['rbx.platform.process.RLIMIT_STACK'] - has_rlimit_rtprio = Rubinius::Config['rbx.platform.process.RLIMIT_RTPRIO'] - if has_rlimit_rtprio + %i[RLIMIT_MEMLOCK RLIMIT_NPROC RLIMIT_RSS RLIMIT_SBSIZE].each do |limit| + if value = Rubinius::Config.lookup("rbx.platform.process.#{limit}") + const_set limit, value + end + end + + if Rubinius::Config.lookup('rbx.platform.process.RLIMIT_RTPRIO') RLIMIT_RTPRIO = Rubinius::Config['rbx.platform.process.RLIMIT_RTPRIO'] RLIMIT_RTTIME = Rubinius::Config['rbx.platform.process.RLIMIT_RTTIME'] RLIMIT_SIGPENDING = Rubinius::Config['rbx.platform.process.RLIMIT_SIGPENDING'] diff --git a/src/main/ruby/core/stat.rb b/src/main/ruby/core/stat.rb index 27dc0c5786dd..a27402743b0b 100644 --- a/src/main/ruby/core/stat.rb +++ b/src/main/ruby/core/stat.rb @@ -66,7 +66,6 @@ class Buffer < Rubinius::FFI::Struct S_IFREG = Rubinius::Config['rbx.platform.file.S_IFREG'] S_IFLNK = Rubinius::Config['rbx.platform.file.S_IFLNK'] S_IFSOCK = Rubinius::Config['rbx.platform.file.S_IFSOCK'] - S_IFWHT = Rubinius::Config['rbx.platform.file.S_IFWHT'] S_ISUID = Rubinius::Config['rbx.platform.file.S_ISUID'] S_ISGID = Rubinius::Config['rbx.platform.file.S_ISGID'] S_ISVTX = Rubinius::Config['rbx.platform.file.S_ISVTX'] diff --git a/src/main/ruby/core/truffle/ffi/ffi_struct.rb b/src/main/ruby/core/truffle/ffi/ffi_struct.rb index 0797ab29689a..b44f368975fb 100644 --- a/src/main/ruby/core/truffle/ffi/ffi_struct.rb +++ b/src/main/ruby/core/truffle/ffi/ffi_struct.rb @@ -198,7 +198,7 @@ def self.config(base, *fields) field = field.to_sym offset = Rubinius::Config["#{base}.#{field}.offset"] size = Rubinius::Config["#{base}.#{field}.size"] - type = Rubinius::Config["#{base}.#{field}.type"] + type = Rubinius::Config.lookup("#{base}.#{field}.type") type = type ? type.to_sym : FFI.size_to_type(size) code = FFI.find_type type diff --git a/tool/generate-native-config.rb b/tool/generate-native-config.rb new file mode 100644 index 000000000000..9bf560113c0e --- /dev/null +++ b/tool/generate-native-config.rb @@ -0,0 +1,705 @@ +# Copyright (c) 2017 Oracle and/or its affiliates. All rights reserved. This +# code is released under a tri EPL/GPL/LGPL license. You can use it, +# redistribute it and/or modify it under the terms of the: +# +# Eclipse Public License version 1.0 +# GNU General Public License version 2 +# GNU Lesser General Public License version 2.1 + +# Copyright (c) 2007-2015, Evan Phoenix and contributors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this +# list of conditions and the following disclaimer. +# * Redistributions in binary form must reproduce the above copyright notice +# this list of conditions and the following disclaimer in the documentation +# and/or other materials provided with the distribution. +# * Neither the name of Rubinius nor the names of its contributors +# may be used to endorse or promote products derived from this software +# without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE +# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +# From https://github.com/rubinius/rubinius/blob/v2.71828182/rakelib/platform.rake +# and its required files, but greatly simplified. + +PREFIX = 'rbx.platform' +ROOT = File.expand_path('../..', __FILE__) +SCRIPT = File.expand_path(__FILE__)[ROOT.size+1..-1] + +EXTRA_CFLAGS = '' + +case RUBY_PLATFORM +when /x86_64-linux/ + PLATFORM_FILE = 'org/truffleruby/platform/linux/LinuxRubiniusConfiguration.java' + EXTRA_CFLAGS << ' -D_GNU_SOURCE' +when /x86_64-darwin/ + PLATFORM_FILE = 'org/truffleruby/platform/darwin/DarwinRubiniusConfiguration.java' +when /sparcv9-solaris/ + PLATFORM_FILE = 'org/truffleruby/platform/solaris/SolarisSparcV9RubiniusConfiguration.java' + ENV['CC'] ||= 'gcc' + # "-m64" forces a 64-bit binary + # "-D_XOPEN_SOURCE=600" tells Solaris to use the SUSv3 feature set + # "-std=gnu99" is required to build with SUSv3 enabled + EXTRA_CFLAGS << ' -std=gnu99 -m64 -D_XOPEN_SOURCE=600 -D__EXTENSIONS__=1' +else + raise "Unknown platform #{RUBY_PLATFORM}" +end + +class ConfigFileHandler + CONFIG_FILE = File.expand_path('../platform.conf', __FILE__) + + def initialize + @file = File.open(CONFIG_FILE, 'wb') + at_exit { @file.close } + end + + def register(key, value) + @file.puts "#{PREFIX}.#{key} = #{value}" + end +end + +class JavaHandler + METHOD_START = "public static void load(RubiniusConfiguration configuration, RubyContext context) {\n" + METHOD_END = " }\n\n}" + INDENT = ' '*8 + + def initialize + project = "#{ROOT}/src/main/java" + java_file = File.join(project, PLATFORM_FILE) + contents = File.read(java_file) + from = contents.index(METHOD_START) + raise "Could not find start in #{java_file}" unless from + to = contents.index(METHOD_END) + raise "Could not find end in #{java_file}" unless to + + @file = File.open(java_file, 'wb') + @file.puts contents[0...from+METHOD_START.length] + @file.puts "#{INDENT}// Generated from #{SCRIPT} on #{RUBY_PLATFORM}" + at_exit do + @file.puts contents[to..-1] + @file.close + end + end + + def register(key, value) + code = case value + when Integer + case value + when (-2**31...2**31) + value + when (-2**63...2**63) + "#{value}L" + else + "newBignum(context, \"#{value}\")" + end + when 'true' + value + else + "string(context, \"#{value}\")" + end + var = "#{PREFIX}.#{key}" + @file.puts "#{INDENT}configuration.config(#{var.inspect}, #{code});" + end +end + +HANDLER = JavaHandler.new + +def run(command) + puts "$ #{command}" + output = `#{command}` + raise "#{command} failed:\m#{output}" unless $?.success? + output +end + +class Generator + def initialize + @includes = [] + end + + def include(header) + @includes << header + end + + def cc + ENV.fetch('CC', 'cc') + end + + def compile_command(source, target) + cflags = "-xc -Wall -Werror#{EXTRA_CFLAGS}" + "#{cc} #{cflags} #{source} -o #{target} 2>&1" + end + + def execute_command(source, target) + target + end + + def compile(file) + target = file[0...-2] + run compile_command(file, target) + begin + run execute_command(file, target) + ensure + File.delete target if File.exist?(target) + end + end + + def generate + file = File.expand_path('../config.c', __FILE__) + begin + File.open(file, 'wb') { |f| source(f) } + analyse(compile(file)) + save + ensure + File.delete(file) + end + end + + def register(key, value) + HANDLER.register(key, value) + end +end + +class StructGenerator < Generator + Field = Struct.new(:name, :type, :offset, :size) + + def initialize(name) + super() + @name = name + @fields = [] + end + + def field(name, type=nil) + @fields << Field.new(name, type) + end + + def source(io) + io.puts '#include ' + @includes.each do |inc| + io.puts "#include <#{inc}>" + end + io.puts "#include \n\n" + + io.puts 'int main(int argc, char **argv) {' + io.puts " struct #{@name} s;" + io.puts %{ printf("sizeof(struct #{@name}) %u\\n", (unsigned int) sizeof(struct #{@name}));} + @fields.each do |field| + io.puts %{ printf("#{field.name} %u %u\\n", } + + "(unsigned int) offsetof(struct #{@name}, #{field.name}), " + + "(unsigned int) sizeof(s.#{field.name}));" + end + io.puts "\n return 0;\n}" + end + + def analyse(output) + output = output.lines + line = output.shift + size = line[/^sizeof\(struct #{@name}\) (\d+)$/, 1] + raise line unless size + @size = Integer(size) + + @fields.each do |field| + line = output.shift + raise line unless line[/^#{field.name} (\d+) (\d+)$/] + field.offset = Integer($1) + field.size = Integer($2) + end + end + + def save + register "#{@name}.sizeof", @size + @fields.each do |field| + register "#{@name}.#{field.name}.offset", field.offset + register "#{@name}.#{field.name}.size", field.size + register "#{@name}.#{field.name}.type", field.type if field.type + end + end +end + +class ConstantsGenerator < Generator + Constant = Struct.new(:name, :format, :cast, :value) + + def initialize(group) + super() + @group = group + @constants = {} + end + + def consts(names, format = '%ld', cast = '(long)') + names.each do |name| + @constants[name] = Constant.new(name, format, cast, nil) + end + end + + def source(io) + io.puts '#include ' + @includes.each do |inc| + io.puts "#include <#{inc}>" + end + io.puts "#include \n\n" + + io.puts 'int main(int argc, char **argv) {' + @constants.each_value do |const| + io.puts <<-EOC + #ifdef #{const.name} + printf("#{const.name} #{const.format}\\n", #{const.cast}#{const.name}); + #endif + EOC + end + io.puts "\n return 0;\n}" + end + + def analyse(output) + output.each_line do |line| + raise line unless line =~ /^(\w+) (.*)$/ + name, value = $1, $2 + value = Integer(value) if /^-?(\d)+$/ =~ value + @constants[name].value = value + end + end + + def save + @constants.each_pair do |name, constant| + if constant.value + register "#{@group}.#{name}", constant.value + end + end + end +end + +class TypesGenerator < Generator + # Maps C types to the C type representations we use + TYPE_MAP = { + 'char' => :char, + 'signed char' => :char, + '__signed char' => :char, + 'unsigned char' => :uchar, + + 'short' => :short, + 'short int' => :short, + 'signed short' => :short, + 'signed short int' => :short, + 'unsigned short' => :ushort, + 'unsigned short int' => :ushort, + + 'int' => :int, + 'signed int' => :int, + 'unsigned int' => :uint, + + 'long' => :long, + 'long int' => :long, + 'signed long' => :long, + 'signed long int' => :long, + 'unsigned long' => :ulong, + 'unsigned long int' => :ulong, + 'long unsigned int' => :ulong, + + 'long long' => :long_long, + 'long long int' => :long_long, + 'signed long long' => :long_long, + 'signed long long int' => :long_long, + 'unsigned long long' => :ulong_long, + 'unsigned long long int' => :ulong_long, + + 'char *' => :string, + 'void *' => :pointer, + } + + def initialize + super() + @typedefs = {} + end + + def source(io) + io.puts '#include ' + io.puts '#include ' + io.puts '#include ' + io.puts '#include ' + end + + def compile_command(source, target) + 'echo typedefs' + end + + def execute_command(source, target) + "#{cc} -E#{EXTRA_CFLAGS} #{source}" + end + + def analyse(output) + output.lines.select { |line| + line =~ /typedef/ + }.reject { |line| + line =~ /\b(union|struct|enum)\b/ + }.each { |line| + line.chomp! + # strip off the starting typedef and ending ; + raise line unless line =~ /^.*typedef\s*(.+)\s*;\s*$/ + parts = $1.split(/\s+/) + + *def_type, final_type = parts + def_type = def_type.join(' ') + + # GCC does mapping with __attribute__ + if line =~ /__attribute__/ + if parts.last =~ /__[QHSD]I__|__word__/ + # final_type is the part before __attribute__ + i = parts.index { |part| part =~ /__attribute__/ } + final_type = parts[i-1] + else + final_type = parts.pop + end + + def_type = case line + when /__QI__/ then 'char' + when /__HI__/ then 'short' + when /__SI__/ then 'int' + when /__DI__/ then 'long long' + when /__word__/ then 'long' + else 'int' + end + + def_type = "unsigned #{def_type}" if line =~ /unsigned/ + end + + if final_type.start_with?('*') + final_type = final_type[1..-1] + def_type = "#{def_type} *" + end + + if resolved = TYPE_MAP[def_type] + # p final_type => resolved + TYPE_MAP[final_type] = resolved + @typedefs[final_type] = resolved + elsif def_type.end_with?('*') + TYPE_MAP[final_type] = :pointer + @typedefs[final_type] = :pointer + else + puts "Ignoring #{line}" + end + } + end + + def save + @typedefs.each_pair { |type, resolved| + unless type.start_with? '_' + register "typedef.#{type}", resolved + end + } + + # The typedef for pthread_t on Darwin is a multiline definition, + # which this script does not handle yet: + # typedef struct _opaque_pthread_t + # *__darwin_pthread_t; + if RUBY_PLATFORM =~ /x86_64-darwin/ + register "typedef.pthread_t", :pointer + end + end +end + +def struct(name) + struct = StructGenerator.new(name) + yield struct + struct.generate +end + +def constants(name) + constants = ConstantsGenerator.new(name) + yield constants + constants.generate +end + +# Structs used by rubysl-socket + +struct 'addrinfo' do |s| + s.include 'sys/socket.h' + s.include 'netdb.h' + s.field :ai_flags, :int + s.field :ai_family, :int + s.field :ai_socktype, :int + s.field :ai_protocol, :int + s.field :ai_addrlen, :int + s.field :ai_addr, :pointer + s.field :ai_canonname, :string + s.field :ai_next, :pointer +end + +struct 'ifaddrs' do |s| + s.include 'sys/types.h' + s.include 'ifaddrs.h' + s.field :ifa_next, :pointer + s.field :ifa_name, :string + s.field :ifa_flags, :int + s.field :ifa_addr, :pointer + s.field :ifa_netmask, :pointer + s.field :ifa_broadaddr, :pointer + s.field :ifa_dstaddr, :pointer +end + +struct 'sockaddr' do |s| + s.include 'sys/socket.h' + s.field :sa_data, :char_array + s.field :sa_family, :sa_family_t +end + +struct 'sockaddr_in' do |s| + s.include 'netinet/in.h' + s.include 'sys/socket.h' + s.include 'fcntl.h' + s.include 'sys/stat.h' + s.field :sin_family, :sa_family_t + s.field :sin_port, :ushort + s.field :sin_addr + s.field :sin_zero, :char_array +end + +struct 'sockaddr_in6' do |s| + s.include 'netinet/in.h' + s.include 'sys/socket.h' + s.include 'fcntl.h' + s.include 'sys/stat.h' + s.field :sin6_family, :sa_family_t + s.field :sin6_port, :ushort + s.field :sin6_flowinfo + s.field :sin6_addr, :char_array + s.field :sin6_scope_id +end + +struct 'sockaddr_un' do |s| + s.include 'sys/un.h' + s.field :sun_family, :sa_family_t + s.field :sun_path, :char_array +end + +struct 'hostent' do |s| + s.include 'netdb.h' + s.field :h_name, :string + s.field :h_aliases, :pointer + s.field :h_addrtype, :int + s.field :h_length, :int + s.field :h_addr_list, :pointer +end + +struct 'linger' do |s| + s.include 'sys/socket.h' + s.field :l_onoff, :int + s.field :l_linger, :int +end + +struct 'iovec' do |s| + s.include 'sys/socket.h' + s.field :iov_base, :pointer + s.field :iov_len, :size_t +end + +struct 'msghdr' do |s| + s.include 'sys/socket.h' + s.field :msg_name, :pointer + s.field :msg_namelen, :int + s.field :msg_iov, :pointer + s.field :msg_iovlen, :size_t + s.field :msg_control, :pointer + s.field :msg_controllen, :size_t + s.field :msg_flags, :int +end + +struct 'servent' do |s| + s.include 'netdb.h' + s.field :s_name, :pointer + s.field :s_aliases, :pointer + s.field :s_port, :int + s.field :s_proto, :pointer +end + +# Constants + +constants 'file' do |cg| + cg.include 'stdio.h' + cg.include 'fcntl.h' + cg.include 'fnmatch.h' + cg.include 'sys/stat.h' + cg.consts %w[ + FNM_CASEFOLD FNM_DOTMATCH FNM_EXTGLOB FNM_NOESCAPE FNM_PATHNAME FNM_SYSCASE + + LOCK_SH LOCK_EX LOCK_NB LOCK_UN + + O_RDONLY O_WRONLY O_RDWR O_CREAT O_EXCL O_NOCTTY O_TRUNC O_APPEND + O_NONBLOCK O_NDELAY O_SYNC + + S_IRUSR S_IWUSR S_IXUSR S_IRGRP S_IWGRP S_IXGRP S_IROTH S_IWOTH S_IXOTH + S_IFMT S_IFIFO S_IFCHR S_IFDIR S_IFBLK S_IFREG S_IFLNK S_IFSOCK S_IFWHT + S_ISUID S_ISGID S_ISVTX + ] +end + +constants 'io' do |cg| + cg.include 'stdio.h' + cg.consts %w[SEEK_SET SEEK_CUR SEEK_END] +end + +# Only constants needed by core are added here +constants 'fcntl' do |cg| + cg.include 'fcntl.h' + cg.consts %w[ + F_GETFL + F_SETFL + O_ACCMODE + F_GETFD + F_SETFD + FD_CLOEXEC + ] +end + +constants 'socket' do |cg| + cg.include 'sys/types.h' + cg.include 'sys/socket.h' + cg.include 'netdb.h' + cg.include 'netinet/in_systm.h' + cg.include 'netinet/tcp.h' + cg.include 'netinet/udp.h' + cg.include 'netinet/in.h' + cg.include 'net/if.h' + + %w[ + APPLETALK AX25 INET INET6 IPX ISDN LOCAL MAX PACKET ROUTE SNA UNIX UNSPEC + ].each do |protocol| + cg.consts %W[AF_#{protocol} PF_#{protocol}] + end + cg.consts %w[PF_KEY] + + cg.consts %w[ + AI_ADDRCONFIG AI_ALL AI_CANONNAME AI_NUMERICHOST + AI_NUMERICSERV AI_PASSIVE AI_V4MAPPED + + EAI_ADDRFAMILY EAI_AGAIN EAI_BADFLAGS EAI_FAIL EAI_FAMILY EAI_MEMORY + EAI_NODATA EAI_NONAME EAI_OVERFLOW EAI_SERVICE EAI_SOCKTYPE EAI_SYSTEM + + IFF_ALLMULTI IFF_AUTOMEDIA IFF_BROADCAST IFF_DEBUG IFF_DYNAMIC + IFF_LOOPBACK IFF_MASTER IFF_MULTICAST IFF_NOARP IFF_NOTRAILERS + IFF_POINTOPOINT IFF_PORTSEL IFF_PROMISC IFF_RUNNING IFF_SLAVE IFF_UP + + IF_NAMESIZE + + INADDR_ALLHOSTS_GROUP INADDR_ANY INADDR_BROADCAST INADDR_LOOPBACK + INADDR_MAX_LOCAL_GROUP INADDR_NONE INADDR_UNSPEC_GROUP + + INET6_ADDRSTRLEN INET_ADDRSTRLEN + + IPPORT_RESERVED IPPORT_USERRESERVED + + IPPROTO_AH IPPROTO_DSTOPTS IPPROTO_EGP IPPROTO_ESP IPPROTO_FRAGMENT + IPPROTO_HOPOPTS IPPROTO_ICMP IPPROTO_ICMPV6 IPPROTO_IDP IPPROTO_IGMP + IPPROTO_IP IPPROTO_IPV6 IPPROTO_NONE IPPROTO_PUP IPPROTO_RAW + IPPROTO_ROUTING IPPROTO_TCP IPPROTO_TP IPPROTO_UDP + + IPV6_CHECKSUM IPV6_DONTFRAG IPV6_DSTOPTS IPV6_HOPLIMIT IPV6_HOPOPTS + IPV6_JOIN_GROUP IPV6_LEAVE_GROUP IPV6_MULTICAST_HOPS IPV6_MULTICAST_IF + IPV6_MULTICAST_LOOP IPV6_NEXTHOP IPV6_PATHMTU IPV6_PKTINFO + IPV6_RECVDSTOPTS IPV6_RECVHOPLIMIT IPV6_RECVHOPOPTS IPV6_RECVPATHMTU + IPV6_RECVPKTINFO IPV6_RECVRTHDR IPV6_RECVTCLASS IPV6_RTHDR + IPV6_RTHDRDSTOPTS IPV6_RTHDR_TYPE_0 IPV6_TCLASS IPV6_UNICAST_HOPS + IPV6_V6ONLY + + IP_ADD_MEMBERSHIP IP_ADD_SOURCE_MEMBERSHIP IP_BLOCK_SOURCE + IP_DEFAULT_MULTICAST_LOOP IP_DEFAULT_MULTICAST_TTL IP_DROP_MEMBERSHIP + IP_DROP_SOURCE_MEMBERSHIP IP_FREEBIND IP_HDRINCL IP_IPSEC_POLICY + IP_MAX_MEMBERSHIPS IP_MINTTL IP_MSFILTER IP_MTU IP_MTU_DISCOVER + IP_MULTICAST_IF IP_MULTICAST_LOOP IP_MULTICAST_TTL IP_OPTIONS IP_PASSSEC + IP_PKTINFO IP_PKTOPTIONS IP_PMTUDISC_DO IP_PMTUDISC_DONT IP_PMTUDISC_WANT + IP_RECVERR IP_RECVOPTS IP_RECVRETOPTS IP_RECVTOS IP_RECVTTL IP_RETOPTS + IP_ROUTER_ALERT IP_TOS IP_TRANSPARENT IP_TTL IP_UNBLOCK_SOURCE + IP_XFRM_POLICY + + MCAST_BLOCK_SOURCE MCAST_EXCLUDE MCAST_INCLUDE MCAST_JOIN_GROUP + MCAST_JOIN_SOURCE_GROUP MCAST_LEAVE_GROUP MCAST_LEAVE_SOURCE_GROUP + MCAST_MSFILTER MCAST_UNBLOCK_SOURCE + + MSG_CONFIRM MSG_CTRUNC MSG_DONTROUTE MSG_DONTWAIT MSG_EOR MSG_ERRQUEUE + MSG_FASTOPEN MSG_FIN MSG_MORE MSG_NOSIGNAL MSG_OOB MSG_PEEK MSG_PROXY + MSG_RST MSG_SYN MSG_TRUNC MSG_WAITALL + + NI_DGRAM NI_MAXHOST NI_MAXSERV NI_NAMEREQD NI_NOFQDN NI_NUMERICHOST + NI_NUMERICSERV + + SCM_CREDENTIALS SCM_RIGHTS SCM_TIMESTAMP SCM_TIMESTAMPING SCM_TIMESTAMPNS + SCM_WIFI_STATUS + + SEEK_CUR SEEK_DATA SEEK_END SEEK_HOLE SEEK_SET + + SHUT_RD SHUT_RDWR SHUT_WR + + SOCK_DGRAM SOCK_PACKET SOCK_RAW SOCK_RDM SOCK_SEQPACKET SOCK_STREAM + + SOL_IP SOL_SOCKET SOL_TCP SOL_UDP + + SO_ACCEPTCONN SO_ATTACH_FILTER SO_BINDTODEVICE SO_BPF_EXTENSIONS + SO_BROADCAST SO_BUSY_POLL SO_DEBUG SO_DETACH_FILTER SO_DOMAIN SO_DONTROUTE + SO_ERROR SO_GET_FILTER SO_KEEPALIVE SO_LINGER SO_LOCK_FILTER SO_MARK + SO_MAX_PACING_RATE SO_NOFCS SO_NO_CHECK SO_OOBINLINE SO_PASSCRED + SO_PASSSEC SO_PEEK_OFF SO_PEERCRED SO_PEERNAME SO_PEERSEC SO_PRIORITY + SO_PROTOCOL SO_RCVBUF SO_RCVBUFFORCE SO_RCVLOWAT SO_RCVTIMEO SO_REUSEADDR + SO_REUSEPORT SO_RXQ_OVFL SO_SECURITY_AUTHENTICATION + SO_SECURITY_ENCRYPTION_NETWORK SO_SECURITY_ENCRYPTION_TRANSPORT + SO_SELECT_ERR_QUEUE SO_SNDBUF SO_SNDBUFFORCE SO_SNDLOWAT SO_SNDTIMEO + SO_TIMESTAMP SO_TIMESTAMPING SO_TIMESTAMPNS SO_TYPE SO_WIFI_STATUS + + TCP_CONGESTION TCP_COOKIE_TRANSACTIONS TCP_CORK TCP_DEFER_ACCEPT + TCP_FASTOPEN TCP_INFO TCP_KEEPCNT TCP_KEEPIDLE TCP_KEEPINTVL TCP_LINGER2 + TCP_MAXSEG TCP_MD5SIG TCP_NODELAY TCP_QUEUE_SEQ TCP_QUICKACK TCP_REPAIR + TCP_REPAIR_OPTIONS TCP_REPAIR_QUEUE TCP_SYNCNT TCP_THIN_DUPACK + TCP_THIN_LINEAR_TIMEOUTS TCP_TIMESTAMP TCP_USER_TIMEOUT TCP_WINDOW_CLAMP + + UDP_CORK + SOMAXCONN + ] +end + +constants 'process' do |cg| + cg.include 'sys/wait.h' + cg.include 'sys/resource.h' + cg.include 'stdlib.h' + + cg.consts %w[ + EXIT_SUCCESS EXIT_FAILURE + WNOHANG WUNTRACED + PRIO_PROCESS PRIO_PGRP PRIO_USER + RLIMIT_CPU RLIMIT_FSIZE RLIMIT_DATA RLIMIT_STACK RLIMIT_CORE RLIMIT_RSS + RLIMIT_NPROC RLIMIT_NOFILE RLIMIT_MEMLOCK RLIMIT_AS RLIMIT_SBSIZE + RLIMIT_RTPRIO RLIMIT_RTTIME RLIMIT_SIGPENDING RLIMIT_MSGQUEUE RLIMIT_NICE + ] + + cg.consts %w[ + RLIM_INFINITY RLIM_SAVED_MAX RLIM_SAVED_CUR + ], '%llu', '(unsigned long long)' +end + +# The constants come from MRI's signal.c. +constants 'signal' do |cg| + cg.include 'signal.h' + cg.include 'sys/signal.h' + cg.consts %w[ + SIGHUP SIGINT SIGQUIT SIGILL SIGTRAP SIGIOT SIGABRT SIGEMT SIGFPE SIGKILL + SIGBUS SIGSEGV SIGSYS SIGPIPE SIGALRM SIGTERM SIGURG SIGSTOP SIGTSTP + SIGCONT SIGCHLD SIGCLD SIGCHLD SIGTTIN SIGTTOU SIGIO SIGXCPU SIGXFSZ + SIGVTALRM SIGPROF SIGWINCH SIGUSR1 SIGUSR2 SIGLOST SIGMSG SIGPWR SIGPOLL + SIGDANGER SIGMIGRATE SIGPRE SIGGRANT SIGRETRACT SIGSOUND SIGINFO + ] +end + +constants 'dlopen' do |cg| + cg.include 'dlfcn.h' + cg.consts %w[RTLD_LAZY RTLD_NOW RTLD_LOCAL RTLD_GLOBAL] +end + +TypesGenerator.new.generate diff --git a/tool/translate_rubinius_config.rb b/tool/translate_rubinius_config.rb deleted file mode 100755 index cd2976cd1bfe..000000000000 --- a/tool/translate_rubinius_config.rb +++ /dev/null @@ -1,47 +0,0 @@ -#!/usr/bin/env ruby - -# Copyright (c) 2015 Oracle and/or its affiliates. All rights reserved. This -# code is released under a tri EPL/GPL/LGPL license. You can use it, -# redistribute it and/or modify it under the terms of the: -# -# Eclipse Public License version 1.0 -# GNU General Public License version 2 -# GNU Lesser General Public License version 2.1 - -=begin -Instructions: -git clone https://github.com/rubinius/rubinius.git -cd rubinius -git checkout v2.71828182 -bundle install -./configure --disable-llvm -# If running on Solaris, use the following instead. "-m64" forces a 64-bit binary. "-D_XOPEN_SOURCE=600" tells Solaris to use the SUSv3 feature set. "-std=gnu99" is required to build with SUSv3 enabled. -# CC="gcc -std=gnu99 -m64 -D_XOPEN_SOURCE=600 -D__EXTENSIONS__=1" ./configure --disable-llvm -bundle exec rake runtime/platform.conf -cd ../truffleruby -ruby tool/translate_rubinius_config.rb ../rubinius/runtime/platform.conf -=end - -puts " // Generated from tool/translate_rubinius_config.rb < ../rubinius/runtime/platform.conf" - -ARGF.each do |line| - next unless /^(?rbx(\.\w+)*) = (?.*)$/ =~ line - code = case value - when "" - 0 - when /^-?\d+$/ - case Integer(value) - when (-2**31...2**31) - value - when (-2**63...2**63) - "#{value}L" - else - "newBignum(context, \"#{value}\")" - end - when "true" - value - else - "string(context, \"#{value}\")" - end - puts " configuration.config(\"#{var}\", #{code});" -end