From 2cf1ffd0f27488e5aa6fc0374a5238dc494ad83b Mon Sep 17 00:00:00 2001 From: Lefteris Koutsofios Date: Mon, 24 Feb 2020 12:58:22 -0500 Subject: [PATCH] patches to build on freebsd 12 - added cc and ar scripts for freebsd12.amd64 - fix for sfio macro SF_FLAGS also being defined for sendfile(2) in socket.h -- fix is to hide the sendfile(2) macro - defined _STDFILE_DECLARED to handle FILE macro incompatibility - added test in std/features/procfs to deal with freebsd kvm interface -- being different from what AST expects (for ps.c) - fix for std/banner.c to clean up main() definition - changed comment in ar.* scripts to match cc.* scripts --- src/cmd/INIT/ar.freebsd12.amd64 | 6 ++++++ src/cmd/INIT/ar.linux.i386-64 | 2 +- src/cmd/INIT/cc.freebsd12.amd64 | 9 +++++++++ src/cmd/std/banner.c | 3 +-- src/cmd/std/features/procfs | 7 +++++++ src/lib/libast/features/sfio | 2 ++ src/lib/libast/features/wchar | 3 +++ src/lib/libast/include/sfio.h | 7 +++++++ src/lib/libast/sfio/sfhdr.h | 5 +++++ 9 files changed, 41 insertions(+), 3 deletions(-) create mode 100755 src/cmd/INIT/ar.freebsd12.amd64 create mode 100755 src/cmd/INIT/cc.freebsd12.amd64 diff --git a/src/cmd/INIT/ar.freebsd12.amd64 b/src/cmd/INIT/ar.freebsd12.amd64 new file mode 100755 index 000000000..dc34f235e --- /dev/null +++ b/src/cmd/INIT/ar.freebsd12.amd64 @@ -0,0 +1,6 @@ +: linux.i386-64 ar wrapper + +case $1 in +*x*) /usr/bin/ar "$@" ;; +*) /usr/bin/ar U"$@" ;; +esac diff --git a/src/cmd/INIT/ar.linux.i386-64 b/src/cmd/INIT/ar.linux.i386-64 index 0778827ee..dc34f235e 100755 --- a/src/cmd/INIT/ar.linux.i386-64 +++ b/src/cmd/INIT/ar.linux.i386-64 @@ -1,4 +1,4 @@ -: stupid stupid stupid to require a non-standard option for ar to work : 2009-10-06 : +: linux.i386-64 ar wrapper case $1 in *x*) /usr/bin/ar "$@" ;; diff --git a/src/cmd/INIT/cc.freebsd12.amd64 b/src/cmd/INIT/cc.freebsd12.amd64 new file mode 100755 index 000000000..d394a1901 --- /dev/null +++ b/src/cmd/INIT/cc.freebsd12.amd64 @@ -0,0 +1,9 @@ +: linux.i386-64 cc wrapper : 2006-02-14 : + +HOSTTYPE=freebsd12.amd64 + +case " $* " in +*" -dumpmachine "*) echo $HOSTTYPE; exit ;; +esac + +/usr/bin/cc -P "$@" diff --git a/src/cmd/std/banner.c b/src/cmd/std/banner.c index 4c14e5016..fb88cbc5f 100644 --- a/src/cmd/std/banner.c +++ b/src/cmd/std/banner.c @@ -219,7 +219,7 @@ static void banner(const char *string,const char *delim,int width) } int -main(int argc, char *argv[], void *extra) +main(int argc, char *argv[]) { register int n; register char *cp; @@ -227,7 +227,6 @@ main(int argc, char *argv[], void *extra) int width = 80; NoP(argc); - NoP(extra); error_info.id = "banner"; while (n = optget(argv, usage)) switch (n) { diff --git a/src/cmd/std/features/procfs b/src/cmd/std/features/procfs index 0119fcc74..c03719539 100644 --- a/src/cmd/std/features/procfs +++ b/src/cmd/std/features/procfs @@ -4,8 +4,15 @@ sys procfs,sysctl lib getprocs lib kvm_open,kvm_getprocs kvm.h sys/time.h sys/param.h sys/proc.h sys/sysctl.h -lkvm +typ struct.kinfo_proc kvm.h sys/time.h sys/param.h sys/proc.h sys/sysctl.h lib pstat_getproc sys/param.h sys/pstat.h +cat{ + #ifndef _typ_struct_kinfo_proc + #undef _lib_kvm_open + #endif +}end + mem extern_proc.p_pid,extern_proc.p_starttime,extern_proc.p_wchan,extern_proc.p_usrpri,extern_proc.p_addr,eproc.e_xsize sys/time.h sys/param.h sys/proc.h sys/sysctl.h -lkvm mem procsinfo64.pi_pri procinfo.h mem prpsinfo.pr_clname,prpsinfo.pr_cstime,prpsinfo.pr_cstime.tv_sec,prpsinfo.pr_ctime,prpsinfo.pr_cutime,prpsinfo.pr_gid,prpsinfo.pr_lttydev,prpsinfo.pr_ntpid,prpsinfo.pr_pgid,prpsinfo.pr_pgrp,prpsinfo.pr_psargs,prpsinfo.pr_refcount,prpsinfo.pr_rssize,prpsinfo.pr_sid,prpsinfo.pr_sonproc,prpsinfo.pr_start,prpsinfo.pr_start.tv_sec,prpsinfo.pr_starttime,prpsinfo.pr_starttime.tv_sec,prpsinfo.pr_state,prpsinfo.pr_stime,prpsinfo.pr_tgrp,prpsinfo.pr_time,prpsinfo.pr_time.tv_sec,prpsinfo.pr_utime,prpsinfo.pr_zomb,prpsinfo.pr_pctcpu,prpsinfo.pr_cpu,prpsinfo.pr_lwp.pr_pctcpu,prpsinfo.pr_lwp.pr_cpu -D_STRUCTURED_PROC -Dprpsinfo=psinfo sys/types.h sys/procfs.h diff --git a/src/lib/libast/features/sfio b/src/lib/libast/features/sfio index 901935a97..2d29706ef 100644 --- a/src/lib/libast/features/sfio +++ b/src/lib/libast/features/sfio @@ -4,6 +4,8 @@ sys filio,ioctl lib qfrexp,qldexp key signed +typ struct.sf_hdtr sys/socket.h + tst - note{ number of bits in pointer }end output{ #include int diff --git a/src/lib/libast/features/wchar b/src/lib/libast/features/wchar index ac51f0fbc..5725f96f4 100644 --- a/src/lib/libast/features/wchar +++ b/src/lib/libast/features/wchar @@ -6,6 +6,9 @@ set include . cat{ #ifndef _AST_WCHAR_H #define _AST_WCHAR_H 1 + #ifdef __FreeBSD__ + #define _STDFILE_DECLARED 1 + #endif }end lib mbstowcs,wctomb,wcrtomb,wcslen,wcstombs,wcwidth stdlib.h stdio.h wchar.h diff --git a/src/lib/libast/include/sfio.h b/src/lib/libast/include/sfio.h index 353075003..fb1f18970 100644 --- a/src/lib/libast/include/sfio.h +++ b/src/lib/libast/include/sfio.h @@ -151,6 +151,9 @@ struct _sffmt_s #define SF_WCWIDTH 0100000 /* wcwidth display stream */ #define SF_FLAGS 0177177 /* PUBLIC FLAGS PASSABLE TO SFNEW() */ +#ifdef _typ_struct_sf_hdtr +#define _SF_HIDESFFLAGS 1 +#endif #define SF_SETS 0177163 /* flags passable to sfset() */ #ifndef _SF_NO_OBSOLETE @@ -454,4 +457,8 @@ __INLINE__ ssize_t sfmaxr(ssize_t n, int s) { return __sf_maxr(n,s); } #endif /* _SFSTR_H */ +#ifdef _SF_HIDESFFLAGS +#undef SF_FLAGS +#define SF_FLAGS 0177177 /* PUBLIC FLAGS PASSABLE TO SFNEW() */ +#endif #endif /* _SFIO_H */ diff --git a/src/lib/libast/sfio/sfhdr.h b/src/lib/libast/sfio/sfhdr.h index d0c38267d..8235d4d98 100644 --- a/src/lib/libast/sfio/sfhdr.h +++ b/src/lib/libast/sfio/sfhdr.h @@ -1305,4 +1305,9 @@ extern int poll _ARG_((ulong, struct pollfd*, int)); _END_EXTERNS_ +#ifdef _SF_HIDESFFLAGS +#undef SF_FLAGS +#define SF_FLAGS 0177177 /* PUBLIC FLAGS PASSABLE TO SFNEW() */ +#endif + #endif /*_SFHDR_H*/