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

Commit 25559f5

Browse files
authored
Merge pull request #2402 from ibuclaw/hppaport
Add support for HPPA to glibc/linux bindings merged-on-behalf-of: Petar Kirov <ZombineDev@users.noreply.github.com>
2 parents 2ee8773 + 6e495f5 commit 25559f5

File tree

17 files changed

+460
-0
lines changed

17 files changed

+460
-0
lines changed

src/core/stdc/errno.d

Lines changed: 107 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ else version (WatchOS)
2525

2626
version (ARM) version = ARM_Any;
2727
version (AArch64) version = ARM_Any;
28+
version (HPPA) version = HPPA_Any;
2829
version (MIPS32) version = MIPS_Any;
2930
version (MIPS64) version = MIPS_Any;
3031
version (PPC) version = PPC_Any;
@@ -454,6 +455,112 @@ else version (linux)
454455
enum ERFKILL = 132; ///
455456
enum EHWPOISON = 133; ///
456457
}
458+
else version (HPPA_Any)
459+
{
460+
enum ENOMSG = 35; ///
461+
enum EIDRM = 36; ///
462+
enum ECHRNG = 37; ///
463+
enum EL2NSYNC = 38; ///
464+
enum EL3HLT = 39; ///
465+
enum EL3RST = 40; ///
466+
enum ELNRNG = 41; ///
467+
enum EUNATCH = 42; ///
468+
enum ENOCSI = 43; ///
469+
enum EL2HLT = 44; ///
470+
enum EDEADLK = 45; ///
471+
enum EDEADLOCK = EDEADLK; ///
472+
enum ENOLCK = 46; ///
473+
enum EILSEQ = 47; ///
474+
enum ENONET = 50; ///
475+
enum ENODATA = 51; ///
476+
enum ETIME = 52; ///
477+
enum ENOSR = 53; ///
478+
enum ENOSTR = 54; ///
479+
enum ENOPKG = 55; ///
480+
enum ENOLINK = 57; ///
481+
enum EADV = 58; ///
482+
enum ESRMNT = 59; ///
483+
enum ECOMM = 60; ///
484+
enum EPROTO = 61; ///
485+
enum EMULTIHOP = 64; ///
486+
enum EDOTDOT = 66; ///
487+
enum EBADMSG = 67; ///
488+
enum EUSERS = 68; ///
489+
enum EDQUOT = 69; ///
490+
enum ESTALE = 70; ///
491+
enum EREMOTE = 71; ///
492+
enum EOVERFLOW = 72; ///
493+
enum EBADE = 160; ///
494+
enum EBADR = 161; ///
495+
enum EXFULL = 162; ///
496+
enum ENOANO = 163; ///
497+
enum EBADRQC = 164; ///
498+
enum EBADSLT = 165; ///
499+
enum EBFONT = 166; ///
500+
enum ENOTUNIQ = 167; ///
501+
enum EBADFD = 168; ///
502+
enum EREMCHG = 169; ///
503+
enum ELIBACC = 170; ///
504+
enum ELIBBAD = 171; ///
505+
enum ELIBSCN = 172; ///
506+
enum ELIBMAX = 173; ///
507+
enum ELIBEXEC = 174; ///
508+
enum ERESTART = 175; ///
509+
enum ESTRPIPE = 176; ///
510+
enum EUCLEAN = 177; ///
511+
enum ENOTNAM = 178; ///
512+
enum ENAVAIL = 179; ///
513+
enum EISNAM = 180; ///
514+
enum EREMOTEIO = 181; ///
515+
enum ENOMEDIUM = 182; ///
516+
enum EMEDIUMTYPE = 183; ///
517+
enum ENOKEY = 184; ///
518+
enum EKEYEXPIRED = 185; ///
519+
enum EKEYREVOKED = 186; ///
520+
enum EKEYREJECTED = 187; ///
521+
enum ENOSYM = 215; ///
522+
enum ENOTSOCK = 216; ///
523+
enum EDESTADDRREQ = 217; ///
524+
enum EMSGSIZE = 218; ///
525+
enum EPROTOTYPE = 219; ///
526+
enum ENOPROTOOPT = 220; ///
527+
enum EPROTONOSUPPORT = 221; ///
528+
enum ESOCKTNOSUPPORT = 221; ///
529+
enum EOPNOTSUPP = 223; ///
530+
enum EPFNOSUPPORT = 224; ///
531+
enum EAFNOSUPPORT = 225; ///
532+
enum EADDRINUSE = 226; ///
533+
enum EADDRNOTAVAIL = 227; ///
534+
enum ENETDOWN = 228; ///
535+
enum ENETUNREACH = 229; ///
536+
enum ENETRESET = 230; ///
537+
enum ECONNABORTED = 231; ///
538+
enum ECONNRESET = 232; ///
539+
enum ENOBUFS = 233; ///
540+
enum EISCONN = 234; ///
541+
enum ENOTCONN = 235; ///
542+
enum ESHUTDOWN = 236; ///
543+
enum ETOOMANYREFS = 237; ///
544+
enum ETIMEDOUT = 238; ///
545+
enum ECONNREFUSED = 239; ///
546+
enum EREFUSED = ECONNREFUSED; ///
547+
enum EREMOTERELEASE = 240; ///
548+
enum EHOSTDOWN = 241; ///
549+
enum EHOSTUNREACH = 242; ///
550+
enum EALREADY = 244; ///
551+
enum EINPROGRESS = 245; ///
552+
enum EWOULDBLOCK = EAGAIN; ///
553+
enum ENOTEMPTY = 247; ///
554+
enum ENAMETOOLONG = 248; ///
555+
enum ELOOP = 249; ///
556+
enum ENOSYS = 251; ///
557+
enum ECANCELLED = 253; ///
558+
enum ECANCELED = ECANCELLED; ///
559+
enum EOWNERDEAD = 254; ///
560+
enum ENOTRECOVERABLE = 255; ///
561+
enum ERFKILL = 256; ///
562+
enum EHWPOISON = 257; ///
563+
}
457564
else version (MIPS_Any)
458565
{
459566
enum ENOMSG = 35; ///

src/core/stdc/fenv.d

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ nothrow:
3030

3131
version (ARM) version = ARM_Any;
3232
version (AArch64) version = ARM_Any;
33+
version (HPPA) version = HPPA_Any;
3334
version (MIPS32) version = MIPS_Any;
3435
version (MIPS64) version = MIPS_Any;
3536
version (PPC) version = PPC_Any;
@@ -93,6 +94,17 @@ version (GNUFP)
9394

9495
alias fexcept_t = ushort;
9596
}
97+
// https://sourceware.org/git/?p=glibc.git;a=blob;f=sysdeps/hppa/bits/fenv.h
98+
else version (HPPA_Any)
99+
{
100+
struct fenv_t
101+
{
102+
uint __status_word;
103+
uint[7] __exception;
104+
}
105+
106+
alias fexcept_t = uint;
107+
}
96108
// https://sourceware.org/git/?p=glibc.git;a=blob;f=sysdeps/mips/bits/fenv.h
97109
else version (MIPS_Any)
98110
{
@@ -593,6 +605,28 @@ else
593605
FE_TOWARDZERO = 0xC00000, ///
594606
}
595607
}
608+
else version (HPPA_Any)
609+
{
610+
// Define bits representing the exception.
611+
enum
612+
{
613+
FE_INEXACT = 0x01, ///
614+
FE_UNDERFLOW = 0x02, ///
615+
FE_OVERFLOW = 0x04, ///
616+
FE_DIVBYZERO = 0x08, ///
617+
FE_INVALID = 0x10, ///
618+
FE_ALL_EXCEPT = 0x1F, ///
619+
}
620+
621+
// The HPPA FPU supports all of the four defined rounding modes.
622+
enum
623+
{
624+
FE_TONEAREST = 0x0, ///
625+
FE_TOWARDZERO = 0x200, ///
626+
FE_UPWARD = 0x400, ///
627+
FE_DOWNWARD = 0x600, ///
628+
}
629+
}
596630
else version (MIPS_Any)
597631
{
598632
// Define bits representing the exception.

src/core/stdc/math.d

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ else version (WatchOS)
2626

2727
version (ARM) version = ARM_Any;
2828
version (AArch64) version = ARM_Any;
29+
version (HPPA) version = HPPA_Any;
2930
version (MIPS32) version = MIPS_Any;
3031
version (MIPS64) version = MIPS_Any;
3132
version (PPC) version = PPC_Any;
@@ -147,6 +148,13 @@ else version (CRuntime_Glibc)
147148
///
148149
enum int FP_ILOGBNAN = int.max;
149150
}
151+
else version (HPPA_Any)
152+
{
153+
///
154+
enum int FP_ILOGB0 = -int.max;
155+
///
156+
enum int FP_ILOGBNAN = int.max;
157+
}
150158
else version (MIPS_Any)
151159
{
152160
///

src/core/sys/linux/dlfcn.d

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ nothrow:
1212

1313
version (ARM) version = ARM_Any;
1414
version (AArch64) version = ARM_Any;
15+
version (HPPA) version = HPPA_Any;
1516
version (MIPS32) version = MIPS_Any;
1617
version (MIPS64) version = MIPS_Any;
1718
version (PPC) version = PPC_Any;
@@ -53,6 +54,30 @@ version (X86_Any)
5354
void _dl_mcount_wrapper_check(void* __selfpc);
5455
}
5556
}
57+
else version (HPPA_Any)
58+
{
59+
// http://sourceware.org/git/?p=glibc.git;a=blob;f=ports/sysdeps/hppa/bits/dlfcn.h
60+
// enum RTLD_LAZY = 0x0001; // POSIX
61+
// enum RTLD_NOW = 0x0002; // POSIX
62+
enum RTLD_BINDING_MASK = 0x3;
63+
enum RTLD_NOLOAD = 0x00004;
64+
enum RTLD_DEEPBIND = 0x00008;
65+
66+
// enum RTLD_GLOBAL = 0x0004; // POSIX
67+
// enum RTLD_LOCAL = 0; // POSIX
68+
enum RTLD_NODELETE = 0x01000;
69+
70+
static if (__USE_GNU)
71+
{
72+
RT DL_CALL_FCT(RT, Args...)(RT function(Args) fctp, auto ref Args args)
73+
{
74+
_dl_mcount_wrapper_check(cast(void*)fctp);
75+
return fctp(args);
76+
}
77+
78+
void _dl_mcount_wrapper_check(void* __selfpc);
79+
}
80+
}
5681
else version (MIPS_Any)
5782
{
5883
// http://sourceware.org/git/?p=glibc.git;a=blob;f=ports/sysdeps/mips/bits/dlfcn.h

src/core/sys/linux/epoll.d

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ nothrow:
1717

1818
version (ARM) version = ARM_Any;
1919
version (AArch64) version = ARM_Any;
20+
version (HPPA) version = HPPA_Any;
2021
version (MIPS32) version = MIPS_Any;
2122
version (MIPS64) version = MIPS_Any;
2223
version (PPC) version = PPC_Any;
@@ -86,6 +87,14 @@ else version (PPC_Any)
8687
epoll_data_t data;
8788
}
8889
}
90+
else version (HPPA_Any)
91+
{
92+
struct epoll_event
93+
{
94+
uint events;
95+
epoll_data_t data;
96+
}
97+
}
8998
else version (MIPS_Any)
9099
{
91100
struct epoll_event

src/core/sys/linux/link.d

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ nothrow:
1111

1212
version (ARM) version = ARM_Any;
1313
version (AArch64) version = ARM_Any;
14+
version (HPPA) version = HPPA_Any;
1415
version (MIPS32) version = MIPS_Any;
1516
version (MIPS64) version = MIPS_Any;
1617
version (PPC) version = PPC_Any;
@@ -34,6 +35,12 @@ version (X86_Any)
3435
alias __WORDSIZE __ELF_NATIVE_CLASS;
3536
alias uint32_t Elf_Symndx;
3637
}
38+
else version (HPPA_Any)
39+
{
40+
// http://sourceware.org/git/?p=glibc.git;a=blob;f=bits/elfclass.h
41+
alias __WORDSIZE __ELF_NATIVE_CLASS;
42+
alias uint32_t Elf_Symndx;
43+
}
3744
else version (MIPS_Any)
3845
{
3946
// http://sourceware.org/git/?p=glibc.git;a=blob;f=bits/elfclass.h

src/core/sys/linux/sys/eventfd.d

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ nothrow:
1414

1515
version (ARM) version = ARM_Any;
1616
version (AArch64) version = ARM_Any;
17+
version (HPPA) version = HPPA_Any;
1718
version (MIPS32) version = MIPS_Any;
1819
version (MIPS64) version = MIPS_Any;
1920
version (PPC) version = PPC_Any;
@@ -48,6 +49,12 @@ version (X86_Any)
4849
enum EFD_CLOEXEC = 0x80000; // octal!2000000
4950
enum EFD_NONBLOCK = 0x800; // octal!4000
5051
}
52+
else version (HPPA_Any)
53+
{
54+
enum EFD_SEMAPHORE = 1;
55+
enum EFD_CLOEXEC = 0x200000; // octal!10000000
56+
enum EFD_NONBLOCK = 0x10004; // octal!00200004
57+
}
5158
else version (MIPS_Any)
5259
{
5360
enum EFD_SEMAPHORE = 1;

src/core/sys/linux/sys/inotify.d

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ nothrow:
1313

1414
version (ARM) version = ARM_Any;
1515
version (AArch64) version = ARM_Any;
16+
version (HPPA) version = HPPA_Any;
1617
version (MIPS32) version = MIPS_Any;
1718
version (MIPS64) version = MIPS_Any;
1819
version (PPC) version = PPC_Any;
@@ -73,6 +74,11 @@ version (X86_Any)
7374
enum IN_CLOEXEC = 0x80000; // octal!2000000
7475
enum IN_NONBLOCK = 0x800; // octal!4000
7576
}
77+
else version (HPPA_Any)
78+
{
79+
enum IN_CLOEXEC = 0x200000; // octal!10000000
80+
enum IN_NONBLOCK = 0x10004; // octal!200004
81+
}
7682
else version (MIPS_Any)
7783
{
7884
enum IN_CLOEXEC = 0x80000; // octal!2000000

src/core/sys/posix/dlfcn.d

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ else version (WatchOS)
2727

2828
version (ARM) version = ARM_Any;
2929
version (AArch64) version = ARM_Any;
30+
version (HPPA) version = HPPA_Any;
3031
version (MIPS32) version = MIPS_Any;
3132
version (MIPS64) version = MIPS_Any;
3233
version (PPC) version = PPC_Any;
@@ -69,6 +70,13 @@ version (CRuntime_Glibc)
6970
enum RTLD_GLOBAL = 0x00100;
7071
enum RTLD_LOCAL = 0x00000;
7172
}
73+
else version (HPPA_Any)
74+
{
75+
enum RTLD_LAZY = 0x0001;
76+
enum RTLD_NOW = 0x0002;
77+
enum RTLD_GLOBAL = 0x0100;
78+
enum RTLD_LOCAL = 0;
79+
}
7280
else version (MIPS_Any)
7381
{
7482
enum RTLD_LAZY = 0x0001;

src/core/sys/posix/fcntl.d

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ else version (WatchOS)
3030

3131
version (ARM) version = ARM_Any;
3232
version (AArch64) version = ARM_Any;
33+
version (HPPA) version = HPPA_Any;
3334
version (MIPS32) version = MIPS_Any;
3435
version (MIPS64) version = MIPS_Any;
3536
version (PPC) version = PPC_Any;
@@ -154,6 +155,19 @@ version (CRuntime_Glibc)
154155
enum O_DSYNC = 0x1000; // octal 010000
155156
enum O_RSYNC = O_SYNC;
156157
}
158+
else version (HPPA_Any)
159+
{
160+
enum O_CREAT = 0x00100; // octal 04000
161+
enum O_EXCL = 0x00400; // octal 0200
162+
enum O_NOCTTY = 0x20000; // octal 0400
163+
enum O_TRUNC = 0x00200; // octal 01000
164+
165+
enum O_APPEND = 0x00008; // octal 010
166+
enum O_NONBLOCK = 0x10004; // octal 0200004
167+
enum O_SYNC = 0x48000; // octal 01100000
168+
enum O_DSYNC = 0x40000; // octal 01000000
169+
enum O_RSYNC = 0x80000; // octal 02000000
170+
}
157171
else version (MIPS_Any)
158172
{
159173
enum O_CREAT = 0x0100;

0 commit comments

Comments
 (0)