Skip to content
This repository was archived by the owner on Oct 12, 2022. It is now read-only.

Commit a79bb0e

Browse files
ibuclawdlang-bot
authored andcommitted
freebsd: Don't use versioned symbols with GDC
Support for .symver in the GNU toolchain only came in starting from binutils 2.35, even then, calling such symbols directly is still not supported by gas.
1 parent 1329c5e commit a79bb0e

File tree

5 files changed

+121
-46
lines changed

5 files changed

+121
-46
lines changed

src/core/sys/freebsd/sys/event.d

Lines changed: 16 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -161,13 +161,23 @@ enum
161161
}
162162

163163
int kqueue();
164-
static if (__FreeBSD_version >= 1200000)
165-
pragma(mangle, "kevent@@FBSD_1.5")
164+
165+
version (GNU)
166+
{
166167
int kevent(int kq, const kevent_t *changelist, int nchanges,
167168
kevent_t *eventlist, int nevents,
168169
const timespec *timeout);
170+
}
169171
else
170-
pragma(mangle, "kevent@FBSD_1.0")
171-
int kevent(int kq, const kevent_t *changelist, int nchanges,
172-
kevent_t *eventlist, int nevents,
173-
const timespec *timeout);
172+
{
173+
static if (__FreeBSD_version >= 1200000)
174+
pragma(mangle, "kevent@@FBSD_1.5")
175+
int kevent(int kq, const kevent_t *changelist, int nchanges,
176+
kevent_t *eventlist, int nevents,
177+
const timespec *timeout);
178+
else
179+
pragma(mangle, "kevent@FBSD_1.0")
180+
int kevent(int kq, const kevent_t *changelist, int nchanges,
181+
kevent_t *eventlist, int nevents,
182+
const timespec *timeout);
183+
}

src/core/sys/freebsd/sys/mount.d

Lines changed: 39 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -298,28 +298,47 @@ enum uint VQ_FLAG2000 = 0x2000;
298298
enum uint VQ_FLAG4000 = 0x4000;
299299
enum uint VQ_FLAG8000 = 0x8000;
300300

301-
static if (__FreeBSD_version >= 1200000)
301+
version (GNU)
302302
{
303-
pragma(mangle, "fhstat@FBSD_1.5") int fhstat(const fhandle_t*, stat_t*);
304-
pragma(mangle, "fhstatfs@FBSD_1.5") int fhstatfs(const fhandle_t*, statfs_t*);
305-
pragma(mangle, "fstatfs@FBSD_1.5") int fstatfs(int, statfs_t*);
306-
pragma(mangle, "getfsstat@FBSD_1.5") int getfsstat(statfs_t*, c_long, int);
307-
pragma(mangle, "getmntinfo@FBSD_1.5") int getmntinfo(statfs_t**, int);
308-
pragma(mangle, "statfs@FBSD_1.5") int statfs(const char*, statfs_t*);
303+
int fhopen(const fhandle_t*, int);
304+
int fhstat(const fhandle_t*, stat_t*);
305+
int fhstatfs(const fhandle_t*, statfs_t*);
306+
int fstatfs(int, statfs_t*);
307+
int getfh(const char*, fhandle_t*);
308+
int getfsstat(statfs_t*, c_long, int);
309+
int getmntinfo(statfs_t**, int);
310+
int lgetfh(const char*, fhandle_t*);
311+
int mount(const char*, const char*, int, void*);
312+
//int nmount(iovec*, uint, int);
313+
int statfs(const char*, statfs_t*);
314+
int unmount(const char*, int);
315+
//int getvfsbyname(const char*, xvfsconf*);
309316
}
310317
else
311318
{
312-
pragma(mangle, "fhstat@FBSD_1.0") int fhstat(const fhandle_t*, stat_t*);
313-
pragma(mangle, "fhstatfs@FBSD_1.0") int fhstatfs(const fhandle_t*, statfs_t*);
314-
pragma(mangle, "fstatfs@FBSD_1.0") int fstatfs(int, statfs_t*);
315-
pragma(mangle, "getfsstat@FBSD_1.0") int getfsstat(statfs_t*, c_long, int);
316-
pragma(mangle, "getmntinfo@FBSD_1.0") int getmntinfo(statfs_t**, int);
317-
pragma(mangle, "statfs@FBSD_1.0") int statfs(const char*, statfs_t*);
319+
static if (__FreeBSD_version >= 1200000)
320+
{
321+
pragma(mangle, "fhstat@FBSD_1.5") int fhstat(const fhandle_t*, stat_t*);
322+
pragma(mangle, "fhstatfs@FBSD_1.5") int fhstatfs(const fhandle_t*, statfs_t*);
323+
pragma(mangle, "fstatfs@FBSD_1.5") int fstatfs(int, statfs_t*);
324+
pragma(mangle, "getfsstat@FBSD_1.5") int getfsstat(statfs_t*, c_long, int);
325+
pragma(mangle, "getmntinfo@FBSD_1.5") int getmntinfo(statfs_t**, int);
326+
pragma(mangle, "statfs@FBSD_1.5") int statfs(const char*, statfs_t*);
327+
}
328+
else
329+
{
330+
pragma(mangle, "fhstat@FBSD_1.0") int fhstat(const fhandle_t*, stat_t*);
331+
pragma(mangle, "fhstatfs@FBSD_1.0") int fhstatfs(const fhandle_t*, statfs_t*);
332+
pragma(mangle, "fstatfs@FBSD_1.0") int fstatfs(int, statfs_t*);
333+
pragma(mangle, "getfsstat@FBSD_1.0") int getfsstat(statfs_t*, c_long, int);
334+
pragma(mangle, "getmntinfo@FBSD_1.0") int getmntinfo(statfs_t**, int);
335+
pragma(mangle, "statfs@FBSD_1.0") int statfs(const char*, statfs_t*);
336+
}
337+
pragma(mangle, "fhopen@@FBSD_1.0") int fhopen(const fhandle_t*, int);
338+
pragma(mangle, "getfh@@FBSD_1.0") int getfh(const char*, fhandle_t*);
339+
pragma(mangle, "lgetfh@@FBSD_1.0") int lgetfh(const char*, fhandle_t*);
340+
pragma(mangle, "mount@@FBSD_1.0") int mount(const char*, const char*, int, void*);
341+
//int nmount(iovec*, uint, int);
342+
pragma(mangle, "unmount@@FBSD_1.0") int unmount(const char*, int);
343+
//int getvfsbyname(const char*, xvfsconf*);
318344
}
319-
pragma(mangle, "fhopen@@FBSD_1.0") int fhopen(const fhandle_t*, int);
320-
pragma(mangle, "getfh@@FBSD_1.0") int getfh(const char*, fhandle_t*);
321-
pragma(mangle, "lgetfh@@FBSD_1.0") int lgetfh(const char*, fhandle_t*);
322-
pragma(mangle, "mount@@FBSD_1.0") int mount(const char*, const char*, int, void*);
323-
//int nmount(iovec*, uint, int);
324-
pragma(mangle, "unmount@@FBSD_1.0") int unmount(const char*, int);
325-
//int getvfsbyname(const char*, xvfsconf*);

src/core/sys/posix/dirent.d

Lines changed: 30 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -186,10 +186,17 @@ else version (FreeBSD)
186186

187187
alias void* DIR;
188188

189-
static if (__FreeBSD_version >= 1200000)
190-
pragma(mangle, "readdir@FBSD_1.5") dirent* readdir(DIR*);
189+
version (GNU)
190+
{
191+
dirent* readdir(DIR*);
192+
}
191193
else
192-
pragma(mangle, "readdir@FBSD_1.0") dirent* readdir(DIR*);
194+
{
195+
static if (__FreeBSD_version >= 1200000)
196+
pragma(mangle, "readdir@FBSD_1.5") dirent* readdir(DIR*);
197+
else
198+
pragma(mangle, "readdir@FBSD_1.0") dirent* readdir(DIR*);
199+
}
193200
}
194201
else version (NetBSD)
195202
{
@@ -507,10 +514,17 @@ else version (Darwin)
507514
}
508515
else version (FreeBSD)
509516
{
510-
static if (__FreeBSD_version >= 1200000)
511-
pragma(mangle, "readdir_r@FBSD_1.5") int readdir_r(DIR*, dirent*, dirent**);
517+
version (GNU)
518+
{
519+
int readdir_r(DIR*, dirent*, dirent**);
520+
}
512521
else
513-
pragma(mangle, "readdir_r@FBSD_1.0") int readdir_r(DIR*, dirent*, dirent**);
522+
{
523+
static if (__FreeBSD_version >= 1200000)
524+
pragma(mangle, "readdir_r@FBSD_1.5") int readdir_r(DIR*, dirent*, dirent**);
525+
else
526+
pragma(mangle, "readdir_r@FBSD_1.0") int readdir_r(DIR*, dirent*, dirent**);
527+
}
514528
}
515529
else version (DragonFlyBSD)
516530
{
@@ -577,8 +591,16 @@ version (CRuntime_Glibc)
577591
}
578592
else version (FreeBSD)
579593
{
580-
pragma(mangle, "seekdir@@FBSD_1.0") void seekdir(DIR*, c_long);
581-
pragma(mangle, "telldir@@FBSD_1.0") c_long telldir(DIR*);
594+
version (GNU)
595+
{
596+
void seekdir(DIR*, c_long);
597+
c_long telldir(DIR*);
598+
}
599+
else
600+
{
601+
pragma(mangle, "seekdir@@FBSD_1.0") void seekdir(DIR*, c_long);
602+
pragma(mangle, "telldir@@FBSD_1.0") c_long telldir(DIR*);
603+
}
582604
}
583605
else version (NetBSD)
584606
{

src/core/sys/posix/sys/stat.d

Lines changed: 26 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -2278,17 +2278,26 @@ else version (Darwin)
22782278
}
22792279
else version (FreeBSD)
22802280
{
2281-
static if (__FreeBSD_version >= INO64_FIRST)
2281+
version (GNU)
22822282
{
2283-
pragma(mangle, "fstat@FBSD_1.5") int fstat(int, stat_t*);
2284-
pragma(mangle, "lstat@FBSD_1.5") int lstat(const scope char*, stat_t*);
2285-
pragma(mangle, "stat@FBSD_1.5") int stat(const scope char*, stat_t*);
2283+
int fstat(int, stat_t*);
2284+
int lstat(const scope char*, stat_t*);
2285+
int stat(const scope char*, stat_t*);
22862286
}
22872287
else
22882288
{
2289-
pragma(mangle, "fstat@FBSD_1.0") int fstat(int, stat_t*);
2290-
pragma(mangle, "lstat@FBSD_1.0") int lstat(const scope char*, stat_t*);
2291-
pragma(mangle, "stat@FBSD_1.0") int stat(const scope char*, stat_t*);
2289+
static if (__FreeBSD_version >= INO64_FIRST)
2290+
{
2291+
pragma(mangle, "fstat@FBSD_1.5") int fstat(int, stat_t*);
2292+
pragma(mangle, "lstat@FBSD_1.5") int lstat(const scope char*, stat_t*);
2293+
pragma(mangle, "stat@FBSD_1.5") int stat(const scope char*, stat_t*);
2294+
}
2295+
else
2296+
{
2297+
pragma(mangle, "fstat@FBSD_1.0") int fstat(int, stat_t*);
2298+
pragma(mangle, "lstat@FBSD_1.0") int lstat(const scope char*, stat_t*);
2299+
pragma(mangle, "stat@FBSD_1.0") int stat(const scope char*, stat_t*);
2300+
}
22922301
}
22932302
}
22942303
else version (NetBSD)
@@ -2409,10 +2418,17 @@ else version (FreeBSD)
24092418
enum S_IFLNK = 0xA000; // octal 0120000
24102419
enum S_IFSOCK = 0xC000; // octal 0140000
24112420

2412-
static if (__FreeBSD_version >= INO64_FIRST)
2413-
pragma(mangle, "mknod@FBSD_1.5") int mknod(const scope char*, mode_t, dev_t);
2421+
version (GNU)
2422+
{
2423+
int mknod(const scope char*, mode_t, dev_t);
2424+
}
24142425
else
2415-
pragma(mangle, "mknod@FBSD_1.0") int mknod(const scope char*, mode_t, dev_t);
2426+
{
2427+
static if (__FreeBSD_version >= INO64_FIRST)
2428+
pragma(mangle, "mknod@FBSD_1.5") int mknod(const scope char*, mode_t, dev_t);
2429+
else
2430+
pragma(mangle, "mknod@FBSD_1.0") int mknod(const scope char*, mode_t, dev_t);
2431+
}
24162432
}
24172433
else version (NetBSD)
24182434
{

src/core/sys/posix/sys/statvfs.d

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -278,8 +278,16 @@ else version (FreeBSD)
278278
enum uint ST_RDONLY = 0x1;
279279
enum uint ST_NOSUID = 0x2;
280280

281-
pragma(mangle, "fstatvfs@FBSD_1.0") int fstatvfs(int, statvfs_t*);
282-
pragma(mangle, "statvfs@FBSD_1.0") int statvfs(const char*, statvfs_t*);
281+
version (GNU)
282+
{
283+
int fstatvfs(int, statvfs_t*);
284+
int statvfs(const char*, statvfs_t*);
285+
}
286+
else
287+
{
288+
pragma(mangle, "fstatvfs@FBSD_1.0") int fstatvfs(int, statvfs_t*);
289+
pragma(mangle, "statvfs@FBSD_1.0") int statvfs(const char*, statvfs_t*);
290+
}
283291
}
284292
else
285293
{

0 commit comments

Comments
 (0)