Skip to content

Commit

Permalink
Update specs and libs from ffi gem.
Browse files Browse the repository at this point in the history
  • Loading branch information
headius committed Jan 10, 2020
1 parent a5eb643 commit 3d0cb54
Show file tree
Hide file tree
Showing 16 changed files with 1,432 additions and 1,235 deletions.
1 change: 1 addition & 0 deletions lib/ruby/stdlib/ffi/ffi.rb
Expand Up @@ -43,3 +43,4 @@
require 'ffi/autopointer'
require 'ffi/variadic'
require 'ffi/enum'
require 'ffi/version'
10 changes: 5 additions & 5 deletions lib/ruby/stdlib/ffi/library.rb
Expand Up @@ -47,7 +47,7 @@ def self.map_library_name(lib)

if lib && File.basename(lib) == lib
lib = Platform::LIBPREFIX + lib unless lib =~ /^#{Platform::LIBPREFIX}/
r = Platform::IS_GNU ? "\\.so($|\\.[1234567890]+)" : "\\.#{Platform::LIBSUFFIX}$"
r = Platform::IS_WINDOWS || Platform::IS_MAC ? "\\.#{Platform::LIBSUFFIX}$" : "\\.so($|\\.[1234567890]+)"
lib += ".#{Platform::LIBSUFFIX}" unless lib =~ /#{r}/
end

Expand All @@ -65,16 +65,16 @@ def initialize(function, *libraries)
#
# A basic usage may be:
# require 'ffi'
#
#
# module Hello
# extend FFI::Library
# ffi_lib FFI::Library::LIBC
# attach_function 'puts', [ :string ], :int
# end
#
#
# Hello.puts("Hello, World")
#
#
#
module Library
CURRENT_PROCESS = FFI::CURRENT_PROCESS
LIBC = FFI::Platform::LIBC
Expand All @@ -87,7 +87,7 @@ def self.extended(mod)
raise RuntimeError.new("must only be extended by module") unless mod.kind_of?(Module)
end


# @param [Array] names names of libraries to load
# @return [Array<DynamicLibrary>]
# @raise {LoadError} if a library cannot be opened
Expand Down
11 changes: 4 additions & 7 deletions lib/ruby/stdlib/ffi/platform.rb
Expand Up @@ -46,6 +46,8 @@ module Platform
"netbsd"
when /openbsd/
"openbsd"
when /dragonfly/
"dragonflybsd"
when /sunos|solaris/
"solaris"
when /mingw|mswin/
Expand Down Expand Up @@ -92,9 +94,10 @@ def self.is_os(os)
IS_FREEBSD = is_os("freebsd")
IS_NETBSD = is_os("netbsd")
IS_OPENBSD = is_os("openbsd")
IS_DRAGONFLYBSD = is_os("dragonfly")
IS_SOLARIS = is_os("solaris")
IS_WINDOWS = is_os("windows")
IS_BSD = IS_MAC || IS_FREEBSD || IS_NETBSD || IS_OPENBSD
IS_BSD = IS_MAC || IS_FREEBSD || IS_NETBSD || IS_OPENBSD || IS_DRAGONFLYBSD

# Add the version for known ABI breaks
name_version = "12" if IS_FREEBSD && OSVERSION >= 12 # 64-bit inodes
Expand Down Expand Up @@ -167,12 +170,6 @@ def self.solaris?
def self.unix?
!IS_WINDOWS
end

# Test if current OS is a Linux
# @return [Boolean]
def self.linux?
IS_LINUX
end
end
end

148 changes: 148 additions & 0 deletions lib/ruby/stdlib/ffi/platform/x86_64-dragonflybsd/types.conf
@@ -0,0 +1,148 @@
rbx.platform.typedef.*) = pointer
rbx.platform.typedef.__char16_t = ushort
rbx.platform.typedef.__char32_t = uint
rbx.platform.typedef.__clock_t = ulong
rbx.platform.typedef.__clockid_t = ulong
rbx.platform.typedef.__ct_rune_t = int
rbx.platform.typedef.__fd_mask = ulong
rbx.platform.typedef.__int16_t = short
rbx.platform.typedef.__int32_t = int
rbx.platform.typedef.__int64_t = long
rbx.platform.typedef.__int8_t = char
rbx.platform.typedef.__int_fast16_t = int
rbx.platform.typedef.__int_fast32_t = int
rbx.platform.typedef.__int_fast64_t = long
rbx.platform.typedef.__int_fast8_t = int
rbx.platform.typedef.__int_least16_t = short
rbx.platform.typedef.__int_least32_t = int
rbx.platform.typedef.__int_least64_t = long
rbx.platform.typedef.__int_least8_t = char
rbx.platform.typedef.__intmax_t = long
rbx.platform.typedef.__intptr_t = long
rbx.platform.typedef.__nl_item = int
rbx.platform.typedef.__off_t = long
rbx.platform.typedef.__pid_t = int
rbx.platform.typedef.__ptrdiff_t = long
rbx.platform.typedef.__register_t = long
rbx.platform.typedef.__rlim_t = long
rbx.platform.typedef.__rune_t = int
rbx.platform.typedef.__segsz_t = long
rbx.platform.typedef.__sig_atomic_t = int
rbx.platform.typedef.__size_t = ulong
rbx.platform.typedef.__socklen_t = uint
rbx.platform.typedef.__ssize_t = long
rbx.platform.typedef.__suseconds_t = long
rbx.platform.typedef.__time_t = long
rbx.platform.typedef.__timer_t = int
rbx.platform.typedef.__u_register_t = ulong
rbx.platform.typedef.__uint16_t = ushort
rbx.platform.typedef.__uint32_t = uint
rbx.platform.typedef.__uint64_t = ulong
rbx.platform.typedef.__uint8_t = uchar
rbx.platform.typedef.__uint_fast16_t = uint
rbx.platform.typedef.__uint_fast32_t = uint
rbx.platform.typedef.__uint_fast64_t = ulong
rbx.platform.typedef.__uint_fast8_t = uint
rbx.platform.typedef.__uint_least16_t = ushort
rbx.platform.typedef.__uint_least32_t = uint
rbx.platform.typedef.__uint_least64_t = ulong
rbx.platform.typedef.__uint_least8_t = uchar
rbx.platform.typedef.__uintmax_t = ulong
rbx.platform.typedef.__uintptr_t = ulong
rbx.platform.typedef.__wchar_t = int
rbx.platform.typedef.__wint_t = int
rbx.platform.typedef.blkcnt_t = long
rbx.platform.typedef.blksize_t = long
rbx.platform.typedef.c_caddr_t = pointer
rbx.platform.typedef.caddr_t = string
rbx.platform.typedef.clock_t = ulong
rbx.platform.typedef.clockid_t = ulong
rbx.platform.typedef.cpulock_t = uint
rbx.platform.typedef.daddr_t = int
rbx.platform.typedef.dev_t = uint
rbx.platform.typedef.fixpt_t = uint
rbx.platform.typedef.fsblkcnt_t = ulong
rbx.platform.typedef.fsfilcnt_t = ulong
rbx.platform.typedef.gid_t = uint
rbx.platform.typedef.id_t = long
rbx.platform.typedef.in_addr_t = uint
rbx.platform.typedef.in_port_t = ushort
rbx.platform.typedef.ino_t = ulong
rbx.platform.typedef.int16_t = short
rbx.platform.typedef.int32_t = int
rbx.platform.typedef.int64_t = long
rbx.platform.typedef.int8_t = char
rbx.platform.typedef.int_fast16_t = int
rbx.platform.typedef.int_fast32_t = int
rbx.platform.typedef.int_fast64_t = long
rbx.platform.typedef.int_fast8_t = int
rbx.platform.typedef.int_least16_t = short
rbx.platform.typedef.int_least32_t = int
rbx.platform.typedef.int_least64_t = long
rbx.platform.typedef.int_least8_t = char
rbx.platform.typedef.intmax_t = long
rbx.platform.typedef.intptr_t = long
rbx.platform.typedef.key_t = long
rbx.platform.typedef.lwpid_t = int
rbx.platform.typedef.mode_t = ushort
rbx.platform.typedef.mqd_t = int
rbx.platform.typedef.nlink_t = uint
rbx.platform.typedef.off_t = long
rbx.platform.typedef.pd_entry_t = ulong
rbx.platform.typedef.pdp_entry_t = ulong
rbx.platform.typedef.pid_t = int
rbx.platform.typedef.pml4_entry_t = ulong
rbx.platform.typedef.pt_entry_t = ulong
rbx.platform.typedef.pthread_key_t = int
rbx.platform.typedef.ptrdiff_t = long
rbx.platform.typedef.qaddr_t = pointer
rbx.platform.typedef.quad_t = long
rbx.platform.typedef.register_t = long
rbx.platform.typedef.rlim_t = long
rbx.platform.typedef.sa_family_t = uchar
rbx.platform.typedef.segsz_t = long
rbx.platform.typedef.size_t = ulong
rbx.platform.typedef.socklen_t = uint
rbx.platform.typedef.ssize_t = long
rbx.platform.typedef.suseconds_t = long
rbx.platform.typedef.time_t = long
rbx.platform.typedef.timer_t = int
rbx.platform.typedef.u_char = uchar
rbx.platform.typedef.u_daddr_t = uint
rbx.platform.typedef.u_int = uint
rbx.platform.typedef.u_int16_t = ushort
rbx.platform.typedef.u_int32_t = uint
rbx.platform.typedef.u_int64_t = ulong
rbx.platform.typedef.u_int8_t = uchar
rbx.platform.typedef.u_long = ulong
rbx.platform.typedef.u_quad_t = ulong
rbx.platform.typedef.u_register_t = ulong
rbx.platform.typedef.u_short = ushort
rbx.platform.typedef.uid_t = uint
rbx.platform.typedef.uint = uint
rbx.platform.typedef.uint16_t = ushort
rbx.platform.typedef.uint32_t = uint
rbx.platform.typedef.uint64_t = ulong
rbx.platform.typedef.uint8_t = uchar
rbx.platform.typedef.uint_fast16_t = uint
rbx.platform.typedef.uint_fast32_t = uint
rbx.platform.typedef.uint_fast64_t = ulong
rbx.platform.typedef.uint_fast8_t = uint
rbx.platform.typedef.uint_least16_t = ushort
rbx.platform.typedef.uint_least32_t = uint
rbx.platform.typedef.uint_least64_t = ulong
rbx.platform.typedef.uint_least8_t = uchar
rbx.platform.typedef.uintmax_t = ulong
rbx.platform.typedef.uintptr_t = ulong
rbx.platform.typedef.ulong = ulong
rbx.platform.typedef.unchar = uchar
rbx.platform.typedef.useconds_t = uint
rbx.platform.typedef.ushort = ushort
rbx.platform.typedef.v_caddr_t = pointer
rbx.platform.typedef.vm_offset_t = ulong
rbx.platform.typedef.vm_ooffset_t = long
rbx.platform.typedef.vm_paddr_t = ulong
rbx.platform.typedef.vm_pindex_t = ulong
rbx.platform.typedef.vm_poff_t = ulong
rbx.platform.typedef.vm_size_t = ulong
rbx.platform.typedef.vm_spindex_t = ulong

0 comments on commit 3d0cb54

Please sign in to comment.