Skip to content

Commit 7ad06f6

Browse files
authored
[wasm64] Cast BigInt argument to i64 Number (#17613)
Fix argument type and struct access of various functions on WASM64: system gethostaddr gethostbyname gethostbyname_r getaddrinfo getnameinfo connect bind sendto doStat (internal helper for stat calls) pwrite pread read return value Closes: #17595 Closes: #17620
1 parent c881fde commit 7ad06f6

File tree

3 files changed

+14
-8
lines changed

3 files changed

+14
-8
lines changed

src/library.js

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -347,6 +347,7 @@ mergeInto(LibraryManager.library, {
347347
},
348348

349349
system__deps: ['$setErrNo'],
350+
system__sig: 'ip',
350351
system: function(command) {
351352
#if ENVIRONMENT_MAY_BE_NODE
352353
if (ENVIRONMENT_IS_NODE) {
@@ -1849,7 +1850,7 @@ mergeInto(LibraryManager.library, {
18491850
// note: lots of leaking here!
18501851
gethostbyaddr__deps: ['$DNS', '$getHostByName', '$inetNtop4', '$setErrNo'],
18511852
gethostbyaddr__proxy: 'sync',
1852-
gethostbyaddr__sig: 'iiii',
1853+
gethostbyaddr__sig: 'ipii',
18531854
gethostbyaddr: function (addr, addrlen, type) {
18541855
if (type !== {{{ cDefine('AF_INET') }}}) {
18551856
setErrNo({{{ cDefine('EAFNOSUPPORT') }}});
@@ -1867,7 +1868,7 @@ mergeInto(LibraryManager.library, {
18671868

18681869
gethostbyname__deps: ['$getHostByName'],
18691870
gethostbyname__proxy: 'sync',
1870-
gethostbyname__sig: 'ii',
1871+
gethostbyname__sig: 'pp',
18711872
gethostbyname: function(name) {
18721873
return getHostByName(UTF8ToString(name));
18731874
},
@@ -1895,7 +1896,7 @@ mergeInto(LibraryManager.library, {
18951896

18961897
gethostbyname_r__deps: ['gethostbyname', 'memcpy', 'free'],
18971898
gethostbyname_r__proxy: 'sync',
1898-
gethostbyname_r__sig: 'iiiiiii',
1899+
gethostbyname_r__sig: 'ipppipp',
18991900
gethostbyname_r: function(name, ret, buf, buflen, out, err) {
19001901
var data = _gethostbyname(name);
19011902
_memcpy(ret, data, {{{ C_STRUCTS.hostent.__size__ }}});
@@ -1907,7 +1908,7 @@ mergeInto(LibraryManager.library, {
19071908

19081909
getaddrinfo__deps: ['$Sockets', '$DNS', '$inetPton4', '$inetNtop4', '$inetPton6', '$inetNtop6', '$writeSockaddr'],
19091910
getaddrinfo__proxy: 'sync',
1910-
getaddrinfo__sig: 'iiiii',
1911+
getaddrinfo__sig: 'ipppp',
19111912
getaddrinfo: function(node, service, hint, out) {
19121913
// Note getaddrinfo currently only returns a single addrinfo with ai_next defaulting to NULL. When NULL
19131914
// hints are specified or ai_family set to AF_UNSPEC or ai_socktype or ai_protocol set to 0 then we
@@ -2078,6 +2079,7 @@ mergeInto(LibraryManager.library, {
20782079
},
20792080

20802081
getnameinfo__deps: ['$Sockets', '$DNS', '$readSockaddr'],
2082+
getnameinfo__sig: 'ipipipii',
20812083
getnameinfo: function (sa, salen, node, nodelen, serv, servlen, flags) {
20822084
var info = readSockaddr(sa, salen);
20832085
if (info.errno) {

src/library_syscall.js

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -55,19 +55,19 @@ var SyscallsLibrary = {
5555
{{{ makeSetValue('buf', C_STRUCTS.stat.st_dev, 'stat.dev', 'i32') }}};
5656
{{{ makeSetValue('buf', C_STRUCTS.stat.__st_ino_truncated, 'stat.ino', 'i32') }}};
5757
{{{ makeSetValue('buf', C_STRUCTS.stat.st_mode, 'stat.mode', 'i32') }}};
58-
{{{ makeSetValue('buf', C_STRUCTS.stat.st_nlink, 'stat.nlink', 'i32') }}};
58+
{{{ makeSetValue('buf', C_STRUCTS.stat.st_nlink, 'stat.nlink', SIZE_TYPE) }}};
5959
{{{ makeSetValue('buf', C_STRUCTS.stat.st_uid, 'stat.uid', 'i32') }}};
6060
{{{ makeSetValue('buf', C_STRUCTS.stat.st_gid, 'stat.gid', 'i32') }}};
6161
{{{ makeSetValue('buf', C_STRUCTS.stat.st_rdev, 'stat.rdev', 'i32') }}};
6262
{{{ makeSetValue('buf', C_STRUCTS.stat.st_size, 'stat.size', 'i64') }}};
6363
{{{ makeSetValue('buf', C_STRUCTS.stat.st_blksize, '4096', 'i32') }}};
6464
{{{ makeSetValue('buf', C_STRUCTS.stat.st_blocks, 'stat.blocks', 'i32') }}};
6565
{{{ makeSetValue('buf', C_STRUCTS.stat.st_atim.tv_sec, 'Math.floor(stat.atime.getTime() / 1000)', 'i64') }}};
66-
{{{ makeSetValue('buf', C_STRUCTS.stat.st_atim.tv_nsec, '0', 'i32') }}};
66+
{{{ makeSetValue('buf', C_STRUCTS.stat.st_atim.tv_nsec, '0', SIZE_TYPE) }}};
6767
{{{ makeSetValue('buf', C_STRUCTS.stat.st_mtim.tv_sec, 'Math.floor(stat.mtime.getTime() / 1000)', 'i64') }}};
68-
{{{ makeSetValue('buf', C_STRUCTS.stat.st_mtim.tv_nsec, '0', 'i32') }}};
68+
{{{ makeSetValue('buf', C_STRUCTS.stat.st_mtim.tv_nsec, '0', SIZE_TYPE) }}};
6969
{{{ makeSetValue('buf', C_STRUCTS.stat.st_ctim.tv_sec, 'Math.floor(stat.ctime.getTime() / 1000)', 'i64') }}};
70-
{{{ makeSetValue('buf', C_STRUCTS.stat.st_ctim.tv_nsec, '0', 'i32') }}};
70+
{{{ makeSetValue('buf', C_STRUCTS.stat.st_ctim.tv_nsec, '0', SIZE_TYPE) }}};
7171
{{{ makeSetValue('buf', C_STRUCTS.stat.st_ino, 'stat.ino', 'i64') }}};
7272
return 0;
7373
},
@@ -326,6 +326,7 @@ var SyscallsLibrary = {
326326
return 0;
327327
},
328328
__syscall_connect__deps: ['$getSocketFromFD', '$getSocketAddress'],
329+
__syscall_connect__sig: 'iipi',
329330
__syscall_connect: function(fd, addr, addrlen) {
330331
var sock = getSocketFromFD(fd);
331332
var info = getSocketAddress(addr, addrlen);
@@ -350,6 +351,7 @@ var SyscallsLibrary = {
350351
return newsock.stream.fd;
351352
},
352353
__syscall_bind__deps: ['$getSocketFromFD', '$getSocketAddress'],
354+
__syscall_bind__sig: 'iipi',
353355
__syscall_bind: function(fd, addr, addrlen) {
354356
var sock = getSocketFromFD(fd);
355357
var info = getSocketAddress(addr, addrlen);
@@ -377,6 +379,7 @@ var SyscallsLibrary = {
377379
return msg.buffer.byteLength;
378380
},
379381
__syscall_sendto__deps: ['$getSocketFromFD', '$getSocketAddress'],
382+
__syscall_sendto__sig: 'iipiipi',
380383
__syscall_sendto: function(fd, message, length, flags, addr, addr_len) {
381384
var sock = getSocketFromFD(fd);
382385
var dest = getSocketAddress(addr, addr_len, true);

src/library_wasi.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -288,6 +288,7 @@ var WasiLibrary = {
288288
'$doWritev',
289289
#endif
290290
].concat(i53ConversionDeps),
291+
fd_pwrite__sig: 'iippjp',
291292
fd_pwrite: function(fd, iov, iovcnt, {{{ defineI64Param('offset') }}}, pnum) {
292293
#if SYSCALLS_REQUIRE_FILESYSTEM
293294
{{{ receiveI64ParamAsI53('offset', cDefine('EOVERFLOW')) }}}

0 commit comments

Comments
 (0)