X-Git-Url: http://git.cielonegro.org/gitweb.cgi?p=pkgsrc-ghc.git;a=blobdiff_plain;f=files%2Fcapi-wrappers-linux-x86_64.c;fp=files%2Fcapi-wrappers-linux-x86_64.c;h=0aef3790a82ca7e3d64ba135b8a4d30e4eb86493;hp=0000000000000000000000000000000000000000;hb=0f77a20d07ac42684cc03ecdea0028bea2941488;hpb=af9d73d52d0864b3f8b1ff223e543f9b09e291f7 diff --git a/files/capi-wrappers-linux-x86_64.c b/files/capi-wrappers-linux-x86_64.c new file mode 100644 index 0000000..0aef379 --- /dev/null +++ b/files/capi-wrappers-linux-x86_64.c @@ -0,0 +1,53 @@ +#include "HsFFI.h" +#include +#include +#include +#include +#include +#include + +/* A quick and dirty hack to resurrect -fvia-C from bitrot. + * + * The newest CapiFFI extension doesn't play nice with -fvia-C, + * generating function wrappers without saving them into the .hc + * files. + */ + +int ghc_wrapper_d2kC_fcntl(int fd, int cmd); +int ghc_wrapper_d2kq_fcntl(int filedes, int cmd, long arg); +int ghc_wrapper_d2kb_fcntl(int filedes, int cmd, struct flock* arg); +int ghc_wrapper_d1lS_gettimeofday(struct timeval* tp, struct timezone* tzp); +int ghc_wrapper_d2ir_utime(const char *path, const struct utimbuf *times); +HsInt32 SystemziConsoleziTerminfoziBase_d2dS(StgStablePtr the_stableptr, HsInt32 a1); + +/* c_fcntl_read */ +int ghc_wrapper_d2kC_fcntl(int fd, int cmd) { + return fcntl(fd, cmd); +} + +/* c_fcntl_write */ +int ghc_wrapper_d2kq_fcntl(int fd, int cmd, long arg) { + return fcntl(fd, cmd, arg); +} + +/* c_fcntl_lock */ +int ghc_wrapper_d2kb_fcntl(int fd, int cmd, struct flock* arg) { + return fcntl(fd, cmd, arg); +} + +int ghc_wrapper_d1lS_gettimeofday(struct timeval* tp, struct timezone* tzp) { + return gettimeofday(tp, tzp); +} + +int ghc_wrapper_d2ir_utime(const char *path, const struct utimbuf *times) { + return utime(path, times); +} + +HsInt32 SystemziConsoleziTerminfoziBase_d2dS(StgStablePtr the_stableptr, HsInt32 a1) { + /* The recipe to create this function is somewhere in + * compiler/deSugar/DsForeign.lhs, but... I don't want to bother + * replicating that here. + */ + assert("DO NOT CALL THIS FUNCTION" == NULL); + return -1; +}