Skip to content

Commit 8c23f77

Browse files
committed
freebsdlike: move aio_ and mq_ functions to #[link(name = "rt")]
I just got 'libxul.so: Undefined symbol "mq_close"' when rebuilding Firefox.. How did no one catch this before?? This is correct for both FreeBSD and DragonFly: https://github.com/freebsd/freebsd/blob/master/lib/librt/Symbol.map https://github.com/DragonFlyBSD/DragonFlyBSD/blob/e7ab884bd49753f8884eb597d10d6569a08fa0df/lib/librt/mq.c https://github.com/DragonFlyBSD/DragonFlyBSD/blob/e7ab884bd49753f8884eb597d10d6569a08fa0df/lib/librt/aio.c
1 parent 16f8b94 commit 8c23f77

File tree

1 file changed

+52
-48
lines changed
  • src/unix/bsd/freebsdlike

1 file changed

+52
-48
lines changed

src/unix/bsd/freebsdlike/mod.rs

Lines changed: 52 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -1215,17 +1215,6 @@ extern "C" {
12151215
addrlen: *mut ::socklen_t,
12161216
flags: ::c_int,
12171217
) -> ::c_int;
1218-
pub fn aio_read(aiocbp: *mut aiocb) -> ::c_int;
1219-
pub fn aio_write(aiocbp: *mut aiocb) -> ::c_int;
1220-
pub fn aio_fsync(op: ::c_int, aiocbp: *mut aiocb) -> ::c_int;
1221-
pub fn aio_error(aiocbp: *const aiocb) -> ::c_int;
1222-
pub fn aio_return(aiocbp: *mut aiocb) -> ::ssize_t;
1223-
pub fn aio_suspend(
1224-
aiocb_list: *const *const aiocb,
1225-
nitems: ::c_int,
1226-
timeout: *const ::timespec,
1227-
) -> ::c_int;
1228-
pub fn aio_cancel(fd: ::c_int, aiocbp: *mut aiocb) -> ::c_int;
12291218
pub fn chflags(path: *const ::c_char, flags: ::c_ulong) -> ::c_int;
12301219
pub fn chflagsat(
12311220
fd: ::c_int,
@@ -1311,43 +1300,6 @@ extern "C" {
13111300
mode: ::mode_t,
13121301
dev: dev_t,
13131302
) -> ::c_int;
1314-
pub fn mq_close(mqd: ::mqd_t) -> ::c_int;
1315-
pub fn mq_getattr(mqd: ::mqd_t, attr: *mut ::mq_attr) -> ::c_int;
1316-
pub fn mq_notify(mqd: ::mqd_t, notification: *const ::sigevent)
1317-
-> ::c_int;
1318-
pub fn mq_open(name: *const ::c_char, oflag: ::c_int, ...) -> ::mqd_t;
1319-
pub fn mq_receive(
1320-
mqd: ::mqd_t,
1321-
msg_ptr: *mut ::c_char,
1322-
msg_len: ::size_t,
1323-
msg_prio: *mut ::c_uint,
1324-
) -> ::ssize_t;
1325-
pub fn mq_send(
1326-
mqd: ::mqd_t,
1327-
msg_ptr: *const ::c_char,
1328-
msg_len: ::size_t,
1329-
msg_prio: ::c_uint,
1330-
) -> ::c_int;
1331-
pub fn mq_setattr(
1332-
mqd: ::mqd_t,
1333-
newattr: *const ::mq_attr,
1334-
oldattr: *mut ::mq_attr,
1335-
) -> ::c_int;
1336-
pub fn mq_timedreceive(
1337-
mqd: ::mqd_t,
1338-
msg_ptr: *mut ::c_char,
1339-
msg_len: ::size_t,
1340-
msg_prio: *mut ::c_uint,
1341-
abs_timeout: *const ::timespec,
1342-
) -> ::ssize_t;
1343-
pub fn mq_timedsend(
1344-
mqd: ::mqd_t,
1345-
msg_ptr: *const ::c_char,
1346-
msg_len: ::size_t,
1347-
msg_prio: ::c_uint,
1348-
abs_timeout: *const ::timespec,
1349-
) -> ::c_int;
1350-
pub fn mq_unlink(name: *const ::c_char) -> ::c_int;
13511303
pub fn mincore(
13521304
addr: *const ::c_void,
13531305
len: ::size_t,
@@ -1517,6 +1469,58 @@ extern "C" {
15171469
pub fn ntp_gettime(buf: *mut ntptimeval) -> ::c_int;
15181470
}
15191471

1472+
#[link(name = "rt")]
1473+
extern "C" {
1474+
pub fn aio_read(aiocbp: *mut aiocb) -> ::c_int;
1475+
pub fn aio_write(aiocbp: *mut aiocb) -> ::c_int;
1476+
pub fn aio_fsync(op: ::c_int, aiocbp: *mut aiocb) -> ::c_int;
1477+
pub fn aio_error(aiocbp: *const aiocb) -> ::c_int;
1478+
pub fn aio_return(aiocbp: *mut aiocb) -> ::ssize_t;
1479+
pub fn aio_suspend(
1480+
aiocb_list: *const *const aiocb,
1481+
nitems: ::c_int,
1482+
timeout: *const ::timespec,
1483+
) -> ::c_int;
1484+
pub fn aio_cancel(fd: ::c_int, aiocbp: *mut aiocb) -> ::c_int;
1485+
pub fn mq_close(mqd: ::mqd_t) -> ::c_int;
1486+
pub fn mq_getattr(mqd: ::mqd_t, attr: *mut ::mq_attr) -> ::c_int;
1487+
pub fn mq_notify(mqd: ::mqd_t, notification: *const ::sigevent)
1488+
-> ::c_int;
1489+
pub fn mq_open(name: *const ::c_char, oflag: ::c_int, ...) -> ::mqd_t;
1490+
pub fn mq_receive(
1491+
mqd: ::mqd_t,
1492+
msg_ptr: *mut ::c_char,
1493+
msg_len: ::size_t,
1494+
msg_prio: *mut ::c_uint,
1495+
) -> ::ssize_t;
1496+
pub fn mq_send(
1497+
mqd: ::mqd_t,
1498+
msg_ptr: *const ::c_char,
1499+
msg_len: ::size_t,
1500+
msg_prio: ::c_uint,
1501+
) -> ::c_int;
1502+
pub fn mq_setattr(
1503+
mqd: ::mqd_t,
1504+
newattr: *const ::mq_attr,
1505+
oldattr: *mut ::mq_attr,
1506+
) -> ::c_int;
1507+
pub fn mq_timedreceive(
1508+
mqd: ::mqd_t,
1509+
msg_ptr: *mut ::c_char,
1510+
msg_len: ::size_t,
1511+
msg_prio: *mut ::c_uint,
1512+
abs_timeout: *const ::timespec,
1513+
) -> ::ssize_t;
1514+
pub fn mq_timedsend(
1515+
mqd: ::mqd_t,
1516+
msg_ptr: *const ::c_char,
1517+
msg_len: ::size_t,
1518+
msg_prio: ::c_uint,
1519+
abs_timeout: *const ::timespec,
1520+
) -> ::c_int;
1521+
pub fn mq_unlink(name: *const ::c_char) -> ::c_int;
1522+
}
1523+
15201524
#[link(name = "util")]
15211525
extern "C" {
15221526
pub fn openpty(

0 commit comments

Comments
 (0)